微软研究人员发现,智能体运行失败时首个报错通常并非真正原因,并提出九类结构化分类法以准确诊断故障。
AI translation, not an official translation. Refer to the original for technical details.
Adapted from @undefinedKi微软研究人员刚刚找到了你的AI智能体失败的原因。解决方法简单得令人难以置信,而且我还没见过任何人这样做。 他们手动标注了170次失败的智能体运行记录。这项工作耗时62小时,由三名标注员完成,对每次失败原因的判断几乎达到了完全一致。 发现:运行轨迹中的第一个错误,通常并不是导致任务失败的原因。 举个例子: 一个网页智能体在第3步未能下载某个PDF文件。看起来像是故障原因。但编排器恢复了过来,切换到另一个智能体,继续执行。 任务实际上在第33步宣告失败——一个文件被保存到某个路径,随后却从一个从未存在过的路径中读取。前后相隔三十步,而修复第一个错误毫无意义。 所以问题就在这里。对于日志中的每一个错误,都要问:智能体是否从中恢复了? 它是否重试了?是否切换了工具?是否找到了另一条路?是否还在持续推进?如果是,那个错误只是噪音,系统已经自行存活了下来。继续往后扫描。 它第一个始终未能从中恢复的错误,才是你真正要修复的缺陷。 然后,在你做任何改动之前,先给失败类型命名,因为每种类型的修复方式各不相同。他们的九个分类可以浓缩为以下内容: 它跳过了被明确要求执行的某个步骤。它凭空编造了一个不存在于任何输入中的事实。它用错误的参数调用了某个工具。它误读了某个工具返回的结果。它误解了目标。它缺少没有人提供给它的信息。它被要求完成没有任何工具能够实现的任务。某个护栏阻止了它。或者某个环节就是挂掉了。 参数错误是结构定义问题。误读输出是解析问题。跳过步骤是提示词问题。将三者混为一谈,正是智能体调试感觉永无止境的原因。 每次都把标签写下来。在经历十次失败运行之后,你得到的是一个分布,而不仅仅是一种感觉。 最后,来自他们测试的一点发现。一个面前没有任何证据的评判者,几乎把所有问题都标注为"未遵循指令",因为在看不清真实情况时,这是最省力的答案。 如果这也是你的默认诊断,那你只是在猜测。