内容提要
本文介绍如何设计能可靠自我纠正的AI代理,关键在于将反馈循环基于外部验证而非模型自身判断。通过构建代码生成代理示例,展示使用真实测试验证器、有限重试循环和结构化升级路径。还添加基于一致性的置信门控,生成独立第二方案确认正确性。强调自我纠正仅在外部信号存在时有效,并需设置重试上限和记录失败轨迹。
延伸解读
外部验证是自我纠正的前提
文章强调,AI代理的自我纠正只有在存在外部验证信号时才有效。例如,代码生成代理通过运行真实测试来验证输出,而不是依赖模型自身的判断。这种设计避免了模型自我确认的陷阱,确保纠正过程基于客观事实。对于其他任务,如研究或表单填写,也应找到类似的外部信号,如检索到的资料或模式验证,否则自我纠正可能只是浪费计算资源。
重试预算与升级路径的必要性
文章指出,无限制的重试循环可能导致高昂成本,例如一个文档处理代理在八小时内产生437美元的费用。因此,设计代理时必须设置硬性重试上限,并在达到上限后升级给人工处理。升级路径应记录完整的失败轨迹,包括规格、尝试次数和最后的反馈,以便人工接手时能快速理解问题。这种机制类似于传统系统中的死信队列,确保失败不会静默丢失。
一致性置信门控的实践价值
文章介绍了一种基于一致性的置信门控方法:生成两个独立的解决方案,并检查它们在原始测试和额外边界测试上是否一致。这种方法比模型自我报告的置信度更可靠,因为独立生成的两个方案若一致,则表明解决方案更可能正确。当两个方案不一致时,应升级给人工处理,因为这可能意味着测试不够严格,无法完全确定正确行为。
Q&A
为什么大语言模型不能可靠地自我纠正推理?
因为模型自我批评时使用的是与生成输出相同的权重和训练模式,不是独立的检查,容易陷入一致性陷阱,导致错误被重复确认。
设计自我纠正AI代理的关键条件是什么?
关键是要有外部验证信号,比如代码测试、检索到的文档或模式验证,而不是依赖模型自身的判断。
如何构建一个代码生成代理的自我纠正循环?
构建一个生成器,根据规格生成代码,然后用真实的测试文件运行pytest进行验证,如果失败则将测试输出作为反馈重新生成,并设置最大重试次数,超过则升级给人工处理。
什么是基于一致性的置信门控?
它是生成一个独立的第二解决方案,并检查它与第一方案在原始测试和额外边缘案例上是否一致,如果一致则确认正确,否则升级给人工。
为什么自我纠正循环必须设置重试上限?
因为无限制的重试循环可能导致高额成本,例如一个文档处理代理在8小时内产生了437美元的费用,设置上限可以防止类似问题。
当代理无法自我修复时,应该如何处理?
应该停止循环,记录完整的失败轨迹,并将问题升级给人工处理,确保没有静默失败。