介绍

大型语言模型 (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
}
}

综上所述

但是,有一些注意事项:

  1. 以编程方式,聊天机器人/会话 UI 必须知道 LLM 的输出必须是 JSON 格式。因此,必须有某种分类或意图识别来检测输出类型应该是 JSON。

  2. 必须存在并定义一个预定义模板,以输入完成 LLM。如示例中所示,JSON 模板指导 LLM 如何填充值。

  3. 更重要的是,如示例中所示,必须明确定义应填充的参数。失败会导致以下错误:“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.)”

举报/反馈

AITalker

1441获赞 330粉丝
编码、ChatGPT、 AI 工具和 Web 开发的推文
关注
0
0
收藏
分享