工具设计原则
工具的粒度怎么定、描述与返回怎么设计才防呆,以及用结构约束替代 prompt 叮嘱
核心要点:
- 工具按模型思考单元划分,不照搬 API
- 描述即 prompt,加示例可把准确率从 72% 提到 90%
- 返回值要 token 高效:语义名、截断、详略可选
- 错误信息要可操作、区分可重试与终止
- poka-yoke:用结构约束让错误调用不可能发生
本文讲单个工具怎么设计。工具协议(MCP)见 03-MCP-协议,工具数量膨胀见 04-工具发现与延迟加载。
工具该切多细?
核心问题:一个工具对应一个 API 端点,还是对应一件"事"?
按模型的自然思考单元划分,而非机械对应 API[1]。紧密关联的操作可以聚合成一个工具,让模型少在相似工具间犹豫。
- 聚合关联操作:用一个
schedule_event代替"查空闲—建事件—发邀请"三个工具。 - 用枚举参数收敛变体:用
action枚举区分同类操作的变体,减少工具总数。 - 集合最小且不重叠:功能重叠的工具让模型在选择上浪费推理、易出错——人类工程师都分不清该用哪个时,模型也分不清。
可借鉴的判据:工具边界应匹配"模型会怎么想这件事",不是"后端怎么拆 API"。
工具描述要写什么?
核心问题:工具的 description 字段,模型真会读吗?
会——Anthropic 把工具定义视为与 system prompt 同等的工程对象,描述质量直接决定调用准确率[1]。实测数据:在工具描述里加入调用示例后,准确率从 72% 升到 90%[2]。
描述要写清四件事:何时用、何时不用、参数格式要求、边界情况。命名也是描述的一部分——用 domain_verb_noun 式命名空间(如 github_list_prs),参数名用精确名词(user_id 而非 user)。这呼应了 02-上下文工程/03-系统提示词工程:工具的接口设计(ACI)之于 agent,等同人机界面(HCI)之于人。
返回值怎么设计?
核心问题:工具返回什么、返回多少,对 agent 有多大影响?
返回值要 token 高效,只给模型下一步需要的信息[1]。工具返回会直接进入上下文,冗余返回既费 token 又干扰推理。
- 语义标识替代 UUID:用可读名称替代不透明 ID,Anthropic 实测可降低幻觉。
- 详略可选:提供
response_format: concise/detailed让模型按上下文预算选。 - 自然格式 + 截断附恢复提示:用训练中常见的 JSON/Markdown 格式降低解析错误,截断时附带"如何取更多"的提示。
这条与 02-上下文工程/02-核心原则 的"工具返回值也是上下文成本"一致。
错误怎么反馈?
核心问题:工具失败时,返回一个 stack trace 够吗?
不够——错误信息要是可操作的诊断,让模型能自我纠正[1]。好的错误返回包含:失败原因 + 具体纠正建议,并区分可重试错误与终止性错误。
更进一步,可以在工具描述里预先告知模型"遇到这类错误后该怎么办"。把错误当成给模型的指令,而非单纯的故障报告——这决定了 agent 能否从失败中恢复,而不是卡死或瞎试。
poka-yoke 防呆是什么?
核心问题:与其在 prompt 里反复叮嘱模型别犯错,有没有更可靠的办法?
poka-yoke(防呆)指用结构性约束让错误调用在接口层就不可能发生,而非靠提示叮嘱[3]。这是工具设计里最可借鉴的思路——把约束硬编进接口,而不是寄望模型记住。
常见模式:强制绝对路径(消除相对路径歧义)、唯一性约束(用"替换"工具而非"新建+删除")、读前写门控、枚举替代自由文本、输出截断边界、内嵌调用示例。核心哲学是让接口本身拒绝错误的用法,比任何 prompt 警告都可靠。
Takeaway
| 知识点 | 核心结论 |
|---|---|
| 粒度 | 按模型思考单元切,聚合关联操作,集合最小不重叠 |
| 描述即 prompt | 写清何时用/参数/边界,加示例准确率 72%→90% |
| 返回值 | token 高效:语义名替 UUID、详略可选、截断附恢复提示 |
| 错误反馈 | 可操作诊断 + 区分可重试/终止,当作给模型的指令 |
| poka-yoke | 用接口结构约束让错误调用不可能,而非 prompt 叮嘱 |
参考资料
- Anthropic. Writing effective tools for agents — with agents. 2025. https://www.anthropic.com/engineering/writing-tools-for-agents
- Anthropic. Introducing advanced tool use on the Claude Developer Platform. 2026. https://www.anthropic.com/engineering/advanced-tool-use
- Anthropic. Building effective agents. 2024. https://www.anthropic.com/engineering/building-effective-agents
延伸阅读
- AgentPatterns.ai. Poka-Yoke for Agent Tools / Semantic Tool Output. https://www.agentpatterns.ai/tool-engineering/poka-yoke-agent-tools/
- 03-MCP-协议 — 工具的标准化接入协议