关于 LLM Agent 框架中,如何调用外部工具,之前有介绍 ReActPlan-Act-Reflect 的设计方案。这次介绍一种和前面完全不同的设计:Toolformer,特点是让 LLM 自己有调用外部工具的能力。

1. 背景

1.1 LLM 调用外部工具的需求

大型语言模型(LLM)在推理和问答时存在几个固有问题:

  • 知识时效性问题:训练数据是静态的,无法获取最新信息。
  • 计算能力不足:无法精确执行数学计算、代码运行等。
  • 专业知识缺失:某些领域知识无法完全覆盖。

解决方法之一是让 LLM 在推理过程中调用外部工具(API、搜索引擎、计算器、数据库等),以弥补这些不足。

1.2 ReAct 框架(2022)

  • 论文:Yao et al., "ReAct: Synergizing Reasoning and Acting in Language Models", 2022。
  • 核心思想:在模型生成过程中显式交替进行:

    1. Reasoning(推理):用思维链推导下一步行动。
    2. Acting(行动):调用外部工具或执行命令。
  • 优点:可解释性强,能清晰看到推理链和工具调用过程。
  • 缺点

    • 需要人工设计示例(prompt engineering)告诉模型如何调用工具。
    • 没有自动化学习工具调用的能力,依赖人工示范。
    • 迁移到新工具需要重新写提示和示例。

1.3 Toolformer 的提出(2023)

在 ReAct 之后,Meta AI 提出 Toolformer,目的是:

  • 去掉大量人工示例的依赖
  • 让模型自动学会在合适时机调用工具。
  • 支持多工具场景且可扩展。

论文信息

  • 标题:"Toolformer: Language Models Can Teach Themselves to Use Tools"
  • 作者:Timo Schick, Jane Dwivedi-Yu, et al.(Meta AI)
  • 时间:2023年2月(arXiv:2302.04761)
  • 核心贡献:提出一种自监督(self-supervised)方法,利用模型自身生成训练数据来学习工具调用。

2. 对比 ReAct

2.1 对比

  1. 自动化程度不同

    • ReAct:依赖人工 prompt 和少量人工示例,迁移成本高。
    • Toolformer:模型自己生成调用数据并过滤,不需要人工标注。
  2. 训练 vs 推理阶段的能力

    • ReAct 更像是推理时的框架,指导模型如何交替推理和调用工具。
    • Toolformer 是训练方法,让模型在微调后本身就具备工具调用能力,即便没有复杂 prompt,也能自然调用。
  3. 可扩展性

    • ReAct 增加新工具时,需要人写新的示例。
    • Toolformer 只需要提供 API 接口,模型会自动生成调用数据。
  4. 调用时机学习

    • ReAct:时机由人工示例隐含控制。
    • Toolformer:时机由模型通过数据生成和过滤过程自动学到。

2.2 举例

ReAct

Question: What is the population of France?
Thought: I should look up the latest population data.
Action: Search("population of France")
Observation: 67 million
Answer: The population of France is about 67 million.

这里的“Search”调用方式是通过 prompt 教给模型的。

Toolformer
训练后模型可以直接在生成过程中插入:

The population of France is [Search_API("population of France") -> "67 million"].

它不需要显式思维链提示,因为在训练中已经学会了调用模式。

3. 应用场景

3.1. 适合场景

1. 定制化的专业业务领域

  • 特点:领域工具固定、调用逻辑复杂(如法律法规库、医疗数据库、工业计算器)。
  • 优势

    • 模型可内化工具调用能力,不依赖运行时复杂 prompt。
    • 调用时机精准,减少无效调用。
    • 部署后稳定,不需要频繁改动。
  • 应用示例

    • 法律问答机器人:自动判断是否查询法规库。
    • 医疗诊断助手:自动调用病历检索和药物数据库。
    • 工业工程助手:调用结构力学计算工具。

2. 专业的小模型(如 6.7B 参数开源模型)

  • 特点:算力和推理能力有限,但任务需要高精度。
  • 优势

    • 弥补推理不足:通过调用外部计算/检索工具显著提升准确率(数学推理等任务可提升 30%+)。
    • 低资源运行:适合在算力受限环境部署。
  • 应用示例

    • 金融计算小助手。
    • 数学解题系统。
    • 专业术语翻译工具。

