Tool Use · 工具调用
LLM 通过结构化请求调动外部能力执行操作的机制——智能体的”手脚”
简介
Tool Use(工具调用,也叫 Function Calling)是 LLM 与外部世界交互的核心机制。LLM 根据当前上下文判断需要执行某个操作(搜索、读文件、执行命令、调 API 等),输出结构化的工具调用请求,由外部 Runtime 真正执行工具,再将结果返回给 LLM 继续推理。
关键洞察:Tool 本身通常不具备智能——不知道什么时候该调用、任务整体目标是什么、下一步该做什么。这些判断职能仍然归属 LLM 或外围工作流。
核心流程
LLM 判断"需要读文件"
→ 输出结构化 tool_use 请求
→ Agent Runtime 收到请求并解析
→ Runtime 真正执行工具(如读取文件)
→ 工具返回结果
→ Runtime 将结果回填入 Context
→ LLM 基于新信息继续下一轮判断
关键分工:
- LLM:负责决策(“我需要做什么”)
- Runtime:负责调度(“何时执行、怎么执行、结果怎么处理”)
- Tool:负责执行(实际执行具体操作)
Tool 的性质:“能力外放”,不是”增加智能”
本文采用武侠比喻帮助理解:
| 武侠比喻 | 工程里的 Tool | 能力类型 |
|---|---|---|
| 勘测前方十里地形 | 搜索网页、读取目录、读取文件 | 信息获取 |
| 神识探查 | 查询数据库、查看日志、读取系统状态 | 状态感知 |
| 飞剑攻击 | 修改文件、调用 API、执行命令 | 执行操作 |
| 炼器 | 生成代码、创建配置、修改工程 | 内容产出 |
| 传讯符 | 发送消息、调用外部服务 | 对外通信 |
| 储物法宝 | 保存任务状态、持久化 Memory | 信息持久化 |
关键理解:Tool 没有把 LLM 变成另一个更聪明的模型,它只是给 LLM 的判断增加了可执行出口。
Tool Use vs Function Calling
Tool Use 和 Function Calling 本质上是同一类能力的不同称呼:
- Function Calling:OpenAI/大模型厂商侧的名称,强调模型输出
function_call结构化 JSON - Tool Use:Anthropic(如 Claude Code)更偏向从 Agent 系统视角的称呼,包含工具定义、调用、执行、结果回填的完整链路
在 Agent 世界观中,Tool Use 是更完整的表达,因为它涵盖了”模型输出意图 → Runtime 执行 → 结果回馈”的全过程,而不仅仅是模型输出格式。
不同素材中的观点
来自 2026-08-11-agent-worldview-llm-context-tool-agent:
- Tool 本身只是一个能力接口,不知道”为什么调用自己""任务目标是什么""下一步应该做什么”
- LLM 一般不会自己伸手进入操作系统执行命令——更典型的是 LLM 输出调用请求,Runtime 执行
- Tool 没有把 LLM 变成更聪明的模型,只是给 LLM 的判断增加了可执行出口
- 从武侠比喻视角:Tool 是”法宝”,自身不产生判断,但让高手的”内力”有更多现实表现形式
实用信息
Tool 设计原则
- 单一职责:每个 Tool 做好一件事,接口清晰
- 输入输出结构化:参数类型明确,返回格式稳定
- 幂等性(尽量):读操作天然幂等,写操作尽量设计成可重复执行
- 错误可传达:失败时返回有意义的信息,让 LLM 能做恢复决策
- 权限边界清晰:明确定义 Tool 能访问什么、不能访问什么
常见 Tool 类型
- 信息检索类:WebFetch, WebSearch, Grep, Read
- 文件操作类:Read, Write, Edit, Glob
- 执行类:Bash, Run, Deploy
- 数据类:QueryDatabase, SearchVectorDB
- 通信类:SendMessage, SendEmail