Agent 工具调用为什么越改越差:两种方向的失败,Prompt 修不了

先说一个反直觉的结论

过去两年,AI 编程圈最常见的一句建议是:「在系统提示里写清楚'请谨慎调用工具'就好了。」

2026 年 7 月,一个专门测这件事的基准跑出了结论:这句话不仅没用,还可能让结果变差。

先看它测出来的东西(GuardianAgentBench,arXiv:2607.20982,2026-07-23 发布):

580 个场景 / 6 个领域 / 3 个生产级框架(LangChain、LlamaIndex、Vectara)/ 6 个模型

81 个工具 / 1,177 次连续调用 / 182 个场景含对抗性修改

最强配置的整体准确率:74.8%

四分之一的任务失败。 而这些是当前最前沿的模型 + 成熟的编排框架。

但真正值得看的不是74.8%,是它把失败拆开之后暴露的东西。

一、★ 最贵的发现:两种相反的失败模式

评测发现,强模型和弱模型的失败方式是完全相反的:

强模型(Claude Opus 4.5 这类)

主要失败 ------ 漏调该调的工具

占比 ------ 漏调占其失败的 52--57%

表现 ------ 明明该查,却靠自己的权重直接答

弱模型(DeepSeek-V3.2、Qwen3-Max 这类)

主要失败 ------ 乱调不该调的工具

占比 ------ 错选 23.6--25.3%、重复调用 28.7--32.2%

表现 ------ 疯狂重试同一个工具

打个比方:

● 强模型像一个谨慎的新人------你说查一下订单号,它觉得「我应该知道」,于是不查,直接编一个给你。

● 弱模型像一个焦虑的实习生------你让它查订单,它查三遍,每遍参数都不一样,还不停换工具。

★ 关键在于:这两种失败,用同一种解法是无效的

这条是全文最值钱的地方。

如果你的护栏是「鼓励多查、别偷懒」,那对弱模型是灾难(它本来就乱调); 如果你的护栏是「严格限制、少调用」,那对强模型是灾难(它本来就漏调)。

一条提示词不可能同时治好两种病。

评测里有个更扎心的数据------「工具调用顺序错了」只占全部失败的 0.6--4.4%,是五类失败里最少的一类。

而很多团队的 Agent 评测里,「有没有按正确顺序调工具」却是个高频指标。

我们正在用最重的权重,去考核模型做得最好的一项。

二、★ Prompt 修不了这件事

既然失败分两种,那解法必须分两种。既然解法是代码,那就得看提示词到底管不管用。

评测组做了一件很直接的事:在系统提示里加安全指令,看会怎样。

结果:

DeepSeek-V3.2 +5.5 分

Claude +0.4 分

Gemini +0.3 分

GPT-5.2 Pro −0.3 分 ← 退步

从 +5.5 到 −0.3。 也就是说,写得好的安全提示可能有用,写得一般的完全没用,写歪的还倒退。

对比一下真正管用的东西------执行时护栏(在工具执行前拦截,检查参数、必调工具、相关性/成本):

恢复19.9% 的失败

误报率只有 0.5%

全部六个模型都涨,幅度 2.8--7.7 分

19.9% 的失败被挡住,代价是 0.5% 的误伤。 而最好的提示词是 −0.3。

架构上的结论很直接:

把工具策略当代码写,别当提示词写。

护栏应该坐在模型的决策和副作用之间,返回三种结果:通过 / 带纠正反馈重试 / 直接拦下并转人工。

三、★★ 更狠的一条:多步比多工具危险得多

如果只让我记一个数字,是这个。

以Claude Opus 4.5 为例,三种配置下的整体表现:

工具数量 1 个工具 78.2 分 → 7 个工具 62.3 分 掉 15.9 分

顺序深度 1轮 82.3 分 → 7 轮 51.2 分 掉 31.1 分

顺序深度的伤害是工具数量伤害的近两倍。

为什么?工具多顶多是选择变难;但步骤深会出现一串新问题:

● 该记的状态丢了

● 跳过前置检查

● 把被污染的中间结果一路带下去

● 最初的意图早就模糊了,还在往前冲

这里有个很容易踩的坑:

一次两步的漂亮演示,什么都证明不了。

