⛱️OpenAI API进阶-Function Calling实现插件!
00 分钟
2023-10-26
2023-11-3
type
status
date
slug
summary
tags
category
icon
password

Function Calling介绍

Function Calling是什么

OpenAI Chat API官方文档:Chat API
Function Calling官方介绍:Function Calling
notion image
 
开发者现在可以向 gpt-4-0613gpt-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 参数 functionsfunction_call 得以实现,开发者可以通过 JSON Schema 描述函数,并可选择要求模型调用特定函数。
 
一句户解释就是:我们可以把自己的函数集成到GPT里了
 

Function Calling解决什么问题

Function Calling本质上就是插件!
插件功能相当于给OpenAI增加了一个武器库,开发者可以随意给它安装武器提升它的能力。

数据实时性问题

notion image
问他langchain是什么?由于训练集是截止2021年的,他会回答不知道。但是有了Function Callling,我们就可以写一个函数集成谷歌/百度搜索API,给GPT加上联网能力,这样就借助搜索引擎的能力支持了数据的动态更新。

跟已有系统集成问题

notion image
问他今天天气如何?由于ChatGPT数据集是离线的,无法满足获取实时天气的需求。但是有了Function Calling,我们可以编写一个函数来调用天气获取的API,从而获取实时天气信息,然后再与大模型的对话能力进行自然语言交互。

Function Calling如何使用

使用介绍

与普通chat对话的区别是增加了两个额外参数
  • functions: 声明自定义函数库
  • funcion_call: 控制大模型什么时机使用通Function Calling功能
notion image
普通代码:
Function calling:

实时天气查询实践

整体要经过两次的OpenAI Chat接口调用。

调用流程

1.定义函数
定义本地函数get_current_weather实现从API拉取,这里直接写一个简单对参数输出进行模拟。
然后按照OpenAI的文档要求格式定义get_current_weather的接口函数的json参数。
2.第一次调用接口
返回大模型分析出的函数名称参数。
结果如下:
3.调用本地函数
获取返回值,进行本地python方法调用
4.第二次调用接口
将第一次接口的返回值message与本地函数调用的接口拼装起来,然后再次调用接口。
结果如下:

代码实现

完整代码链接:Fuction Calling 示例
上面的代码中的key是我自己维护的,免费给大家使用,代码可以直接运行!

联系我

AIGC交流群
notion image
微信:
notion image

评论
  • Utterance