Function Calling介绍
Function Calling是什么
OpenAI Chat API官方文档:Chat API[1]
Function Calling官方介绍:Function Calling[2]
图片
开发者现在可以向 gpt-4-0613 和 gpt-3.5-turbo-0613 描述函数,并让模型智能地选择输出一个包含调用这些函数参数的 JSON 对象。这是一种更可靠地将 GPT 的功能与外部工具和 API 相连接的新方法。
这些模型经过了微调,既可以检测到何时需要调用函数(根据用户的输入),又可以回复符合函数签名的 JSON。函数调用使开发者能够更可靠地从模型中获得结构化数据。例如,开发者可以:
- 利用外部工具调用的聊天机器人(如 ChatGPT 插件)来回答问题
将查询如“Email Anya看看她下周五是否想喝咖啡”转换为像 send_email(to: string, body: string) 这样的函数调用,或者将“波士顿的天气如何?”转换为 get_current_weather(location: string, unit: 'celsius' | 'fahrenheit')。
- 将自然语言转换为 API 调用或数据库查询
将“这个月我的前十位客户是谁?”转换为内部 API 调用,如 get_customers_by_revenue(start_date: string, end_date: string, limit: int),或者将“Acme 公司上个月下了多少订单?”转换为使用 sql_query(query: string) 的 SQL 查询。
- 从文本中提取结构化数据
定义一个名为 extract_people_data(people: [{name: string, birthday: string, location: string}]) 的函数,以提取在维基百科文章中提到的所有人物。
这些用例通过我们的 /v1/chat/completions 端点中的新 API 参数 functions 和 function_call 得以实现,开发者可以通过 JSON Schema 描述函数,并可选择要求模型调用特定函数。
一句户解释就是:我们可以把自己的函数集成到GPT里了
Function Calling解决什么问题
Function Calling本质上就是插件!
插件功能相当于给OpenAI增加了一个武器库,开发者可以随意给它安装武器提升它的能力。
数据实时性问题
图片
问他langchain是什么?由于训练集是截止2021年的,他会回答不知道。但是有了Function Callling,我们就可以写一个函数集成谷歌/百度搜索API,给GPT加上联网能力,这样就借助搜索引擎的能力支持了数据的动态更新。
跟已有系统集成问题
图片
问他今天天气如何?由于ChatGPT数据集是离线的,无法满足获取实时天气的需求。但是有了Function Calling,我们可以编写一个函数来调用天气获取的API,从而获取实时天气信息,然后再与大模型的对话能力进行自然语言交互。
Function Calling如何使用
使用介绍
与普通chat对话的区别是增加了两个额外参数
- functions: 声明自定义函数库
- funcion_call: 控制大模型什么时机使用通Function Calling功能
图片
普通代码:
completion = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=messages
)
分享说明:转发分享请注明出处。