前言
本文重点介绍 Function Calling 的机制和应用,在其原理基础上,深入讲解为什么会有 Plugin、GPTs 等技术的出现。核心要点如下:
- 大模型应用的核心是自然语言连接系统的认知。
- 在 Function Calling 的应用中,如何实现大模型与业务的有效连接。
- OpenAI 如何通过 GPTs 连接外部世界。
本文将主要以 ChatGPT 为例进行讲解,因为其在当前公认的能力表现上具有代表性。
自然语言连接一切(Natural Language Interface),接口的进化
我们以前的接口经历了多个版本的进化,从早期的命令行到图形界面,再到 Web API,媒介发生很多变化,但都离不开一个共同点,那就是要有约定、有规划、要有程序员的对接实现。
而在面对以 ChatGPT 为代表的一系列大模型时,我们面对的是自然语言的接口。在这个强大的能力加持下,我们在面对计算机等智能设备时,可以用自然语言对它发出指令,实现我们的意图。
这里重新强调这一点,是因为我们要清楚,面对 AIGC 的重大革新,不管是在日常生活中使用 LLM,还是基于 LLM 做应用开发,思维上首先要转变的就是要把计算机当成一个人。有了这个认识,接下来我们才能更好地使用它。
为什么要让大模型连接外部世界
有的伙伴可能会说,大模型既然能力已经很强了,为什么还要连接外部世界呢?之前我们也讲过,大模型有它自己的能力缺陷,或者说不擅长的地方:
并非知晓一切
- 训练数据不可能什么都有:垂直领域、非公开数据必有欠缺。
- 不知道最新信息:大模型的训练周期很长,且更新一次耗资巨大,还有越训越傻的风险。所以它不可能实时训练。例如 GPT-3.5 的知识截至 2021 年 9 月,GPT-4 是 2023 年 12 月。
没有「真逻辑」
它表现出的逻辑、推理,是训练文本的统计规律,而不是真正的逻辑,所以容易产生幻觉。
为了解决这个问题,就是我们所说的要连接外部世界:大模型需要连接真实世界,并对接真逻辑系统。
Function Calling 的机制
Function Calling 技术可以把大模型和业务系统连接,实现更丰富的功能。我们先看下它的由来和定义,以及用途,就能理解这一点了。
Function Calling 的定义
函数调用(Function Calling) 是 OpenAI 发布的新能力。根据官方描述,函数调用能力可以让模型输出一个请求调用函数的消息,其中包含所需调用的函数信息、以及调用函数时所携带的参数信息。这是一种将 GPT 能力与外部工具 / API 连接起来的新方式。
支持函数调用的新模型,可以根据用户的输入自行判断何时需要调用哪些函数,并且可以根据目标函数的描述生成符合要求的请求参数。
Function Calling 的机制
它的使用逻辑是这样的:
- 用户输入自然语言 Prompt。
- 模型分析意图,判断是否需要调用外部函数。
- 如果需要,模型输出结构化的函数调用请求(包含函数名和参数)。
- 后端执行该函数,获取结果。
- 将结果返回给模型,模型生成最终的自然语言回答。
Function Calling 完整的官方接口文档展示了详细的 JSON Schema 规范。我们可以看到,对于人来讲,我们还是一段自然语言的 prompt 输入,得到一个自然语言的回答,但是因为有了 Function Calling,可以通过开发各种各样的函数,来丰富和增强大模型的能力。
Function Calling 的示例、体验
我们来看一个 Function Calling 的简单使用实例:
需求:定义一个函数,可以让 ChatGPT 进行精确的数学计算,并返回精确结果。
实现:
# 伪代码示例:定义函数描述
functions = [
{
"name": ,
: ,
: {
: ,
: {
: {
: ,
: {: },
:
}
},
: []
}
}
]


