背景与动机
大语言模型(LLM)最初以“文本到文本”的形式出现:输入一段自然语言,模型输出一段自然语言。这种方式在写作、翻译、摘要、开放式问答等任务上表现出色,但在需要精确事实、实时信息或与外部系统交互的场景中,暴露出三个结构性缺陷:知识截止、幻觉、以及无法行动。Tool Use(工具使用)正是为了弥合这些缺陷而诞生的接口层。
从纯文本生成到显式工具调用
工具调用并非一夜之间出现,它经历了四个阶段的演进:
1. 纯文本生成
早期的 LLM 只能生成字符串。如果用户问“今天北京天气如何?”,模型只能基于训练语料中的统计模式编造一个答案,既无法保证实时性,也无法验证。
2. Prompt Engineering
工程师尝试把更多事实、上下文、Few-shot 示例塞进 Prompt,让模型“背下来”。这种方法在闭域任务有效,但受限于上下文长度、知识更新成本和事实准确性,无法解决本质问题。
3. Chain-of-Thought(CoT)
CoT 让模型在最终答案前显式输出推理步骤,显著提升了数学与逻辑任务的准确性。但它仍然只是“想”,没有“做”——模型不能真正查询数据库、运行代码或调用 API。
4. ReAct(Reasoning + Acting)
ReAct 将推理过程与外部动作交替:模型输出 Thought,然后输出 Action,环境返回 Observation,模型继续 Thought。这一步把“工具”引入了循环,但 Action 通常是自由文本,需要额外的解析器,鲁棒性有限。
5. 显式 Tool Use
现代大模型直接在输出中生成结构化的工具调用描述,例如 OpenAI 的 tool_calls、Anthropic 的 tool_use 块。运行时可以精确解析参数、校验 schema、执行函数,并将结果以结构化形式喂回模型。这实现了“决策”与“执行”的清晰分离。
为什么需要 Tool Use
Tool Use 解决的核心问题可以归纳为三点:
- 知识截止:LLM 的训练数据有截止日期,无法天然掌握实时股价、天气、库存、私有文档等内容。
- 幻觉风险:当问题超出训练分布时,模型倾向于“合理编造”。工具返回的客观结果可以把生成锚定在事实之上。
- 无法行动:模型本身不能执行计算、读写数据库、发送邮件、控制设备。Tool Use 把模型的“决策能力”外化为“动作能力”。
此外,Tool Use 还带来了工程上的好处:
- 可验证性:工具调用的输入和输出都是结构化数据,便于校验、审计和回滚。
- 可组合性:多个工具可以像积木一样组合,完成更复杂的任务。
- 可扩展性:新增能力不需要重新训练模型,只需要注册新的工具定义。
学术源流
Tool Use 的工程化并非凭空出现,学术界早有相关探索:
Toolformer
Meta 在 2023 年提出的 Toolformer 展示了如何通过自监督方式,让模型学习“在何时调用何种 API、如何构造参数、如何使用返回结果”。它不依赖大量人工标注,而是从模型自身的文本生成中挖掘潜在的 API 调用位置,并用实际调用结果训练模型筛选有用调用。
Gorilla 与 APIBench
UC Berkeley 的 Gorilla 项目通过在海量 API 文档上微调模型,使其能够根据自然语言任务生成准确的 API 调用。APIBench 数据集包含大量 API 定义与调用样本,而 Gorilla 后续推出的 Berkeley Function-Calling Leaderboard(BFCL) 成为评估模型函数调用能力的重要基准。
ReAct / WebGPT / ACT-1
这些工作从不同角度验证了“模型输出动作、环境返回观察、模型再决策”的循环可行。Tool Use 可以看作是 ReAct 的工程化、结构化升级。
小结
Tool Use 的演进路径是:从“模型只生成文本”到“模型生成结构化动作描述,由运行时执行”。它不改变模型本身的知识边界,而是把模型变成一个“调度器”:理解意图、选择工具、构造参数、消费结果。下一章将从工程角度拆解它的核心概念。