先说结论
Agent 工具合同应明确工具用途、输入语义、授权范围、返回状态和副作用。使用明确对象标识与结构化字段,返回足够的业务证据和可操作错误;关键校验由服务端完成,不能因为参数符合 schema 就认为动作合法。
读完你会得到
- 工具名与参数表达实际动作,读查询和业务写入分别定义。
- 结构正确、身份有效和业务允许是不同的检查。
- 返回结果包含状态、证据与下一步,不只给成功字符串。
工具叫 process_order,参数只有 user 和 value,成功时返回 OK。人类工程师也很难知道它查询还是修改了订单,value 是金额还是数量。模型用错工具,往往从这些模糊约定开始。本文用教学订单工具逐项改写。
配套资料与延伸阅读
- 企业 AI Agent 开发检查清单:从工具权限到上线评测(阅读)
相关方法与实施说明
- 08|模型、规则、工具和人,应该怎样分工?(阅读)
相关方法与实施说明
- 企业 AI / FDE 服务(了解)
可用一个现有业务工具的输入、输出和失败案例讨论 Agent 接口设计。
从模糊工具改成明确动作
把 process_order 拆成读取订单、创建工单草稿和提交工单等明确能力。工具名说明动作与对象,描述写清什么时候用、什么时候不能用,以及是否改变业务状态。工具数量也不宜无限增加,重叠能力会让选择更难。
Anthropic 的工具设计文章强调明确命名、参数和高信号结果,并建议用实际任务评估工具。本文的订单合同和错误分类是本站教学设计,不是某个厂商 API。
本节依据: [1] Anthropic
参数应带业务语义
| 模糊输入 | 更明确的约定 | 还需要服务检查 |
|---|---|---|
| user | 服务端认证身份,不由模型自报 | 用户与对象的访问关系 |
| order | 稳定 order_id 与业务范围 | 对象存在且在当前授权内 |
| value | quantity 或 amount_minor,附单位 | 数量与金额符合业务约束 |
| date | 业务含义明确且带时区的时间 | 是否符合流程与生效条件 |
| version | 当前来源版本或预期版本 | 防止覆盖并发修改 |
| request_id | 绑定这次业务意图的稳定标识 | 重复调用与不同内容冲突 |
字段名不必照抄示例。关键是业务含义能唯一解释,缺失和无效值有明确处理。默认值要安全,不能把缺失金额补成零再执行,也不能把缺失地区补成当前操作者所在地。
返回足够信息,但控制无关内容
查询结果包含必要业务字段、来源版本、读取时点和明确状态。创建请求返回对象标识、受理或执行状态,以及下一步查询方式。结果未知就返回未知,不用 OK 让模型自行判断。
长列表提供分页、过滤和摘要模式,让调用方可以获取需要的部分。不要一次返回全部客户资料或大段内部记录。简洁输出仍要保留影响判断的条件,不能为了节省 token 去掉币种、版本或失败原因。
展示名可以帮助模型理解,稳定标识用于准确执行。模型不需要记忆无关内部细节,但不能只拿展示名修改记录。人可理解与机器可校验应同时具备。
错误信息告诉调用方接下来能做什么
| 错误 | 返回的信息 | 允许的下一步 |
|---|---|---|
| 输入无效 | 哪个字段不合法、期待的含义 | 更正输入;不重复原请求 |
| 权限不足 | 不泄露敏感对象的拒绝结果 | 按既有授权流程处理 |
| 版本冲突 | 当前记录已变化,动作未完成 | 重读并重新核对内容 |
| 上游暂时不可用 | 失败阶段与可重试条件 | 受预算约束的安全重试 |
| 执行结果未知 | 请求标识与查询方式 | 先查业务结果,不新建意图 |
| 业务条件不满足 | 具体条件与获授权说明 | 补资料、调整草稿或转交 |
错误不能携带 token、完整堆栈或无权资料。可操作不等于向任何用户公开内部信息;详细诊断放在受控记录中,工具返回保留决策所需信息。
确定哪些条件必须在服务端检查
检查身份、业务对象范围、当前状态、记录版本、金额或数量约束以及副作用授权。模型提出的参数只是候选,不能跳过这些检查。
schema 可以确认字段类型和枚举,不能确认这笔金额是可退余额,也不能确认当前用户拥有审批权限。模型输出“approved: true”不能成为授权记录,授权状态来自受控服务。
读工具也需要校验。一个通用搜索工具如果能跨租户返回内部资料,后续写工具再严格仍然存在数据暴露风险。工具合同应说明读结果的范围和来源。
用真实任务比较新旧工具设计
工具评测步骤
- 选择完整任务
包含正常、缺字段、同名对象和权限拒绝,而不是只测试单次成功调用。
- 记录调用轨迹
观察是否选错工具、反复调用、传错单位或误读返回状态。
- 分类失败原因
描述不清、参数含糊、输出不足和服务故障分别修复。
- 保留未参与调优的样本
用保留案例检查改进是否只适合已见过的任务。
- 核对业务结果
不仅检查工具返回,还确认任务是否按限制完成。
修改工具后同步更新示例与版本。旧参数继续兼容时写清期限,未知字段和状态按约定处理,避免模型缓存的旧用法悄悄影响新流程。
保留几组相同意图、不同表达的任务,检查工具描述是否只对示例措辞有效。也要给错误结果做测试:返回“已受理但未完成”时,模型不应宣布完成;返回版本冲突时,不应换一个对象编号重试。工具评测由此覆盖调用后的解释,而不只验证参数能通过 schema。
一条工具合同可以先从何处改善
选一个最常误用的工具,重写用途、参数含义、状态和错误。让团队里没写过它的人读文档并完成一项演练;人仍无法判断时,继续减少含糊约定。
本文适合接入业务 API 的 Agent,不要求特定框架。工具设计能够降低误用,但不能保证模型每次选择正确;执行层仍需限制范围,并对失败提供可查询与恢复的路径。
常见问题
工具越少越好吗?
目标是用途清晰、能力足够、重叠较少。过度合并会形成模糊万能工具,过度拆分也增加选择与协调成本,需要用任务评测决定。
严格 schema 能完全避免错误调用吗?
能发现结构问题,不能证明业务意图、对象权限和当前状态正确。服务端必须继续执行授权、版本与业务规则校验。
资料来源与核对说明
文章中的行业定义与技术方法尽量引用官方或标准组织资料;表格、清单和决策框架是基于这些资料形成的编辑性整理,不代表来源机构对本站服务的背书。
- Writing effective tools for agents — with agentsAnthropic
正文发表于 2025-09-11。用于工具输入、输出与错误信息的工程原则。
带上流程、样例和目标,添加企业微信沟通。先确定项目范围与验收方式,再安排实施。


