引言
我是ai小火箭的hb,我探索和写作人工智能和语言交叉点的所有事物,范围从llm,聊天机器人,语音机器人,开发框架,以数据为中心的潜在空间等。
范例

初步体验
openai新增了“函数调用”功能,这是什么呢?
我们先调用api来体验下。
下面是发送到模型的 json 文档。此调用的目的是生成一个 json 文件,该文件可用于发送到发送电子邮件的 api。
您可以看到函数名称为 send_email,并定义了三个参数, to_address , subject 和 body ,即电子邮件正文。
用户请求为:send cobus from humanfirst ai an email asking for the monthly report?
curl --location 'https://api.openai.com/v1/chat/completions' \
--header 'content-type: application/json' \
--header 'authorization: bearer sk-xxxx' \
--data '{
"model": "gpt-3.5-turbo-0613",
"messages": [
{"role": "user", "content": "send cobus from humanfirst ai an email asking for the monthly report?"}
],
"functions": [
{
"name": "send_email",
"description": "please send an email.",
"parameters": {
"type": "object",
"properties": {
"to_address": {
"type": "string",
"description": "to address for email"
},
"subject": {
"type": "string",
"description": "subject of the email"
},
"body": {
"type": "string",
"description": "body of the email"
}
}
}
}
]
}'下面是返回的 json
{
"id": "chatcmpl-7tquwzjpqay470saqm2rpfxwf6dde",
"object": "chat.completion",
"created": 1687249338,
"model": "gpt-3.5-turbo-0613",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": null,
"function_call": {
"name": "send_email",
"arguments": "{\n \"to_address\": \"cobus@humanfirst.ai\",\n \"subject\": \"request for monthly report\",\n \"body\": \"hi cobus,\\n\\ni hope you're doing well. could you please share the monthly report with me? it would be great to have it before the end of the week.\\n\\nthanks,\\n[your name]\"\n}"
}
},
"finish_reason": "function_call"
}
],
"usage": {
"prompt_tokens": 86,
"completion_tokens": 82,
"total_tokens": 168
}
}gpt模型会返回需要调用的函数名 send_email和对应的参数(放在arguments字段)。
{
"to_address": "cobus@humanfirst.ai",
"subject": "request for monthly report",
"body": "hi cobus,\n\ni hope you're doing well. could you please share the monthly report with me? it would be great to have it before the end of the week.\n\nthanks,\n[your name]"
}这就非常有用,第三方的应用可以提供多个函数/服务(类似插件),gpt模型可以根据用户的指令自动选择不同的函数/服务。
现在再来看示例,就比较清晰了。

用途
根据官网文档,函数调用允许您更可靠地从模型中获取结构化数据。例如,您可以:
创建聊天机器人,通过调用外部 api 来回答问题(例如 chatgpt 插件)
例如,定义像 send_email(to: string, body: string) 或 get_current_weather(location: string, unit: 'celsius' | 'fahrenheit') 这样的函数
将自然语言转换为 api 调用
例如,将“谁是我的顶级客户?”转换为 get_customers(min_revenue: int, created_before: string, limit: int) 并调用您的内部 api
从文本中提取结构化数据
例如,定义一个名为 extract_data(name: string, birthday: string) 或 sql_query(query: string) 的函数
函数调用的基本步骤顺序如下:
使用用户查询和函数参数中定义的一组函数调用模型。
模型可以选择调用函数;如果是这样,内容将是符合自定义架构的字符串化 json 对象(注意:模型可能会生成无效的 json 或幻觉参数)。
在代码中将字符串解析为 json,并使用提供的参数调用函数(如果存在)。
通过将函数响应追加为新消息来再次调用模型,并让模型将结果汇总回给用户。
ai小火箭已经支持函数调用和gpt-3.5-turbo-16k、gpt-3.5-turbo-0613、gpt-3.5-turbo-16k-0613,大家可以去体验下。
以上就是openai 函数调用示例及功能入门教程的详细内容,更多关于openai 函数调用的资料请关注代码网其它相关文章!
发表评论