论文

清晰但错误:基于 LLM 的代码现代化中的自我审查失败

Articulate but Wrong: Self-Review Failures in LLM-Based Code Modernization

模型评测模型能力评测

摘要

大语言模型 (LLM) 代理越来越多地用于将遗留代码迁移到现代堆栈。我们提出一个看似简单的问题:当 LLM 对遗留代码进行现代化改造时,是否可以依靠相同的模型来识别其自己的输出何时默默地改变可观察的行为?我们在平衡的 60 个片段遗留 Python-2 语料库上,在来自 7 个不同系列的 11 个生产 LLM 上运行 1,980 个真实的现代化调用,使用类型严格的行为预言机评估每个输出,然后要求每个模型判断其自己的输出是否保留行为。我们报告了四项发现。 (1) 语义保留漂移很普遍,并且与干净控制的基线明显分离:语义陷阱片段在 39.7% 的尝试中发生漂移,而在不需要真正现代化的良性控制代码上发生漂移的比例为 7.0%(+32.7 个百分点;每个 n=660)。 (2) 漂移集中于跨模型失败的特定片段:片段困难的成对模型一致性很高(平均 Pearson r=0.52),并且一小部分核心的数字语义片段对于几乎每个模型和每个提示短语都失败。 (3) 生成模型的自我审查并不是一个可靠的安全网:在所有语义漂移案例中,31.7% 的模型都默默地得到了生成它们的同一模型的认可 (83/262),并且每个模型的自我失误率具有很强的双峰性——从五个模型的 0% 到一个广泛部署的模型的 100%——其中几个模型明确阐明了破坏其输出的 Py2/Py3 语义区别,然后声明行为保留。 (4) 模型能力和价格的漂移率是非单调的:每个模型的漂移率范围为 5.6%-46.7%,并且不能清晰地跟踪模型能力,表明失败是任务结构性的,而不是由模型规模驱动的。所有代码、提示、60 个片段语料库、行为预言、输出提取器和原始模型输出均已发布。