Agent 工具編排的六項設計原則:智能體為何會選錯工具
Agent 工具编排的六个设计原则:为什么你的智能体总选错工具
文章歸納六項 Agent 工具編排原則,涵蓋工具描述與粒度、副作用與冪等性、退出路徑、執行狀態,以及限流和熔斷。工具描述應列明用途、輸入要求和不適用情況;平台則應在執行引擎設定調用次數、連續調用、耗時和單用戶並發上限。
2026-11-06 6
版权
版权声明:
本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《 阿里云开发者社区用户服务协议》和 《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写 侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
简介: 本文总结Agent工具编排六大核心原则:精准描述(含“禁用场景”)、合理粒度、显式标注幂等性与副作用、提供退出路径(如request_clarification)、传递结构化执行状态、前置限流熔断。强调工具设计决定Agent上限,模型只是执行者。(239字)

做 Agent 的人几乎都遇到过同一个问题:明明提供了五个工具,模型偏偏选了不该选的那个,或者连续调用三次同一个工具陷入死循环。
问题通常不在模型,而在工具的编排设计。这篇总结六个实践原则。
一、原则1:工具描述比工具功能更重要
模型选择工具的唯一依据,是工具的 name 和 description。如果描述写得含糊,模型就是瞎猜。
对比一下:
❌ name: process_data
description: 处理数据
✅ name: query_order_status
description: 根据订单号查询订单当前状态(已支付/已发货/已签收/已退款)。
必须提供订单号,订单号为 16-20 位数字。只查询,不修改订单。
第二种描述包含了:做什么、输入要求、边界(只查不改)。模型能准确判断什么时候该用。
一个实用技巧:在描述里写清楚"什么时候不要用"。比如"不要用这个工具查询用户信息,查询用户请用 get_user_profile"。负面示例能显著降低误选率。
二、原则2:工具粒度要匹配任务粒度
工具太粗,模型无法组合;工具太细,模型要调十几次还调不对。
太粗:handle_customer_request(query) ← 一个工具包打天下,模型不知道内部做什么
太细:get_order_id()、get_order_status_by_id()、format_status_text() ← 三个工具才能完成一件事
合适:query_order_status(order_id) ← 一个完整业务动作
判断标准:一个工具对应一个完整的、业务上有意义的动作。如果两个工具必须连着用才能完成任务,就应该合并。
三、原则3:幂等性和副作用要显式标注
Agent 会重试,会并发,会误判。工具有副作用时必须标注清楚:
- 只读工具:可以在描述里标注"只查询,不产生任何修改",模型可以放心多调
- 写操作工具:要标注"会创建/修改/删除数据,调用前必须确认",并建议加参数校验
- 有外部影响的工具:发消息、下单、转账这类,必须在平台层加确认机制,不能只靠提示词
实际踩过的坑:Agent 因为一次工具调用超时,自动重试了三次,结果创建了三个重复订单。根因是创建订单接口没有幂等键。
四、原则4:给模型"退出"的路径
很多 Agent 的死循环来自缺少兜底选项。模型不知道该做什么时,会反复调用同一个工具。
解决方案是提供明确的"放弃"工具:
no_answer(reason) ← 说明为什么无法回答,交还给人处理
request_clarification(question) ← 信息不足时向用户追问
有了这两个工具,模型不会硬编答案,也不会无限重试。这在客服、工单类场景尤其重要——比给出错误答案好得多。
五、原则5:上下文要给"当前状态"
Agent 的多轮执行中,每一轮模型都会重新看一遍上下文。如果上下文里没有明确"已经做了什么",模型会重复劳动。
有效的做法是在每轮把执行轨迹结构化地带上:
【已完成】
1. 查询订单 123456 → 状态:已发货
2. 查询物流 123456 → 承运商:顺丰,预计 11月8日送达
【待处理】
用户问:能不能改收货地址?
【可用工具】
- query_logistics
- update_address(写操作,需确认)
这样模型能看清进度,不会重复调 query_order。
六、原则6:限流与熔断要前置
模型的行为不可完全预测,平台侧必须有硬约束:
- 单任务最大工具调用次数:超过就强制结束并返回部分结果
- 单工具最大连续调用次数:防止死循环
- 单任务最大耗时:到点就中断
- 单用户并发上限:防止一个用户占满资源
这些限制不写在提示词里,而是写在运行时的执行引擎里。提示词可以被模型的"创造性"绕过,执行引擎不会。
七、多 Agent 场景的额外考虑
当任务复杂到一个 Agent 搞不定时,会拆成多个 Agent 协同。这时 Protocol 层面的问题出现了:
任务如何传递。 协调者要把子任务描述清楚——目标、约束、可用工具、期望输出格式。
上下文如何共享。 全部传过去会爆上下文,只传结论又丢失细节。常见做法是传"结构化摘要 + 按需检索"。
失败如何上报。 子 Agent 失败时要说清失败原因和已完成部分,协调者才能决定重试还是换方案。
责任如何划分。 每个 Agent 只能访问自己需要的工具,避免权限扩散。
八、写在最后
Agent 的能力上限由工具设计决定,模型只是执行者。工具描述准确、粒度合适、边界清晰、有兜底路径,Agent 就能稳定工作;反过来,再强的模型也会在混乱的工具集里迷路。
完整的 Agent 平台能力与模板场景可以看官方页面——查看函数计算 AgentRun 一站式 AI Agent 搭建方案。具体规格与权益以页面实际展示为准。
你在做 Agent 时遇到过工具误选或死循环吗?怎么解决的?评论区聊聊。
來源:阿里雲開發者社區 AI · developer.aliyun.com