介绍
大型语言模型 (LLM) 与一般的会话 UI 一样,可以有效地以会话自然语言的形式接收高度非结构化的数据。
这些非结构化数据随后被结构化、处理并随后以自然语言输出的形式再次非结构化。
OpenAI 函数调用以 API 的形式为机器消费构建输出,与以非结构化自然语言形式的人类消费相对
函数调用
通过 API 调用,您可以向gpt-3.5-turbo-0613和提供函数gpt-4–0613,并让模型智能地生成一个包含参数的 JSON 对象,然后您可以使用这些参数在您的代码中调用该函数。
Chat Completion API 不直接调用函数;相反,它会生成一个 JSON 文档,您可以在代码中使用该文档。
在此处阅读有关 OpenAI 函数调用的更多信息。
使用 OpenAI 函数调用,重点是 JSON 输出。
下面是函数调用的实际例子:
创建通过调用外部 API 回答问题的聊天机器人:
在此示例中,编译了一封电子邮件,其中定义了几个字段,需要从自然语言输入中填充这些字段。
如果 JSON 文档定义不正确,OpenAI 模型将引发错误。因此,在定义需要填充的 JSON 结构方面存在一定程度的刚性。
pip 安装 openai导入
o s
导入openai
导入请求
导入json
openai.api_key = "xxxxxxxxxxxxxxxxxx"
url = "https://api.openai.com/v1/chat/completions"
payload = json.dumps({
"model" : "gpt -4-0613" ,
"messages" : [
{
"role" : "user" ,
"content" : "给 HumanFirst AI 的 Cobus 发一封电子邮件,请他提供销售预测电子表格。安排明天中午 12 点发送邮件。 "
}
],
"函数":[
{
“名称”: "send_email" ,
"description" : "发送电子邮件的模板。" ,
“参数”:{
“类型”:“对象”,
“属性”:{
“to_address”:{
“类型”:“字符串”,
“描述”:“电子邮件地址”
},
“正文”:{
“ type" : "string" ,
"description" : "邮件正文"
},
"
:“必须发送电子邮件的日期。”
},
"time" : {
"type" : "string" ,
"description" : "邮件必须发送的时间。"
}
} }
}
]
}
)
headers = {
'Content-Type' : 'application/json' ,
'Authorization' : 'Basic xxxxxxxxxxxx'
}
response = requests.request( "POST" , url, headers=headers, data=payload )
打印(response.text)
模型的响应:
{
“id” : “chatcmpl-7RjMh7I0rVmCJkTCk4wvHDSNg8uQQ” ,
“对象” : “chat.completion” ,
“创建” : 1686843595 ,
“模型” : “gpt-4-0613” ,
“选择” : [
{
“索引” : 0 ,
“消息” : {
“角色” : “助理” ,
“内容” : 空,
“function_call” : {
“名称” : “send_email” ,
“参数” : "{\n \"to_address\": \"Cobus@HumanFirst.ai\",\n \"body\": \"你好 Cobus,\\n\\n你能提供销售预测电子表格吗?\\n\\n最好的问候\",\n \"date\": \"tomorrow\",\n \"time\": \"12 noon\"\n}" } }
,
" finish_reason
" : " function_call"
}
] ,
"usage" : {
"prompt_tokens" : 118 ,
"completion_tokens" : 65 ,
"total_tokens" : 183
}
}
综上所述
但是,有一些注意事项:
以编程方式,聊天机器人/会话 UI 必须知道 LLM 的输出必须是 JSON 格式。因此,必须有某种分类或意图识别来检测输出类型应该是 JSON。
必须存在并定义一个预定义模板,以输入完成 LLM。如示例中所示,JSON 模板指导 LLM 如何填充值。
更重要的是,如示例中所示,必须明确定义应填充的参数。失败会导致以下错误:“We could not parse the JSON body of your request. (HINT: This likely means you aren’t using your HTTP library correctly. The OpenAI API expects a JSON payload, but what was sent was not valid JSON. If you have trouble figuring out how to fix this, please contact us through our help center at help.openai.com.)”
领取专属 10元无门槛券
私享最新 技术干货