Function Calling
到这一章为止的模型都还停留在「说话」:提示词引导它说、RAG 帮它说对。Function Calling 是让模型「做事」的第一步——按约定格式输出调用指令,由外部系统真正去执行具体操作。2023 年 6 月 OpenA…
到这一章为止的模型都还停留在「说话」:提示词引导它说、RAG 帮它说对。Function Calling 是让模型「做事」的第一步——按约定格式输出调用指令,由外部系统真正去执行具体操作。2023 年 6 月 OpenAI 发布 Function Calling 后,「模型会调用工具」成为所有 AI 应用的前提能力:没有它,就没有 Agent(第 07 章)、没有 MCP(第 06 章)的用武之地。这一章讲清楚它的机制、为什么是 Agent 时代的里程碑,以及它与后续标准的演进关系。协议级细节与工程封装见 Agent 核心 07 · Tool Calling 协议与封装。
1. 演进脉络:模型第一次「动手」
1.1 前史(2022-2023):夹缝中的工具使用
ChatGPT 出现后,开发者很快发现一个痛点:模型只能输出文字,无法真正查询天气、操作数据库、发送邮件。早期的解决方案(2023 年初)是「提示词约定」——在提示词里写「如果要查天气,输出 JSON:{action: 'query_weather', city: '北京'}」,再用正则/代码解析模型输出,映射到真实函数。
这种方式脆弱不堪:模型经常输出不规范 JSON、漏字段、跑偏格式,解析层要写大量防御代码。
1.2 官方化(2023.06):Function Calling 发布
2023 年 6 月 13 日,OpenAI 发布 Function Calling(后更名 Tool Calling):把工具定义作为结构化参数传给模型,模型在需要时输出结构化的调用请求——格式由 API 保证,不再靠提示词碰运气。
核心机制:
用户: "北京明天天气怎么样?"
[系统提示词]
你是天气预报助手,可用工具:
- get_weather(city, date) -> 返回天气信息
[用户提问]
→ 模型输出(结构化,而非自由文本):
{"name": "get_weather", "arguments": {"city": "北京", "date": "明天"}}
→ 应用执行函数,把结果回传给模型:
"get_weather 返回: 晴,18~28℃"
→ 模型基于工具结果生成最终回答
关键的架构变革:模型只负责「决策调用什么、传什么参数」,执行由外部系统完成,结果再回填给模型继续推理——这个「模型决策 → 工具执行 → 结果回填」的循环,正是后来 Agent 主循环的原型。
1.3 标配化(2024-2026):从 feature 到基础设施
Function Calling 迅速成为所有主流模型的标准能力(GPT、Claude、Gemini、Qwen、DeepSeek 全支持)。2024 年起进一步演进:
- 并行工具调用:一次决策输出多个调用,批量执行
- 结构化输出:模型直接输出符合 schema 的 JSON,与工具调用互补
- 与 MCP 融合:MCP(下一章)把「工具怎么连接」标准化,Function Calling 则负责「模型怎么决策」——两者一个管传输,一个管决策
2. 核心概念:好工具的三要素
工具能不能被模型用好,定义质量决定一半。业界共识的好工具:
| 要素 | 要求 | 反例 |
|---|---|---|
| 名字 | 动词开头、语义清晰 | do_stuff() |
| 描述 | 说明用途、参数含义、何时使用 | 空描述或含糊描述 |
| 参数 | schema 明确、类型正确、必选可选清晰 | 全部 optional、类型混乱 |
工程要点:
- 描述是给模型看的文档:模型靠描述决定是否调用,「查天气」比「获取气象数据」更直观
- 参数越少越好:每个参数都是模型出错的机会
- 错误处理要外置:工具内部异常由代码处理并返回友好结果,不要指望模型「理解」报错堆栈
3. 关键认知:Function Calling 打开了什么
- Agent 的前提:思考-行动-观察循环(第 07 章)的「行动」就是工具调用。没有可靠的函数调用,Agent 循环就是空中楼阁
- 幻觉的另一个出口:工具定义、参数、返回结果都是「结构化数据」,比自由文本更容易校验——这是为什么 Agent 系统比纯聊天系统更容易构建可靠流程
- 它是「协议」,不是「实现」:Function Calling 只规定模型输出什么格式,不规定工具怎么连接——连接问题留给 MCP 解决。决策与传输的解耦,是这一层最重要的设计遗产
4. 现状与趋势(2026)
- 所有主流模型原生支持,工具调用质量成为模型评测的核心维度(调用准确率、参数正确率、幻觉调用率)
- 推理模型 + 工具调用:带思维链的推理模型在执行复杂工具流程(多步调用、依赖式调用)上显著更强
- 与 Agent 协议栈融合:Function Calling(决策层)+ MCP(连接层)+ Skill(能力封装层,第 10 章)构成 2026 年 Agent 工具体系的三件套
5. 术语澄清:Function Calling、Tool Calling 与 Tool Use
这章的名字里有个历史遗留:OpenAI 在 2023 年 6 月发布时叫 Function Calling,2024 年起官方文档改称 Tool Calling;Anthropic 那边则叫 Tool Use。它们指的基本是同一件事——让模型按结构化格式请求调用外部工具。区别只在细节:
| 术语 | 出处 | 侧重 |
|---|---|---|
| Function Calling | OpenAI 早期叫法 | 偏「函数」语义 |
| Tool Calling | OpenAI 现行叫法 | 覆盖更广:函数、API、MCP 工具都算 |
| Tool Use | Anthropic 叫法 | 同样含义,侧重使用动作 |
工程上不用纠结名字,但要注意两点:
- 读文档时按厂商对号入座:搜 OpenAI 看 Tool Calling、搜 Anthropic 看 Tool Use,别被旧名误导
- 「工具」的外延在扩大:2026 年的工具不只有函数——MCP Server(第 06 章)、Skill(第 10 章)都通过同样的「决策-执行-回填」机制被模型使用,这套机制才是本质
延伸阅读
- 官方文档:《OpenAI Function Calling Guide》——协议与最佳实践的第一手来源
- 深度版:Agent 核心 07 · Tool Calling 协议与封装、08 · ReAct 模式与主循环