OpenAI推出的函数调用(function calling)功能

OpenAI推出的函数调用(function calling)功能其实是一个巨大的创新。它面向开发者,技术性强,但所有从业者都应理解。

下面我们深入浅出地解释它的原理和能力。

从本质上讲,对于LLM的开发者,这就像是为ChatGPT加上了插件。这让工程师为大脑加上了手脚,增加了它可以做的事情。

后面有具体例子:

图片[1]-OpenAI推出的函数调用(function calling)功能-学点AIweb3中心

基本流程如下,形成一个循环:

1️⃣开发者🇺给LL发🅿️指令并提供工具列表(function)。

2️⃣LLM返回如何执行🇹工具和对应的参数。

3️⃣🇺根据LLM返回的🇹工具和参数,在本地执行🇹工具,获取执行结果。

4️⃣利用这个结果重新组织🅿️指令,告知LLM这次的执行结果,再决定下次应该怎么执行和参数是什么 不断循环。

图片[13]-OpenAI推出的函数调用(function calling)功能-学点AIweb3中心

以“为本公司客户数量最多的城市预约一个可容纳1万人的大会议厅”(简称命令🅿️)为例,要完成这个任务,除了LLM,还需要三个工具:
🇹1️⃣:本公司的客户数据库
🇹2️⃣:搜索引擎,找到合适的会议厅
🇹3️⃣:预约会议厅的接口 接下来,我们看看开发者(简称🇺
如何配合LLM自动完成上述任务:
1️⃣第一步 🇺将命令🅿️告诉LLM,并通知LLM可以使用三个工具(🇹1-🇹3)。 LLM收到命令后,开始思考🅿️。首先,它需要解决的第一个问题是“本公司客户数量最多的城市是哪个”(简称🇶1)。然后,它发现🇹1中有客户数据库。接着,它根据数据库的模式,编写一段SQL查询语句,然后返回给🇺,让🇺执行这个查询。
2️⃣第二步: 🇺执行这个查询,获得结果,比如“深圳”。 然后,🇺用命令🅿️再次调用LLM,除了告诉LLM有三个工具🇹,还需要告诉LLM: 1. 🇺根据LLM的建议使用了🇹1和SQL 2. 使用🇹1和SQL的查询结果是“深圳” 这就是命令🅿️2。
3️⃣第三步: LLM收到命令🅿️2,它还是思考第一个问题🇶1。然后它发现🇹1 + SQL的结果已经得出,是深圳。 然后,它开始考虑第二个问题,“深圳有哪些可以容纳1万人的大会议厅”(🇶2)。这时,它发现了🇹2可以用来搜索。然后它返回给用户🇺,请用“深圳一个1万人的大会议厅”进行搜索。
4️⃣第四步: 🇺根据LLM的提示使用🇹2搜索“深圳1万人的大会议厅”,并获得结果。然后,🇺再次调用LLM,使用🅿️,并告诉LLM: 1. 🇹1+SQL “本公司客户最多的城市是深圳”,结果是“深圳” 2. 🇹2+查询“深圳一个1万人的大会议厅”,结果是“南山希尔顿” 这就是命令🅿️3。
5️⃣第五步: LLM收到命令🅿️3,它再次考虑第一个问题🇶1和第二个问题🇶2,并发现已经有了结果。 然后它思考第三个问题,“如何预约南山希尔顿大会议厅”(🇶3),然后发现🇹3(预约会议厅的接口)可以使用,它返回给🇺,建议使用🇹3预约南山希尔顿大会议厅。
6️⃣第六步 🇺根据LLM的建议,使用🇹3预约了“南山希尔顿1万人的大会议厅”,并获得了预约结果。然后,🇺再次调用LLM,使用🅿️,并告诉LLM更多信息: 1. 🇹1+SQL “本公司客户最多的城市是深圳”,结果是“深圳” 2. 🇹2+查询“深圳1万人的大会议厅”,结果是“南山希尔顿” 3. 🇹3+预约,预约结果 这就是命令🅿️4
7️⃣第七步: LLM收到命令🅿️4,它再次思考第一个问题🇶1,第二个问题🇶2和第三个问题🇶3,发现所有问题都已经得到了解决。 于是,LLM返回一段正常的总结文本给🇺,告诉它:“您公司客户最多的城市是深圳,深圳的南山希尔顿有一个可以容纳1万人的会议厅,已经为您预约了”。
这样,对于用户来说,一句话就解决了这么复杂的问题。而且我们可以看到,随着过程的进行,命令的长度越来越长。这就是为什么OpenAI发布了能处理16K上下文的模型,让这样的复杂问题得以解决。
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容