如何防止 Strands 智能体以错误的顺序调用工具
摘要
一位实践者分享了从主题演讲问答环节中获得的经验,探讨 Strands 智能体为何会选错工具或以错误的顺序调用工具,并撰写了一份附有链接和代码片段的实用指南,介绍如何解决工具选择和调用顺序问题。
我周六做了一场主题演讲,讲的是 S3 和 EC2 能教会我们哪些构建智能体的经验(比如如何利用基础构件,将它们组合起来以实现你的目标)。演讲结束后,一位观众过来问我,为什么他们的 Strands 智能体总是选错工具,还会以错误的顺序调用工具,即使调用顺序很重要。结果发现,他们用了非常非常多的工具。我当时在口头解答,但说着说着就意识到,并没有一个合适的链接可以发给他们,把所有相关信息都涵盖进去。于是我回家后就把这些内容都整理成了文章(附上了很多链接和代码片段),希望能更有帮助。所以!文章已经写好了,我会把链接放在评论里(版主们,请原谅我第一次没看到这条规则!)。你们遇到过这种情况吗?是怎么解决的?
相似文章
当给 agent 增加工具越来越多时,它开始调用错误的工具。让模型自己写代码来调用它们,是解决办法。
文章认为,随着 agent 的工具集不断膨胀,直接调用工具的方式会逐渐失效。更稳健的解决方案是让模型在沙箱中编写代码,把工具当作函数来调用——这能减少上下文中的 schema 噪音、降低错误调用率,代价则是需要关注沙箱安全问题。
在生产环境中,你们如何在代理执行错误工具调用之前捕获它们?
关于在AI代理执行到生产环境之前检测和防止错误工具调用策略的讨论。
在让 Agent 在生产环境调用工具之前,我会先问这五个问题
一位实践者分享了一份生产环境上线前检查清单,用于让 AI Agent 调用会改变状态的工具:明确的主体身份、显式的委托范围、工具清单披露、应用就绪程度(幂等性、审计日志、按 Agent 授权),以及在策略或鉴权不可用时的失败关闭行为。
我见过的最严重的智能体错误,都是我的工具造成的,而不是模型的错。
一位 MCP 服务器开发者分享了从智能体失败案例中总结的经验,指出许多看似是模型犯下的错误,实际上源于设计不佳的工具输出、含糊不清的选项,以及放错位置的指令。每一项修复都落实在工具中,而不是提示词中。
提示词指令没能阻止我的 Agent,但调用时的检查做到了。四个经受住验证的模式
一位实践者分享了四个硬性护栏模式——直接对 AI Agent 的工具调用本身强制执行检查,而非依赖提示词中的指令。这些模式经过其两个月的 Claude Code 历史记录验证,表明运行时参数校验、顺序约束、最坏情况预算预留以及明确的拒绝消息,可以防止 Agent 绕过指令。