同一个工具报错,换个位置交给智能体:ToolMaze显式错误成功率提高14.2个百分点
核心概要
工具调用失败后,智能体能否重试、改参数或停下报告,不只取决于报错文字,也取决于这段反馈以什么形式进入对话。研究在13个3B到70B的开源模型上固定报错内容、只改变投递方式,发现把失败调用保留在历史里、再用一条新的用户消息附上运行时说明和指引,能避免Llama模型在不可恢复错误上停不下来的问题;把这一形式做成推理引擎中的可选恢复层后,ToolMaze显式错误成功率在7–8B模型上提高14.2个百分点、在32–70B模型上提高10.5个百分点,而Loud/Quiet上没有可测增益。
深度剖析
同样的工具报错文字,换一种投递方式就会改变智能体下一步做什么:是重试同一个调用、改参数再调,还是停下告诉用户。 在客户端原样送达的形式下,六个7–35B开源模型里有五个在瞬时错误后很少重复调用,重复率在0到37%之间,其中一个一次都没有重复;可修复错误上的正确修正率只有2%到80%。 把报错改写成运行时说明后,这五个模型几乎总能做出正确动作;即使固定同一句指引,改写形式仍在四个模型上优于把指引附在工具消息末尾,且没有模型出现显著的反向差异。
保留失败调用、再追加一条新的用户消息,可以修掉“删掉失败记录”带来的停不下来问题。 删掉失败交换的选中形式让Llama-3.1-8B在不可恢复错误上继续调用工具,60次里0次停下;即使写入“不要再调用任何工具”也没有改变。 在失败交换之后新增一条用户消息,使该模型在60次中59次停下;在Llama-3.3-70B上,客户端原形式的停止率为95%,删历史形式为2%,保留历史并加新用户消息的形式为100%。
把这一形式实现为推理引擎中的可选恢复层,可以在不改动智能体本身的情况下改变其行为。 该层在请求渲染成聊天模板之前重写对话,只改写最后一条助手消息之后的失败结果,且默认关闭;它依据客户端标志、已知智能体的文本规则和通用错误前缀判断失败,无法确定时归为歧义、不给指引。 在ToolMaze上,开启该层使显式错误通过率在7–8B档提高14.2个百分点、在32–70B档提高10.5个百分点,无故障条件下没有可检测变化;在Loud/Quiet的24个多轮任务上没有可测增益,因为其缺失工具被归为歧义而不给指引。
启示与展望
已展示的范围是13个3B到70B开源模型、英文错误文本、贪心解码下的决策步比较,以及ToolMaze、Loud/Quiet两个公开基准和一个六任务的Qwen Code编码智能体评估;恢复层只改写最后一条助手消息之后的失败,且默认关闭。
增益主要由Llama模型的停止行为驱动,去掉两个Llama模型后合并差异明显缩小,Qwen2.5-7B在保留历史形式上反而更差;真实历史结果只来自六个会话的19个消息簇,留一法敏感性分析下p值可升至0.077;瞬时错误的指引假定重复调用会成功,而带副作用的工具可能因此重复写入,当前实现没有幂等性闸门。
