1、前言
大致有两个月没有更新什么文章了,一方面在研究一点其他东西,另一方面在跟朋友一同合作一个有想法的小项目,现在来看作用还差点意思。可是其中也学习到了十分多的知识吧。
开端的一段时间,假如你想经过ChatGPT 的API来定制化一些工作,或许要重复的调整prompt,来使ChatGPT API接口能够回来json结构化的数据。但有时分或许又会存在一些问题。 或许经过直接对回来的长字符串进行正则匹配的形式来处理,可是这种方法也是十分的糟糕,而且有一些情况下也是正则无法处理的,而且我对正则的了解仅仅限于拿来就用。
盼星星,盼月亮,OpenAI 团队总算在6月14日左右的时分,经过函数调用的方法支持了结构化的输出JSON。这样有了结构化的数据,就能够很方便的与自定义函数和事务逻辑进行整合处理。
开发者现在能够描绘函数给 gpt-4-0613 和 gpt-3.5-turbo-0613两个模型,并使模型智能地挑选输出一个包括调用这些函数的参数的 JSON 对象。这样就能够将 GPT 的功用与外部工具和 API 很丝滑的就联合起来了。
我没记错的话或许就是6月14日左右,其时发布函数调用后,我就用golang语言写了一个版别的demo吧,由于最近也在项目中运用到了函数调用,所以在此运用nodejs 来做一个记录。
2、实例
经过官网的ChatGPT 先来检查作用。
ChatGPT PLUS GPT-4回来
这儿我还是运用GPT-4 的模型回来的数据,可是在让他处理结构化的数据整个的回来确实是没什么问题的。可是回来给我的总包括一些无效的信息,不能直接运用,当然是能够经过正则匹配进行处理的。下面我用GPT-3.5再来试试看看作用。
ChatGPT GPT-3.5回来
作用上GPT-3.5的跟GPT-4的作用是相似的。
经过ChatGPT api 3.5一般接口回来的
作用上经过一般API GPT-3.5 跟运用官网 GPT-3.5 GPT-4的作用是相似的。
经过ChatGPT api 3.5 函数调用接口回来的
经过截图能够发现,我能够直接经过arguments中的参数获取到转化后的数据
movieTitle:"复仇者联盟:无限战役",
releaseDate: "2018年4月27日",
director: "安东尼罗素,乔罗素"
这样我就能够直接将这三个字段 跟我原有的体系进行对接就能够了,在ChatGPT 与其他体系的对接上方便性几乎达到了逆天的境地。
3、函数调用实现进程
platform.openai.com/docs/api-re… 能够点击ChatGPT官网进行检查接口文档进行学习运用。
platform.openai.com/docs/guides… 关于函数调用的这儿有一个官网的样例。
其实主要是下面两个参数的解析
function_call参数:
操控模型怎么呼应函数调用。“none”表示模型不调用函数,并呼应最终用户。“auto”表示模型能够在最终用户或调用函数之间进行挑选。假如经过指定functions中的{"name":\ "my_function"}
特定函数会强制模型调用该函数。“none”是不存在函数时的默认值。假如存在函数,则“auto”是默认值。
所以通常情况下,function_call参数能够彻底不进行设置,将操控权彻底交给functions。 而functions参数中最重要的就是parameters的描绘。其实也就是对ChatGPT 回来给咱们的JSON结构的描绘。
json-schema.org/understandi… 这儿能够学习到怎么去描绘JSON架构。
以下就是我上面示例的JSON架构描绘
parameters: {
type: "object",
properties: {
movieTitle: {
type: "string",
description: "Movie Title",
},
releaseDate: {
type: "string",
description: "Release Date",
},
director: {
type: "string",
description: "Director",
}
},
required: ["movieTitle", "releaseDate", "director"],
}
至于其他的运用细节能够检查我上面的链接去学习就好了。
4、demo全部代码
const configuration = new Configuration({
apiKey: process.env.OPENAIKEY,
basePath: process.env.OPENAI_BASE_URL
});
const { content } = req.body as {
content: string
}
let systemPrompt =`请帮我查找一部2018年到2020年之间 美国比较优秀的电影信息,包括电影名称、上市时间、导演,并运用中文来回复信息`
console.log(content , 'name -naem')
if(content) {
systemPrompt = content
}
const chatApi = new OpenAIApi(configuration);
const chatCompletion = await chatApi.createChatCompletion({
model: 'gpt-3.5-turbo-16k',
temperature: 0,
messages: [{ role: 'user', content: `${systemPrompt}` }],
functions: [
{
name: "write_moivesinfo_to_database",
description: "Write movies into the database.",
parameters: {
type: "object",
properties: {
movieTitle: {
type: "string",
description: "Movie Title",
},
releaseDate: {
type: "string",
description: "Release Date",
},
director: {
type: "string",
description: "Director",
}
},
required: ["movieTitle", "releaseDate", "director"],
}
}
],
});
console.log(chatCompletion.data.choices[0], 'chatCompletion')
履行成果如下图所示
再来看一个回来列表数据的
5、总结
- 就在今天,7月22日,我的PLUS限制策略官网总算调整了
- 今天一大早也看到OpenAI 官网发布了消息,很快android版的app也组织上了
ios的app大致是在2个月前发布的
- 然后就在昨日7月21日OpenAI 给PLUS用户也供给了相似设置Prompt的地方
作用还是十分棒的,希望能加一个列表功用,让我选,由于有一些是常用的设置,以前都是每次输入都找一个地方进行复制
- 再早几天,7月7日的时分,官网面向付费用户对GPT-4 API 全部敞开
- 同时,7月7日左右 code interpreter 针对Plus用户履行
怎么编写和履行python代码而且能够处理文件上传的ChatGPT版别。测验寻求数据剖析、图画转化或编辑代码文件的协助。留意:文件不会保留超过单个会话。
这仅仅是我测验的一个小功用
-
之前也发布了 联网插件,可是由于安全问题,现在现已下线了,后续或许还会上线
-
再早一点的时分总算针对 GPT-3.5和GPT-4的传输数据的巨细,又做了很大的提高
- GPT-3.5的API能够达到16K的tokens
- GPT-4.0的API能够达到32K的tokens
最近两个月的更新大致就是这样的了,自己对自己做一个总结,方便回忆一下前史。当然这儿还有一个问题也提一下,或许许多时分由于安全以及法律的限制,openai最近几个月的版别回复正确率或许显着或许许多人都有感觉质量下降,这应该不可避免吧,究竟功用越强壮,面临的利弊得失就会越多,相信openai会越来越好,也能平衡好质量的把控,当然最后还是更加等待多模态新功用的发布吧。 最近几个月百模大战也如火如荼,越来越多的公司加入了这个赛道,等待ai更高质量的开展,也等待国内大模型真实的提高作用和质量吧。