解析GPTs、Assistant API和Function Calling——AI大模型如何连接外部世界?

学习一下如何让AI大模型连接外部世界。

一、为什么要让大模型连接外部世界?

我们在上文中已经列举了大模型的局限性:没有实时性、无法获取私有知识等。

在此基础上,我们可以把大模型的局限性细化成以下几条:

  • 大模型获取不到实时信息,完全不清楚所谓的新闻热点,这一点很不像人类。
  • 大模型掌握的知识是有限的,遇到不懂的问题,就会开始胡编乱造,令人头痛。
  • 大模型还没掌握足够的推理能力(至少目前还不够),在处理较为复杂的问题时,准确性是存疑的,比如解决复杂的数学问题等。
  • 大模型无法获取企业的私有文档(RAG可以一定程度上解决该问题)。
  • 大模型无法获取外部系统数据库中的业务数据,比如地图相关信息、张三在某平台的消费记录等。

我们会发现,不管大模型再怎么训练,这些局限性依然会存在,并不会随着大模型的继续训练而解决。

把大模型当人看的话,再聪明的人也不可能实时接收消化新知识、不可能拿到所有的私有数据、也就不可能独自解决所有的问题,那么怎么才能让大模型变得可靠又强大呢?

答案就是:找可靠的人一起协作,解决各种复杂问题

大模型将复杂任务拆解成一个个子任务,遇到搞不定的子任务(或者有更可靠的小伙伴)时,就把问题抛给更专业的小伙伴,小伙伴把处理结果反馈给大模型,最终所有子任务都得到了更好的解决,大模型再根据子任务的处理结果,生成更加可靠的答案。

比如,大模型接收到一个任务“明天中午的天气怎么样?如果天气好的话,想去国贸附近的麻六记吃饭,不知道人多不多”,首先把任务拆解为如下子任务:

  1. 查询明天中午的天气。
  2. 需要查询国贸的位置。
  3. 再查询国贸附近麻六记的具体位置,确认该饭店是否存在。
  4. 查询麻六记的商家信息,方便打电话询问或预约。

大模型看了看自己团队里的人(接口),开始分配任务:

  1. 任务1交给天气接口,得到详细的天气信息。
  2. 任务2交给地图接口,得到国贸的位置。
  3. 再拿着任务2的结果继续让地图接口完成任务3,找到国贸附近的麻六记。
  4. 最后再调用大众点评接口完成任务4,查询麻六记的商家信息。

一切搞定,交作业:“明天中午是个大晴天,这么好的天气当然要出去耍啦。国贸附近的麻六记具体位置在xxxx,评分4.8分,一定非常美味,商家电话xxxx,您可以联系商家预约位置。

是不是靠谱多了?这个协作的模式其实就有些智能体Agent的意思了,我们下篇文章再细说Agent。

总之,连接外部世界后的大模型,可以扩展各种需要的能力,比较靠谱的完成各种复杂任务,也让大模型和系统可以更好的集成,增强确定性。

接下来,我们来介绍一下GPT连接外部世界的三种方式。

二、GPTs:自定义版本的ChatGPT

GPTs是一个自定义版本的ChatGPT,允许用户直接在界面上调整ChatGPT的功能以适应特定任务或者指令。

除了基本的GPT配置之外,GPTs还提供了三种能力:

  1. 可以直接上传私有知识库文档,自动实现RAG。
  2. 内置了几个通用能力(capability):允许网络浏览(遇到不懂的问题会自动搜索之后再生成内容)、允许使用DALL-E生成图片(比如可以让它根据输入生成一张图片)、代码解释器(可以使用python的大部分功能)。
  3. 通过配置Actions来执行外部的动作,actions本质上就是一些我们可以执行的工具,类似于function calling,可以通过接口定义去调用其他应用的能力,这就相当于打通了GPT和其他应用的桥梁,可以互相协作,只需要配置接口定义信息即可。

看起来,GPTs既强大又方便,但是它却又很多的限制:

  • 只有ChatGPT Plus用户才能访问。
  • 界面不可定制,不能集成进自己的产品。
  • RAG功能,最多只能传10个文件。

也就是说,GPTs相当于自己用提示词和Actions扩展出一个定制功能的ChatGPT,但始终还是个ChatGPT。

GPTs虽然无法集成到自己的系统中,但比较适合作为功能演示的demo,和用户解释清楚系统的能力边界。

三、Assistant API:将GPT集成到系统中的开发者接口

OpenAI的Assistant API是一个允许开发者在应用中集成GPT功能的接口。

简单来说,GPTs是界面化的操作,Assistant API则是针对开发者提供的接口。

目前,Asssistant API支持三种工具:文件RAG、代码解释器和Function Calling。

Asssistant API有如下特点:

  • 可以把GPT的功能集成到自己的系统中。
  • 可以传比GPTs更多的文件。
  • 国内无法访问,只能服务国外用户(国产大模型或开源大模型也会陆续开放自己的Assistant API)。
  • 数据保密需求不高时才适合使用。
  • 收费,不便宜。

如果想扩展chatgpt的能力,让它可以指挥其他的软件去工作,那么就选择GPTs。

如果想让自己的软件获得ChatGPT的能力,得到AI加持,那么就适合Assistant API。

四、Function Calling机制:AI大模型连接外部世界的通道

Function Calling指的是在模型中集成外部功能或API的调用能力,可以看作是大模型连接外部世界的通道。

这意味着大模型可以在完成任务的过程中,调用外部函数或服务,以获取额外的数据或执行特定的任务。

例如,大模型可以调用天气API来获取最新的天气信息,或者调用翻译服务来提供多语言支持。通过这种方式,大模型可以更加灵活地与外部系统进行交互,实现更丰富的功能和更高的实用性。

Function Calling通常涉及到插件(Plugins)、OpenAI的Actions或各大模型平台提供的工具集(tools)等技术的使用。这些工具和技术可以帮助开发者更方便地实现Function Calling,提高模型的扩展性和可用性。

相比GPTs和Assistant API,Function Calling的核心优势:

  • 可以让大模型与其它业务系统的集成更加灵活和方便。
  • 可以针对业务需求做极致调优。

Function Calling的限制:

  • 目前只有部分大模型支持Function Calling,但一定会陆续开放,没有Function Calling的大模型无法和其他系统连接,几乎没有可用性。
  • 接口定义会消耗额外的token,费钱。
  • 即便使用了Function Calling,仍然要注意结果永远不是永远正确的,产品经理需要建立在这个假设基础上,去推敲功能的可行性。
  • 需要评估Bad Case的影响范围,并做好系统兼容和用户预期管理。

Function Calling机制的重要意义

  • 理论上来说,通过Function Calling,任何功能都可以和大模型结合,提供更好的用户体验。
  • Function Calling机制是AI Agent化的重要组成部分。
  • Function Calling给大模型的应用提供了无数的可能性,长期来看,落地过程中的各种幻觉问题一定会得到优化和解决,路途只会越来越平坦,前方只会越来越光明。
THE END