首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

OpenAI函数调用实例

介绍

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

导入o​​penai

导入请求

导入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.)”

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20230617A02Y9500?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

相关快讯

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券