Skip to content

Tool Use

工具使用总论:工具定义、选择、执行、结果回填的完整循环,Function Calling 的上位概念。

Updated View as Markdown
For humans

Tool Use

Tool Use(工具使用)是 Agent 与外部世界交互的完整机制,Function Calling 是它的一种实现方式。两者的关系:Function Calling 解决“模型怎么表达调用意图”的格式问题,Tool Use 覆盖从工具定义到结果回填的整个闭环

完整循环

工具使用的五步循环:

Tool Use 五步循环

  1. 定义:工具 = 一个函数 + 元数据(名称、描述、参数 JSON Schema)。描述是模型选工具的唯一依据
  2. 选择:模型根据用户请求和工具描述,判断要不要调工具、调哪个
  3. 调用生成:模型输出结构化的工具名和参数(FC 的 tool_calls),不执行任何东西
  4. 执行:宿主校验参数、鉴权、执行真实函数。模型永远不直接碰系统
  5. 结果回填:执行结果作为观察喂回模型,模型继续推理,直到不再请求工具

这个循环和 ReAct 的思考-行动-观察本质是同一个结构。Tool Use 是协议层和工程层的实现,ReAct 是范式层的描述。

工具设计三原则

工具的 description 决定调用准确率:

  • 写清“做什么、何时用、何时不用”。收尾那句“不返回什么”往往最重要,它防止模型为相关但不同的任务误调工具
  • 参数用 enum 约束离散值,required 精简,给示例值
  • 工具粒度:宁可多个小工具,不要一个万能工具塞满可选参数

执行侧的关键点

  • 参数校验不可省。模型生成的参数不可信,执行前必须校验
  • 失败要回填错误。工具失败把结构化错误回给模型(错误码、建议),让它修正参数重试或换工具,而不是吞掉
  • 幂等。写操作工具接受幂等键,重试不产生重复副作用
  • 权限与审计。工具是权限边界,执行前检查、执行后记录

与相邻概念的关系

概念 层次 回答的问题
Function Calling 模型能力 + API 格式 模型怎么表达调用意图
MCP 协议 工具怎么被标准化发现、接入、调用
Skills 经验封装 Agent 做这类任务时按什么流程执行
Tool Use 总论 工具从定义到回填的完整生命周期

生产系统的工具接入必须有权限、参数校验、审计、超时、重试和降级,这一整套就是后面 Harness Engineering 的内容。

面试追问

  1. Tool Use 和 Function Calling 什么关系? Function Calling 是 Tool Use 的一种实现:FC 解决模型输出结构化调用请求的格式问题,Tool Use 是包含定义、选择、执行、回填的完整闭环
  2. 工具描述为什么重要? 模型靠描述决定何时调用、调哪个工具。描述模糊,工具就选不准;触发条件写清,调用准确率才上得去
  3. 执行侧最不能省什么? 参数校验、失败回填、幂等、权限。模型生成的参数不可信,执行是宿主的事
  4. 工具失败了怎么办? 把结构化错误回填给模型让它自纠:参数错修正重试,权限不足停止,网络错误降级。吞掉错误模型会陷入困惑
  5. 为什么模型不能直接执行工具? 模型是概率生成器,不该碰真实系统。执行、鉴权、校验、日志都在宿主层,这是职责边界也是安全边界
Navigation

Type to search…

↑↓ navigate↵ selectEsc close