跳转至

工具调用

Quote

A language model itself can only generate text. But with tools, it can interact with the real world.

快速开始

从一个参数明确且无副作用的工具开始,例如按城市查询天气。向模型提供名称、用途和 JSON Schema;收到调用请求后由程序校验参数并执行,再把结构化结果作为工具消息返回模型。完整请求结构见 应用基础。

基本概念

工具调用 (Tool Use / Function Calling) 是让大模型突破「纯文本生成」局限的关键能力。通过定义工具的名称、描述和参数 schema,模型可以在推理过程中决定何时调用哪个工具,并生成符合 schema 的结构化调用请求。

这一能力的实现通常分为三步:

  1. 工具定义:以结构化方式(如 JSON Schema)向模型描述可用工具;
  2. 工具选择:模型根据用户需求和工具描述,推理出需要调用的工具及其参数;
  3. 结果整合:将工具返回的结果注入上下文,模型基于真实数据继续推理或生成最终回复。

Function Calling

以 OpenAI 的 Function Calling 为例,一次典型的工具调用流程如下:

sequenceDiagram
    participant U as 用户
    participant M as LLM
    participant T as 工具

    U->>M: 发送请求(附带工具定义)
    M->>M: 推理:选择工具 + 生成参数
    M->>U: 返回 tool_calls(不直接回复用户)
    U->>T: 执行工具调用
    T->>U: 返回结果
    U->>M: 发送工具结果(tool message)
    M->>U: 基于结果生成最终回复

关键点:

  • 模型本身不执行工具,而是输出结构化的调用请求,由外部系统执行;
  • 一次推理可能产生多个 tool_calls(并行调用);
  • 工具调用的结果作为新的 message 注入对话上下文。

Tool Calling 的训练

模型获得 Tool Calling 能力通常需要经过专门的训练阶段:

监督微调 (SFT)

在训练数据中加入大量「需求 -> 工具调用」的样本对,例如:

{
  "messages": [
    {"role": "user", "content": "北京现在几点了?"},
    {"role": "assistant", "tool_calls": [
      {"type": "function", "function": {
        "name": "get_current_time",
        "arguments": "{\"timezone\": \"Asia/Shanghai\"}"
      }}
    ]},
    {"role": "tool", "content": "2026-05-14T10:30:00+08:00"},
    {"role": "assistant", "content": "现在北京时间是上午 10:30。"}
  ]
}

强化学习 (RL)

部分模型(如 Qwen2.5)通过 RLHF 进一步优化工具选择的准确性和参数生成的质量。

Structured Output

Structured Output 是 Tool Use 的泛化形式,即使没有外部工具,也能让模型输出符合指定 JSON Schema 的结构化数据。这对于:

  • 数据提取与解析
  • 表单填写
  • API 对接

等场景非常有用。

关键挑战

简单案例

订单助手接收到“查询我的订单”后,只能生成 get_order(order_id) 的结构化调用。服务端先验证当前用户是否拥有该订单,再执行查询并把结果作为观察返回;模型生成的 ID 不能绕过权限检查。

  • 工具数量扩展:当可用工具数量增多时,模型的选择准确率可能下降;
  • 参数幻觉:模型可能生成不存在的参数值或错误的参数类型;
  • 多步工具调用:需要模型理解工具之间的依赖关系并正确编排调用顺序;
  • 错误处理:工具调用失败时,模型需要具备重试或换用替代工具的能力。

主流模型支持

截至 2026 年 5 月,各主流厂商的旗舰模型均已支持 Tool Calling,且普遍新增了 Tool Search(工具搜索)能力,可在工具数量较多时按需加载相关工具定义以减少 token 消耗。

模型 Function Calling Structured Output Parallel Tool Calls 备注
GPT-5.5 ✅ ✅ ✅ 支持 Tool Search、Computer Use
GPT-5.4 ✅ ✅ ✅ 1M 上下文,Tool Search,Computer Use
Claude Opus 4.7 ✅ ✅ ✅ 1M 上下文,Tool Search,Adaptive Thinking
Claude Sonnet 4.6 ✅ ✅ ✅ 1M 上下文(beta),性价比首选
Gemini 3.1 Pro ✅ ✅ ✅ 1M 上下文,原生代码执行
DeepSeek V4 Pro ✅ ✅ ✅ 1M 上下文,strict 模式(beta)
Qwen 3.6 Plus ✅ ✅ ✅ 1M 上下文,原生多模态,OpenAI 兼容