很多团队做验证时跑通了一个 1--2 步的 happy path,就觉得「这个 Agent 上线没问题」。而 7 步的流程才是线上真实的形状。

安全测试的轮次深度应该独立于工具数量去测。

四、还有一条数据值得单独说:工具排序错误是最不重要的

前面提了,这里再说一次,因为反直觉:

五类失败的占比(Claude Opus 4.5 为例):

漏调该调的工具 45.8--48.0%

重复调用 20.2--22.4%

错选工具(弱模型) 23.6--25.3%

★ 顺序错误 0.6--4.4% ← 五类里最少

在这个规模下------1 到 7 个工具、1 到 8 轮------「排序」这件事基本已经解决了,而「覆盖」和「选择」没有。

所以如果你的 Agent 评测还在给「有没有按正确顺序调工具」高权重,你考核的是模型做得最好的那一项。

另外还有个更反直觉的:重试次数和准确率几乎不相关。

数据显示,失败后「再试一次同一个工具」占了 44--76% 的后续动作,但重试倾向和准确率只是弱相关------重试多的模型,有的同时排在榜首,有的排在榜尾。

区别在于:你的恢复动作对不对得上真正的失败原因。如果压根不是参数问题,重试一万次也是错的。

五、那具体怎么落地

我把评测的结论翻译成几条能直接用的:

① 先测你的 Agent 属于哪种失败模式

不要一上来就写护栏。先造一批真实场景,跑一遍,看它到底是不调、乱调、还是漏调。

● 漏调为主 → 加「必调工具覆盖检查」

● 乱调为主 → 加「相关性/成本/频率控制」

② 护栏放在执行前,不放在提示词里

关键点:护栏要在完整交互上下文上判断这次调用,且必须能阻断------返回一个「不允许」,而不是只给个建议。

判定不了的时候,留一个转人工的口子。

③ 工具数控制在 15--20 以内

超过这个数,准确率掉得快。真要更多,就分层:先用一个路由模型挑出 5--10 个相关的,再让执行模型在缩减后的集合里干活。

④ 压工具链长度,别压工具数

砍工具集的收益远小于砍链路深度。把 7 步流程拆成两段,各自验证,比给 Agent 多塞 5 个工具有用得多。

⑤ 硬边界用确定性规则,别交给模型判断

租户隔离、写权限、金额上限这类,必须是代码规则,不能指望模型每次都记得。

模型只适合做上下文分类这类模糊判断。

六、最后

这篇的核心其实只有一句:

Agent 的可靠性问题,不是「模型不够聪明」,是「控制没放在正确的位置」。

那句流传最广的建议------「在提示词里写清楚要谨慎」------在实测里是 +5.5 到 −0.3 分的区间。

而真正管用的东西是:在工具执行前插一道程序,把策略写成代码。

护栏恢复了 19.9% 的失败,误报 0.5%。这个性价比,值得你今天就加一道。

顺便说一句,我把这几篇的选题和核查过程都记在笔记里了,包括我实测时踩的坑(有一版核对脚本误报了35 段,查下来全是格式差异不是内容丢失)。如果你在做类似的东西,可以对着那几条判据自查一遍。

相关推荐
土豆3591 小时前
那个叫 fix bug 的提交,改了 140 万行
人工智能
随风@飘扬1 小时前
CCS Theia中F28035 工程调试连接排障记录
人工智能
用户7275107796311 小时前
程序员第一次控制工业步进电机:Python + Modbus RTU,从串口报文到自动定位(附可运行代码)
人工智能
AI袋鼠帝1 小时前
WorkBuddy悄悄干了件大事,下一代Office真来了!
人工智能·agent
浮链序1 小时前
用 Claude Haiku 5.5 做子智能体路由,把 Agent 成本砍掉六成
人工智能·python·llm
IT_陈寒1 小时前
为什么你应该学习JavaScript?
前端·人工智能·后端
谁在黄金彼岸1 小时前
Qwen-Image-2512-vs-2.1-实测对比
人工智能
ProbeX1 小时前
Ollama到底是什么?能跑多大模型?
人工智能
梧桐AI1 小时前
手写ReAct Agent:从mock循环到公网部署的完整记录
人工智能