GPT-4 和 GBT-3.5 中的函数调用就像与您的 AI 模型讨论 Python 函数一样。您向模型解释函数,提出问题,如果模型将问题识别为需要您描述的函数之一,它将为您提供使用该函数所需的参数。这个功能就像在Langchain中使用一样,但可以直接在OpenAi API中使用。这是一个强大的功能,可以使你的代码更简单、更高效。
在本文中,我将指导您如何使用ChatGPT将消息发送到Slack和Google工作表,我们将使用Slack Webhook和Google电子表格,这些方法很容易实施,似乎您可以对提供API的任何服务使用类似的方法
特别是,它从自然语言中提取必要的信息(例如,在Product_Codes,价格,客户,Client_Code,订单,总计的情况下),真是太好了。
1. 设置环境
- 您想从在本地计算机上创建 venv 开始。
首先,打开终端并创建一个虚拟环境。
Python -m venv venv
然后激活它:
venvScriptsactivate
您现在应该在终端中看到 ( Venv )。
现在,让我们安装所需的依赖项:
开放 AI == 0.27.7 , gspread == 5.10.0 , oauth2client == 4.1.3
最后,我们需要为 OpenAI API 密钥设置一个环境变量:
集合 OPENAI_API_KEY=set Spreadsheet_id =
设置 WEBHOOK_URL =
首先,函数调用是响应用户输入而发出特定的函数。
所以你必须创建一个函数。这一次,为了写入Google电子表格并写入Slack,请创建一个函数来执行这些过程。
写入电子表格的函数如下。要访问电子表格,您需要从 Google Cloud 控制台获取包含身份验证信息的 JSON 文件。如果您向 ChatGPT 询问有关该问题的程序,它将得到解决,因此请询问。
def write_expense_to_spreadsheet(Product_Codes, Price, Client, Client_Code, Orders, Total): scope = [‘https://spreadsheets.google.com/feeds’, ‘https://www.googleapis.com/auth/drive’] creds = ServiceAccountCredentials.from_json_keyfile_name(’C:UsersmrtarDocumentsGitHubChatGPMetest.json’, scope) gspread_client = GSpreadClient(creds) spreadsheet_id = “1AUhV89IlTFXr6nkrD3gFFFz_6JBOSDHeICxxwpe-O9E” sheet = gspread_client.open_by_key(spreadsheet_id).sheet1
sheet.append_row([Product_Codes、价格、客户、Client_Code、订单、总计])
接下来,我们将创建一个函数来发布到 Slack。这一次,我选择使用 Webhook,因为它简化了流程。但是其他发布方法没有问题。如果您向 ChatGPT 询问如何使用它的详细信息,它将被解决,因此请询问(省略)
WEBHOOK_URL = “https://hooks.slack.com/services/T05FQ3RJB1N/B05F0EDLFGA/b6qI…”def post_message_to_slack_via_webhook(message): payload = {‘text’: message} response = requests.post( WEBHOOK_URL, data=json.dumps(payload), headers={‘Content-Type’: ‘application/json’} ) if response.ok: print(’Message sent success ‘) else:
打印(’无法发送消息。错误:’,响应文本)
到目前为止,我们已经制作了一个函数来做我们想做的事。接下来,我们将处理在 GPT 模型中使用此函数的部分。
填妥的表格如下。
def run_conversation(): user_input=input(“user_input:”) try: response = OpenAI.ChatCompletion.create( model=“gpt-3.5-turbo-0613”, messages=[ {“role”: “system”, “content”: “你是有史以来最好的助手!”}, {“角色”: “用户”, “内容”: user_input}], functions=[ { “名称”: “write_expense_to_spreadsheet”, “描述”: “将费用信息写入电子表格”, “参数”: { “类型”: “对象”, “属性”: { “产品代码”: {“类型”: “数字”}, “价格”: {“类型”: “数字”}, “客户端”: {“类型”: “数字”}, “客户端代码”: {“类型”: “字符串”}, “订单” : {“类型”: “数字”}, “总计” : {“类型”: “数字”}, }, “必需”: [“产品代码”, “价格”, “客户端”, “客户端代码”, “订单”, “总计”], }, }, { “名称”: “post_message_to_slack_via_webhook”, “描述”: “向 Slack 发布消息”, “参数”: { “类型”: “对象”, “属性”: { “消息”: {“类型”: “字符串”}, }, “必需”: [“消息”], }, } ], function_call=“自动”, ) 消息 = 响应“选择”[“消息”] 除了异常作为错误: 打印(’此处文本:’,错误) 如果 message.get(“function_call”): function_name =message“function_call” arguments = json.loads(message“function_call”) # print(arguments) print(message“function_call”) 如果function_name == “write_expense_to_spreadsheet”: function_response = write_expense_to_spreadsheet( Product_Codes=arguments.get(“Product Codes”), Price=arguments.get(“Price”), Client=arguments.get(“Client”), Client_Code=arguments.get(“Client Code”), Orders=arguments.get(“Orders”), Total=arguments.get(“Total”)) elif function_name == “post_message_to_slack_via_webhook”: function_response = post_message_to_slack_via_webhook( message=arguments.get(“message”), ) else: raise NotImplementError() second_response = openai.ChatCompletion.create( model=“gpt-3.5-turbo-0613”, # 获取用户输入消息=[ {“角色”: “用户”, “内容”: user_input}, 消息, { “角色”: “函数”, “名称”: function_name, “内容”: str(function_response), }, ], ) 返回 second_response 否则: 返回响应
print(“response:”, run_conversation()“choices”“message”, “nn”)
以下是简要说明。首先,这次我们将接收用户的输入,以便根据用户的输入对功能进行梳理。
user_input=输入(“user_input:”)
然后,它将用户的输入传递给 GPT API。使用openai。ChatCompletion.create ,您需要指定模型和消息。
model=“gpt-3.5-turbo-0613”,messages=[ {“角色”: “系统”, “内容”: “你是有史以来最好的助手!”},
{“角色”: “用户”, “内容”: user_input}],
声明模型和消息就像我们使用 GPT API 一样。这一次,我将系统消息设置为“你是有史以来最好的助手!
这样做是因为它似乎会使过程更加精确。
下面是我们使用此函数调用添加的函数的新部分。
functions=[ { “名称”: “write_expense_to_spreadsheet”, “描述”: “将信息写入电子表格.”, “参数”: { “类型”: “对象”, “属性”: { “产品代码”: {“类型”: “数字”}, “价格”: {“类型”: “数字”}, “客户端”: {“类型”: “数字”}, “客户端代码”: {“类型”: “字符串”}, “订单” : {“类型”: “数字”}, “总计” : {“类型”: “数字”}, }, “必填”: [“产品代码”, “价格”, “客户”, “客户代码”, “订单”, “总计”], }, }, { “名称”: “post_message_to_slack_via_webhook”, “description”: “将消息发布到 Slack”, “参数”: { “类型”: “对象”, “属性”: { “消息”: {“类型”: “字符串”}, }, “必需”: [“消息”], }, }
],
“名称”是你对函数的称呼,“描述”是对函数功能的简要说明。GPT 使用此描述根据用户所说的内容决定使用哪个函数。
在参数部分中,指定要从用户输入的文本中提取的信息(例如Product_Codes,价格,客户,Client_Code,订单,总计)。
通过以这种方式指定它,它从用户输入的文本中提取必要的信息。步骤 2 之后的内容与官方文档几乎相同,但要执行的处理是根据函数名称划分的。Second_response 如果未调用该函数,则将执行内容。在上述示例中,除了输入费用和发布到 Slack 之外,还将执行它。
让我们尝试一下
第一个查询:您能否将产品代码 = 5642foun 和价格 = 29$ 和客户端 = Tarik 添加到 Google 工作表
结论:
我觉得使用语音和句子等自然语言作为调用函数的工具确实扩展了我们的可能性。我想检查的事情还有很多,但现在,我将在这里结束我们的讨论
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
相关推荐: 亚马逊云科技与德勤中国推出新工具,有效缓解生成式AI时代下的安全问题
随着人工智能技术的飞速发展,生成式AI应用越发广泛,在各领域迎来了新的机遇,但同时也在安全层面给企业带来了新的挑战。网络、数据泄露、隐私侵犯等安全威胁,以及法律法规的不断更新,使跨区域运营过程中的网络安全和合规成为企业持续发展不可或缺的一环。 亚马逊云科技与全…