首页/AI 应用技术演进/Function Calling
AI 应用技术演进 · 第 05 章

Function Calling

到这一章为止的模型都还停留在「说话」:提示词引导它说、RAG 帮它说对。Function Calling 是让模型「做事」的第一步——按约定格式输出调用指令,由外部系统真正去执行具体操作。2023 年 6 月 OpenA…

约 7 分钟2,764 字1 个代码示例

到这一章为止的模型都还停留在「说话」:提示词引导它说、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 打开了什么

  1. Agent 的前提:思考-行动-观察循环(第 07 章)的「行动」就是工具调用。没有可靠的函数调用,Agent 循环就是空中楼阁
  2. 幻觉的另一个出口:工具定义、参数、返回结果都是「结构化数据」,比自由文本更容易校验——这是为什么 Agent 系统比纯聊天系统更容易构建可靠流程
  3. 它是「协议」,不是「实现」: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 叫法 同样含义,侧重使用动作

工程上不用纠结名字,但要注意两点:

  1. 读文档时按厂商对号入座:搜 OpenAI 看 Tool Calling、搜 Anthropic 看 Tool Use,别被旧名误导
  2. 「工具」的外延在扩大:2026 年的工具不只有函数——MCP Server(第 06 章)、Skill(第 10 章)都通过同样的「决策-执行-回填」机制被模型使用,这套机制才是本质

延伸阅读