Agent 中的 Tool Use

Tool use 指 agent 把模型决策转成真实环境动作的能力,关键不只是能调用函数,而是能在任务闭环里正确选工具、传参数并消费结果。

#tech / ai #type / concept #status / growing

[!info] related notes

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 CallingTool Calling 工程化
  • 工具多 ≠ 系统强: 工具边界模糊、参数难用时,反而更容易让 Agent 出错。
  • Tool Use 的稳定性: 高度依赖 ACI 和运行时约束,而不是只靠模型”聪明一点”。
  • 工具描述是给模型看的: 不是给人看的 API 文档,而是模型选择工具的依据。
创建于 2026/5/4 更新于 2026/7/15