LLM 工具调用(Tool Use)
让模型选择并生成结构化调用,由受控运行时执行外部函数,再把结果作为观察返回模型的机制。
LLM 本身只能根据输入生成输出。Tool Use 为模型提供一组外部能力:搜索网页、查询数据库、读取文件、运行代码、发送消息或调用另一个 Agent。模型不直接执行这些动作,而是生成符合 schema 的调用请求,运行时负责校验、授权、执行和返回结果。
一个工具通常包含:
- 稳定且可区分的名称。
- 描述“什么时候用、什么时候不要用”的说明。
- 参数类型、必填项、枚举和约束。
- 明确的返回结构与错误语义。
- 权限、幂等性、可逆性和成本信息。
Function Calling 常指单个 API 的结构化调用;Tool Use 是更广的能力与运行时设计。
工具让模型突破参数权重和对话上下文:
- 获取最新或私有数据。
- 执行精确计算、检索和代码验证。
- 与文件、数据库、浏览器和业务系统交互。
- 将复杂能力封装为可测试模块。
- 让环境结果成为 Agent 的 ground truth。
但工具也是 Agent 风险的主要入口。读错文件可能泄露隐私,写错数据库可能破坏状态,发送或支付动作可能产生不可逆后果。
1. 工具发现与描述
Section titled “1. 工具发现与描述”运行时把可用工具及 schema 提供给模型。MCP 等协议可以标准化发现和传输,但协议不能替代工具自身的权限和质量。
2. 工具选择
Section titled “2. 工具选择”模型判断是否需要工具、选择哪个工具,并生成参数。相似名称、重叠能力和模糊描述会显著增加误选。
3. 参数验证
Section titled “3. 参数验证”运行时必须验证类型、范围、路径、目标对象和授权。不要把模型生成的字符串直接拼入 shell、SQL 或网络请求。
4. 风险检查
Section titled “4. 风险检查”可按风险分层:
- 低风险:只读、可缓存、无敏感数据。
- 中风险:修改可回滚状态、有限账号权限。
- 高风险:发送、删除、支付、发布、权限变更或跨组织动作。
高风险工具应要求预览、确认、审批或完全禁用。
5. 执行与 Observation
Section titled “5. 执行与 Observation”工具返回结构化成功结果或错误。结果应包含必要来源、状态和下一步信息;不能只返回模糊的“失败了”。
6. Trace 与评估
Section titled “6. Trace 与评估”记录工具版本、调用参数的安全摘要、耗时、结果状态、重试和权限决定。评估至少覆盖工具选择准确率和参数正确率。
早期 MRKL 把 LLM 当作路由器连接符号与神经模块,Toolformer 等工作探索模型何时插入 API 调用。随后 function calling 让调用结构化,Agent 框架提供 registry、runner 和 tracing,MCP 等协议进一步标准化工具发现与通信。
演进重点已经从“能不能调用函数”转向“接口是否容易被模型正确使用、权限是否最小、错误是否可恢复、行为是否可评估”。
“工具描述只是给人看的文档”
Section titled ““工具描述只是给人看的文档””工具描述本身就是 Agent-computer interface。模型是否会选对工具,很大程度取决于名称、参数和边界说明。
“参数通过 JSON schema 就安全”
Section titled ““参数通过 JSON schema 就安全””Schema 只保证形状,不保证目标合法、权限足够或动作可逆。仍需业务授权和输入验证。
“MCP 工具天然可信”
Section titled ““MCP 工具天然可信””MCP 解决互操作,不为第三方服务器背书。接入前仍需审计来源、权限、网络、数据和执行范围。
“工具越多 Agent 越强”
Section titled ““工具越多 Agent 越强””过多相似工具会增加选择负担。工具集应按任务最小化,并通过清晰分类或路由降低混淆。
“Tool Use 等于 Agent”
Section titled ““Tool Use 等于 Agent””固定函数调用仍可能只是 workflow。Agent 还需要围绕目标根据 observation 动态控制后续步骤。
“错误信息越短越好”
Section titled ““错误信息越短越好””过短错误无法支持恢复。应提供错误类型、可重试性和安全的修复提示,同时避免泄露敏感内部信息。
与相邻概念的区别
Section titled “与相邻概念的区别”- 与 ReAct(推理与行动):Tool Use 提供 Action 接口;ReAct 规定如何用 Observation 驱动下一轮。
- 与 API:API 是服务接口,工具是面向模型重新设计过的可调用能力。
- 与 plugin:Plugin 是封装和分发形式,Tool 是运行时能力。
- 与 MCP:MCP 是连接模型应用与工具/资源的协议;Tool Use 是模型选择和执行外部能力的通用机制。
- 与 RAG:RAG 是常见数据工具或 workflow;Tool Use 还包括动作和委派。