前言
本文重点介绍 Function Calling 的机制和应用,阐述其原理以及为何会出现 Plugin、GPTs 等概念。
- 大模型应用的核心是自然语言连接系统的认知。
- 在 Function Calling 的应用中,如何将大模型和业务系统连接起来。
- OpenAI 如何通过 GPTs 连接外部世界。
自然语言连接一切(Natural Language Interface),接口的进化
接口经历了多个版本的进化:从命令行到 GUI,再到 API,最后到自然语言接口。在这个过程中,媒介发生变化,但都需要约定和规划。面对 ChatGPT 等大模型,我们面对的是自然语言接口。思维上首先要转变的就是要把计算机当成一个人。
为什么要让大模型连接外部世界
大模型有自身的能力缺陷:
- 并非知晓一切:训练数据不可能包含所有垂直、非公开数据。
- 没有「真逻辑」:表现出的逻辑是统计规律,容易产生幻觉。
- 知识滞后:训练周期长,无法实时获取最新信息。
因此,需要连接外部世界,对接真实逻辑系统。
Function Calling 的机制
定义
函数调用(Function Calling)允许模型输出一个请求调用函数的消息,包含函数信息和参数。这是将 GPT 能力与外部工具/API 连接的新方式。支持函数调用的新模型,可以根据用户输入自行判断何时调用哪些函数,并生成符合要求的请求参数。
工作流程
- 开发者定义函数 Schema(JSON Schema)。
- 用户发送 Prompt。
- 模型判断是否需要调用函数,若需要则返回函数名和参数。
- 后端执行函数,获取结果。
- 将结果反馈给模型,模型生成最终回复。
代码示例
import openai
# 定义函数描述
functions = [
{
"name": "get_current_weather",
"description": "Get the current weather in a given location",
"parameters": {
"type": "object",
"properties": {
"location": {"type": "string", "description": "The city and state"},
"unit": {"type": "string", "enum": ["celsius", "fahrenheit"]}
},
: []
}
}
]
messages = [{: , : }]
response = client.chat.completions.create(model=, messages=messages, functions=functions)


