type
status
date
slug
summary
tags
category
icon
password
Function Calling介绍
Function Calling是什么
OpenAI Chat API官方文档:Chat API
Function Calling官方介绍:Function Calling
开发者现在可以向
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功能
普通代码:
Function calling:
实时天气查询实践
整体要经过两次的OpenAI Chat接口调用。
调用流程
1.定义函数
定义本地函数
get_current_weather
实现从API拉取,这里直接写一个简单对参数输出进行模拟。然后按照OpenAI的文档要求格式定义
get_current_weather
的接口函数的json参数。2.第一次调用接口
返回大模型分析出的函数名称和参数。
结果如下:
3.调用本地函数
获取返回值,进行本地python方法调用
4.第二次调用接口
将第一次接口的返回值message与本地函数调用的接口拼装起来,然后再次调用接口。
结果如下:
代码实现
完整代码链接:Fuction Calling 示例
上面的代码中的key是我自己维护的,免费给大家使用,代码可以直接运行!
联系我
AIGC交流群:
微信:
- 作者:鹤涵
- 链接:https://www.hehanwang.com/article/openai-function-calling
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。