研究人员通过分析大语言模型(LLMs)将遗留 PHP 代码转换为 8.3 版本的能力,调查了使用 LLM 升级软件的可靠性。该研究聚焦于一种“简单捷径”场景:从具有显著遗留足迹的项目 WordPress 4.0 中提取单个文件,并要求 LLM 在保留其原始行为的同时“将此文件现代化”。为了确保客观的基准,研究人员评估了五种不同的 LLM,并对照两个基准进行测试:未经修改的原始文件以及由 Rector(一种专门的基于规则的现代化工具)生成的结果。

研究结果表明,当前的大语言模型经常降低而非改善可运行代码的质量。虽然 100 个测试文件中有 83 个在原始状态下通过了所有行为检查,但在尝试现代化改造后,表现最好的 LLM 仅保留了 59 个可运行的文件。相比之下,每个模型都破坏了 32 到 51 个先前可运行的文件,而修复的最多仅为 10 个。与仅破坏 7 个文件并修复 6 个文件的基于规则的 Rector 工具相比,可靠性差距变得非常显著。最值得注意的是,对于那些不需要任何实际更改即可兼容 PHP 8.3 的文件,LLM 在 36% 到 60% 的案例中引入了破坏性的回归错误,而 Rector 在这些情况中仅导致 8% 的此类错误。

这些失败的主要原因是引入了 PHP 引擎本身拒绝的基本语法错误,特别是关于类型声明的错误。由于该研究采用了单文件设置,AI 虽然可以看到内部结构,但缺乏项目上下文或外部依赖,因此模型难以对变量在更广泛系统中的交互做出安全的假设。研究人员得出结论,对基于 LLM 的现代化改造的评估必须区分成功的“现代化”(新功能/新语法)和“行为保留”。如果没有执行反馈或代理式工作流(即 AI 可以自行迭代纠正错误),单次提示的现代化改造仍极易对稳定的遗留系统造成不必要的损害。