3. 离线或封闭网络环境

  • 特点:不能使用 MCP / LangChain 等运行时框架,无法联网。
  • 优势

    • 工具调用能力直接内置在模型中,推理时不依赖外部 Agent。
    • 符合数据安全和合规要求。
  • 应用示例

    • 内网部署的企业智能客服。
    • 军工/航天嵌入式 AI 助手。
    • 离线工业控制系统。

4. 调用时机复杂且需要精准决策

  • 特点:调用工具的最佳时机难以用简单规则描述。
  • 优势

    • Toolformer 在训练中学会隐性调用模式,减少无效调用和错误调用。
  • 应用示例

    • 法律问题:只有涉及特定条款时才查询数据库。
    • 医疗问答:只有信息不完整时才调用检索工具。

5. 对延迟敏感的任务

  • 特点:不希望多轮交互或运行时决策延迟。
  • 优势

    • 内化调用能力可一步生成调用指令并执行。
  • 应用示例

    • 实时语音助手。
    • 在线客服系统。

3.2. 不适合场景

1. 工具更新频繁

  • 每次新增或修改工具,都需要重新生成训练数据并微调,成本高。
  • 更适合:MCP / LangChain 动态加载新工具。

2. 工具调用简单且可通过 prompt 控制

  • 如果调用逻辑简单(如直接查天气、翻译一句话),用运行时框架即可,无需微调。

3. 使用强闭源大模型

  • GPT-4、Claude 等已经具备良好的工具调用能力,运行时框架更灵活。
  • Toolformer 微调闭源模型不可行。

4. 预算或资源有限

  • 微调需要计算资源和 API 调用成本,如果只是临时功能,不划算。

4. 工作流程

Toolformer 的训练流程可以分为 5 个关键步骤

Step 1:准备基础模型

  • 可以是开源模型(如 LLaMA、GPT-J、Mistral)。
  • 模型本身不具备稳定的工具调用能力。

Step 2:自动生成工具调用示例

  • 给模型一个工具 API 文档(包括调用格式和功能描述)。
  • 让模型在普通文本中尝试插入工具调用(例如在遇到数学问题时插入调用计算器的指令)。
  • 每个插入点生成一个调用,并执行 API,得到返回结果。

Step 3:结果过滤(自监督学习)

  • 把 API 返回结果替换原文本的相关部分。
  • 让模型对比“有工具调用”与“无工具调用”的回答质量。
  • 只有那些显著提升回答质量的调用才保留到训练数据中。
  • 这样避免模型学会滥用工具。

Step 4:微调模型

  • 用保留的高质量调用示例微调模型。
  • 训练目标:让模型在推理中自然嵌入工具调用指令,并在合适时机调用。

Step 5:推理阶段

  • 部署后,模型在生成回答时会:

    1. 根据上下文判断是否需要调用工具。
    2. 生成符合 API 格式的调用指令。
    3. 执行工具调用,得到结果。
    4. 将结果整合到最终回答中。

5. 未来前景

5.1. 适合继续发展的场景

  • 专业领域智能助手
    法律、医疗、金融、工业工程等调用逻辑复杂且稳定的领域。
  • 小模型能力放大
    在算力受限或离线环境中,用小模型+工具调用获得接近大模型的效果。
  • 离线/内网安全 AI
    数据敏感场景(军工、金融、医疗)结合本地工具库,实现封闭环境智能化。
  • 多工具协作任务
    需要搜索、计算、数据清洗、可视化等多工具串联的复杂任务。

5.2. 成本降低

Toolformer 落地的最大技术门槛之一就是预训练 / 微调的成本,尤其是数据生成和过滤阶段的算力消耗。

但 2023 年后已经出现多种降本方案(LoRA 少样本训练、模拟工具返回值、运行时日志学习、增量适配器),如果这些方法成熟,Toolformer 在商业落地的门槛会显著降低,特别适合小模型和领域专用模型的部署。

  • 少样本微调(LoRA/QLoRA)
    用几十到几百条高质量调用示例即可适配新工具,减少全量数据生成和训练成本。
  • 增量更新
    工具更新时只训练相关模块(适配器),保留原有能力,避免重复微调。
  • 运行时日志驱动训练
    在推理阶段收集调用数据,后续用作增量微调,降低一次性算力投入。
  • 模拟工具返回值
    用规则或生成模型替代真实 API 调用,减少数据生成耗时和外部资源依赖。

KerryWu
679 声望171 粉丝

保持饥饿