您好!
欢迎来到京东云开发者社区
登录
首页
博文
课程
大赛
工具
用户中心
开源
首页
博文
课程
大赛
工具
开源
更多
用户中心
开发者社区
>
博文
>
ChatGPT重磅更新,函数调用实战讲解,gpt3.5-16k模型,资费降低等
分享
打开微信扫码分享
点击前往QQ分享
点击前往微博分享
点击复制链接
ChatGPT重磅更新,函数调用实战讲解,gpt3.5-16k模型,资费降低等
jd****
2023-06-20
IP归属:北京
19480浏览
6月13日[OpenAI最新博客](https://www.thepaper.cn/newsDetail_forward_23478447 )突然发布了ChatGPT最新能力更新。重点如下: ## 一、新功能:函数调用 可以理解为将ChatGPT官网网页端的插件模式,移植到了OpenAI-API上,每个函数相当于原来ChatGPT-Plugin。第三方可以基于这套能力自行实现公司/团队内部的插件平台。 ### 如何使用函数调用 以官网的天气查询为例子[How_to_call_functions_with_chat_models](https://github.com/openai/openai-cookbook/blob/main/examples/How_to_call_functions_with_chat_models.ipynb),一步步讲解: ![image.png](https://s3.cn-north-1.jdcloud-oss.com/shendengbucket1/2023-06-14-16-326DwtTdaqLNISVeZ.png) 图片来源: twitter@ProgramerJohann #### 1、新增参数 在新API协议中新增了2个可选参数 `functions` 和 `function_call` ##### functions参数 格式为Function[],用于定义函数给到OpenAI_API,使GPT模型能够生成符合函数输入模式的输出。 >请注意,OpenAI-API实际上不会执行任何函数调用。需要开发人员在客户端使用模型输出来执行函数调用。 每个 Function 包含如下字段: + **Name:** 函数名 + **Description**: 函数功能的自然语言描述。模型将使用该描述来决定何时调用该函数 + **Parameters**: 函数参数对象的所有输入字段。这些输入可以是以下类型:字符串、数字、布尔值、对象、空值和任意类型。详细信息请参阅[API文档](https://apifox.com/apiskills/function-calling-and-other-api-updates/) + **Required**: 必须的参数,其余参数将被视为可选 ![image.png](https://s3.cn-north-1.jdcloud-oss.com/shendengbucket1/2023-06-14-14-58Of580rwbgzXEVwiJ.png) ##### function_call参数 格式为{ name: string },指定调用的函数名。默认情况下,GPT模型将参考`functions`参数中每个函数的`description` 以及输入的message来决定使用其中的一个函数。你也可以通过将`function_call`参数设置为`{"name": "<insert-function-name>"}`来强制API使用特定的函数。 #### 2、新增返回字段 如果GPT模型判断需要调用函数,或者通过function_call指定需要进行函数调用,则在返回中包含`"finish_reason":"function_call"`(没有触发函数调用逻辑的话,此处返回finish_reason=stop),以及一个新增的`function_call`的对象,其中包括函数名称和生成的函数参数: ##### function_call返回 格式为{ name: 函数名, arguments: { ...定义的参数 }},告知客户端需要调用的函数以及入参 ![image.png](https://s3.cn-north-1.jdcloud-oss.com/shendengbucket1/2023-06-14-15-166sht39h54dZyZthY.png) #### 3、实现函数调用 在得到函数名和函数调用所需参数后,我们需要在客户端(ChatGPT代理网关、VSCode插件等都可以认为是GPT的客户端)实现函数调用 ![image.png](https://s3.cn-north-1.jdcloud-oss.com/shendengbucket1/2023-06-14-15-273jy0dy8Ger0oGhG.png) #### 4、将结果追加到会话中,继续调用GPT得到最终结果 在得到天气的结果“晴 温度25~32摄氏度”后,需要将这个结果拼接到会话中,再次调用OpenAI-API得到最终的穿衣服知道建议 ![image.png](https://s3.cn-north-1.jdcloud-oss.com/shendengbucket1/2023-06-14-15-26aF9M9nRi3DtviDg.png) *** ## 二、新模型 实现函数调用的gpt3.5和gpt4-8k、gpt4-32k,分别进行了升级: + gpt-3.5-turbo 新增 **gpt-3.5-turbo-0613** 版本,支持函数调用,上下文还是4k + 新增全新的 **gpt-3.5-turbo-16k-0613** 版本,除了支持函数调用外,上下文从4k提升至16k + gp-t4-8k 新增 **gpt-4-0613** 版本,支持函数调用,上下文还是8k + gpt-4-32k 新增 **gpt-4-32k-0613** 版本,支持函数调用,上下文还是32k 更新后,gpt-3.5-turbo-16k对所有用户开发。而拥有GPT4权限的账号,默认新增对应版本的GPT4模型权限,不用另外申请。并且在博客中提到,将在不久对所有账号开放所有GPT4模型。 更新后,gpt-3.5-turbo-16k支持16k的上下文,主要还是因为`函数调用功能需要更长的上下文`。其它场景也可以获益,16k可以支持20页文本了~ ### 频限 参考下图,旧模型频限不变,新模型统一RPM3000,TPM250000,同样可以写申请扩容。 > 这次更新后,我的老 gpt-4-32k 模型权限似乎被删掉了,同样的也没有 gpt-4-32k-0613 模型,原因未知😭 ![image.png](https://s3.cn-north-1.jdcloud-oss.com/shendengbucket1/2023-06-14-15-34ylMizLh8xsLDeLM.png) ### 价格 **GPT3.5模型**:老gpt-3.5-turbo模型价格降低25%,新 **gpt-3.5-turbo-16k**模型价格是老模型2倍,总体来讲可接受。 **GPT4模型**:新老gpt-4的价格都不变🙅🏻♀️,依然是3.5的15-60倍左右. 已更新到我们的[OpenAI-各模型定价](https://joyspace.jd.com/sheets/t4L2WdBJPAQdFuoDIoTU)文档中 ## 三、社区反应 ### 1、langchain支持函数调用 在OpenAI官推发布更新的10分钟之内,Langchain立马宣布“已经在做兼容工作了”。特别强烈的求生欲,functionCalling这套的发布后,langchain里将近30%的代码可以删掉,直接用functionCalling模型,稳定性和标准型都大大提升 并且不到一个小时就发布了新版本,支持官方新功能之外,还可以把开发者已经写好的tools转换成OpenAI的functions。 ![image.png](https://s3.cn-north-1.jdcloud-oss.com/shendengbucket1/2023-06-14-16-01hu14k7TfVbkm8bdb.png) [https://twitter.com/hwchase17/status/1668682373767020545](https://twitter.com/hwchase17/status/1668682373767020545) ### 2、dify支持新模型 functionCalling这套最合适的场景是流程编排,像flowise、dify、影刀这些做LLMOPs的公司团队应该已经在接了~~ 😄 关于LLMOPs,之前简单收集了业界一些实践,供参考:[AI逻辑编排 LLMOPs](https://de-daily.notion.site/AI-LLMOPs-e77d4520464642dcb52d875800631de7?pvs=4) ![image.png](https://s3.cn-north-1.jdcloud-oss.com/shendengbucket1/2023-06-14-16-016T8HXcaO14EBOLbG.png) ## 四、函数调用踩坑总结 在实际接入过程中我们也遇到一些问题,记录如下: 1. functions参数是要算tokens的,因为OpenAI的处理是把它拼接在systemMessage之后 2. 函数调用偶尔会出现幻觉:返回不存在的函数名 3. 函数调用返回的arguments并不能保证是标准的json(直接返回GPT输出,OpenAI不会帮忙校验是否标准JSON),客户端需要自己做容错处理 ### 1、tokens计算规则 #### 计算返回tokens规则(已确定) 加入functionCall能力后,返回的content是None,新的返回格式计算tokens规则为: 将 function_call 中 name 和arguments 的值,拼接后当做原来的content来计算tokens长度 ![image.png](https://s3.cn-north-1.jdcloud-oss.com/shendengbucket1/2023-06-15-21-10nJY8FHLssgKUxoP.png) #### 计算提示词tokens规则(待定) functions的参数会被拼接在systemMessage里处理,所以也是会计算token的。并且它会将functions里的关键信息解析出来,拼接成完成的字符串,以上面定义`format`参数为例: ``` # 原始json结构 "format":{"type":"string","enum":["celsius","fahrenheit"],"description":"The temperature unit to use. Infer this from the users location."} # 提取关键信息后拼接的字符串 format,celsius,fahrenheit,The temperature unit to use. Infer this from the users location. ``` 最终追加到systemMessage的内容,除了functions解析出来的文本,还有固定的提示词 ``` [引导GPT识别处理函数的提示词,固定token长度,约24tokens] [functions解析的文本,字符串拼接后计算,不定tokens] ``` 详细的计算方法,OpenAI没有公开,社区目前也没有研究出来,目前只能以这种方式大概预估😁 ### 2、函数调用required并不符合预期? 我们也尝试了OpenAI官方的CookBook指引: [How_to_call_functions_with_chat_models](https://github.com/openai/openai-cookbook/blob/main/examples/How_to_call_functions_with_chat_models.ipynb)。在设置location参数`required`后,似乎并没有返回content引导用户补充location信息,而是直接返回`function-call`,location参数确实有,只不过是参考Function中描述的例子,直接返回只是参数必定返回了原因未知 ![image.png](https://s3.cn-north-1.jdcloud-oss.com/shendengbucket1/2023-06-14-15-54ki9rRokttyaOGwd.png) 在官方案例中会返回content: ![image.png](https://s3.cn-north-1.jdcloud-oss.com/shendengbucket1/2023-06-14-15-55TaWleIOJhRHrs0N.png) ### 3、偶尔出现“幻觉”,返回不存在的函数名 在例子中我们定义了一个非常宽泛的函数“Get”,GPT就出现了幻觉,返回的函数名是“python” ![image.png](https://s3.cn-north-1.jdcloud-oss.com/shendengbucket1/2023-06-15-23-18SdXXAVbcCb9ehG7.png)
上一篇:从2PC和容错共识算法讨论zookeeper中的Create请求
下一篇:从0到1构造自定义限流组件
jd****
文章数
3
阅读量
1130
作者其他文章
01
ChatGPT重磅更新,函数调用实战讲解,gpt3.5-16k模型,资费降低等
6月13日OpenAI最新博客突然发布了ChatGPT最新能力更新。重点如下:一、新功能:函数调用可以理解为将ChatGPT官网网页端的插件模式,移植到了OpenAI-API上,每个函数相当于原来ChatGPT-Plugin。第三方可以基于这套能力自行实现公司/团队内部的插件平台。如何使用函数调用以官网的天气查询为例子How_to_call_functions_with_chat_models,一
01
ChatGPT的原理与前端领域实践
一、ChatGPT 简介ChatGPT的火爆ChatGPT作为一个web应用,自22年12月发布,仅仅不到3个月的时间,月活用户就累积到1亿。在此之前,最快记录的保持着TikTok也需要9个月才打到月活1亿(PS:temu的月活目前还在千万级)ChatGPT的反爬https://chat.openai.com 因为各种政策&倾向性问题,ChatGPT目前在中国无法访问。而它又是如此火爆,所以就有大
01
ChatGPT七月小改款,支持个性化指令,HiBox插件同步更新支持!
一、ChatGPT-0720更新又在深夜,正要打开ChatGPT官网测试下pdf对话功能,发现ChatGPT又有更新。本次更新总结有2点:对于Plus用户,GPT-4的使用限额从25条/3h提升至50条(整整提升1倍~ $20的订阅费又更超值了)新增 Custom instructions (个性化指令),简单可以理解为个人角色和期望回答定义Why instructions?Custom inst
jd****
文章数
3
阅读量
1130
作者其他文章
01
ChatGPT的原理与前端领域实践
01
ChatGPT七月小改款,支持个性化指令,HiBox插件同步更新支持!
添加企业微信
获取1V1专业服务
扫码关注
京东云开发者公众号