论文

用于编程的大型语言模型:实际上修复或重新实现错误的代码?

Large Language Models for Programming: Actually Fixing or Reimplementing Incorrect Code?

模型评测模型行为与机制分析

摘要

最近的研究表明,大型语言模型可以有效地解决各种编程环境中的问题并修复错误,包括竞争性编程。现有方法主要独立评估LLM在问题解决或错误修复方面的表现,但没有探索这两种能力之间的关系。这项工作的重点是确定与人工编写的补丁相比,LLM 在修复错误时偏离有缺陷的解决方案有多少,以及是否存在生成全新解决方案的偏见。我们用来自 Codeforces 的几个用户的所有提交 ($\sim$ 3000) 构建一个数据集,并将每个有缺陷的提交与其相应的人工修复进行匹配。通过使用错误解决方案和人工修复之间的相似性作为基线,我们评估了 3 个 OpenAI GPT 模型(gpt-5-nano、gpt-5-mini、gpt-5.1)上 LLM 生成的错误修复的质量。我们使用 Codeforces-R1 数据集检查生成的解决方案是否解决了问题,这是一个公开可用的数据集,其中包含使用 DeepSeek-R1 模型生成的测试。我们的研究结果表明,与人工修复相比,大语言模型倾向于修改超出必要数量的行,并且在某些情况下,会生成全新的解决方案。我们还观察到,当允许从头开始生成解决方案而不是修补有缺陷的提交时,大语言模型可以正确解决更多问题,即使这些提交接近人工补丁。这对于人工智能辅助编程工具的设计具有重要意义,特别是在支持用户调试过程和促进增量问题解决策略而不是解决方案替换方面。