Skip to content

工具调用为什么是一份协议 ​

模型输出 create_event(...) 只是文本形式的候选动作,不是授权,也不是已经执行。

工具契约 ​

text
name: calendar.create_event
input schema: title, starts_at, timezone
output: event_id, normalized_time
errors: INVALID_ARGUMENT | FORBIDDEN | TIMEOUT | CONFLICT
side effect: creates calendar event
idempotency: required
permission: calendar.write

描述必须让模型知道何时用,也让软件能确定性校验。自由文本参数应尽量转换为枚举、时间戳、对象 ID 和范围受限字段。

三方责任 ​

角色负责
模型根据上下文提出工具与参数
Harnessschema、权限、审批、预算、幂等、超时
Tool执行明确操作并返回结构化结果/错误

工具返回是 observation,可能不可信、过期或包含注入文本,不能升级为系统指令。

错误语义 ​

超时不等于未执行;网络断开前服务可能已完成写入。因此写操作重试需要幂等键或先查询结果。FORBIDDEN 通常不应自动重试,INVALID_ARGUMENT 应让模型修正参数,暂时性错误才进入有限退避。

结果进入上下文 ​

保留 tool_call_id、tool 名、参数摘要、状态、返回 schema、开始/结束时间和错误分类。敏感字段先脱敏;大结果保存外部引用,Prompt 中只放必要摘要。

常见错误 ​

  • 工具描述隐藏副作用;
  • 模型生成的用户 ID 未做对象级权限校验;
  • 所有错误都变成一段自然语言;
  • 写操作无幂等键自动重试;
  • 工具返回中的指令覆盖系统规则;
  • 成功返回没有稳定结果 ID。

自测 ​

本节自测

先作答,再查看解释。记录只保存在当前浏览器。

完成 0 / 3
  1. 1判断题 模型生成合法 JSON 就表示工具已获授权。
  2. 2单选题 写操作超时后安全重试最需要什么?
  3. 3开放题 定义一个只读政策搜索工具。
这里的分数只用于本章自测,不代表真实任务能力。

打印版答案:1. 错;2. 幂等键或结果查询;3. 输入、输出、权限、错误和副作用。

来源:Toolformer。

下一步 ​

工具协议明确后,进入Agent Loop 状态机。

最近更新