Agent 中的 Tool Use
Tool use 指 agent 把模型决策转成真实环境动作的能力,关键不只是能调用函数,而是能在任务闭环里正确选工具、传参数并消费结果。
#tech / ai
#type / concept
#status / growing
[!info] related notes
- 所属 MOC: Agent MOC, Coding Agent MOC, AI MOC
- 前置概念: Augmented LLM, Function Calling, MCP 协议
- 并列概念: Agent-Computer Interface (ACI), Built-in tools, 面向 Agent 的工具设计
- 易混淆概念: Function Calling
- 关系笔记: AI的能力以及对应的协议, Agent 执行闭环
Agent 中的 Tool Use
一句话定义
Tool Use 指 Agent 把模型的判断转成真实动作——搜索、读文件、执行命令、调用 API——再把结果回流到后续推理里。它不是”模型输出一个函数名”就结束了,而是一个包含定义、选择、执行、结果处理的完整工程链路。
核心机制 / 工作原理
一个完整的 tool use 包含四层:
1. 工具定义
给模型看的”工具说明书”,包含:
- name: 工具名称(模型用来引用)
- description: 工具用途描述(越清晰,模型选得越准)
- parameters: JSON Schema 格式的参数定义
- risk_level: 风险等级(low/medium/high)
- requires_approval: 是否需要人类审批
Anthropic 建议”像给初级开发者写文档一样写工具描述”。
2. 工具选择
模型根据用户意图和工具描述,决定调用哪个工具。影响选择准确率的因素:
- 工具描述的质量
- 工具数量(<20 个最佳)
- 工具之间的职责边界是否清晰
3. 运行时执行
宿主系统执行工具的完整流程:
- 参数验证(JSON Schema 校验)
- 权限检查(当前用户/Agent 是否有权)
- 审批检查(高风险操作是否需要人类确认)
- 执行(直接执行或沙箱执行)
- 超时控制
- 错误处理
详见 Tool Calling 工程化。
4. 结果消费
把执行结果回传给模型:
- 成功:返回结果数据
- 失败:返回错误信息,让模型决定重试还是降级
- 超时:返回超时提示
- 拒绝:返回用户拒绝信息
最小例子 / 最小场景
客服 agent 处理退款请求时:
1. 用户: “我要退款,订单号 12345”
2. Agent: 调用 query_order(order_id=”12345”)
3. Runtime: 验证参数 → 检查权限 → 执行查询 → 返回订单信息
4. Agent: 订单已支付,调用 check_refund_eligibility(order_id=”12345”)
5. Runtime: 执行检查 → 返回”符合退款条件”
6. Agent: 调用 process_refund(order_id=”12345”, amount=99.00)
7. Runtime: 风险等级 high → 触发人类审批
8. 用户: 批准
9. Runtime: 执行退款 → 返回成功
10. Agent: “退款已处理,预计 3-5 个工作日到账”
工具分类
| 分类 | 例子 | 特点 |
|---|---|---|
| 只读工具 | 查询、搜索、读取 | 低风险,直接执行 |
| 写入工具 | 创建、更新、删除 | 中风险,可能需要确认 |
| 高危工具 | 支付、发布、删除大量数据 | 高风险,必须审批 |
| 系统工具 | 执行命令、读写文件 | 需要沙箱隔离 |
边界与易混淆点
- Tool Use vs Function Calling: Function Calling 是模型侧机制(模型如何输出 tool_call),Tool Use 是工程侧实现(如何可靠执行)。详见 Function Calling 和 Tool Calling 工程化。
- 工具多 ≠ 系统强: 工具边界模糊、参数难用时,反而更容易让 Agent 出错。
- Tool Use 的稳定性: 高度依赖 ACI 和运行时约束,而不是只靠模型”聪明一点”。
- 工具描述是给模型看的: 不是给人看的 API 文档,而是模型选择工具的依据。