需要几次尝试?跨模型规模比较代码生成的迭代自修复
How Many Tries Does It Take? Iterative Self-Repair in LLM Code Generation Across Model Scales and Benchmarks
摘要
大语言模型 在第一次尝试时经常无法生成正确的代码,但大多数基准测试都是在单次设置中对其进行评估。我们研究了跨三个系列以及开放权重和专有提供商的七个模型的迭代自我修复(将执行错误反馈给模型进行纠正):Llama 3.1 8B、Llama 3.3 70B、Llama 4 Scout(MoE,16 名专家)、Llama 4 Maverick(MoE,128 名专家)、Qwen3 32B、Gemini 2.5 Flash 和 Gemini 2.5 专业版。在 HumanEval(164 个问题)和 MBPP Sanitized(257 个问题)上,最多尝试五次,自我修复普遍提高了通过率:HumanEval 上为 +4.9 到 +17.1 pp,MBPP 上为 +16.0 到 +30.0 pp。 Gemini 2.5 Flash 实现了最高的最终通过率(96.3% HumanEval,93.8% MBPP)。大多数收益集中在前两轮。错误类型分析显示,断言错误(逻辑错误)最难修复,约为 45%,而语法和名称错误的修复率要高得多,这与 LLM 自我更正的局限性的更广泛发现有关。之前的工作发现较弱的模型无法自我修复或需要 微调;我们表明,即使在 8B 规模下,现代指令调整模型也能通过单独提示取得成功。我们还首次对用于自修复的密集架构和 MoE 架构进行了比较,并将修复与重采样权衡分析扩展到现代模型。提示消融表明,对于有能力的模型,相对于最小提示,思想链修复可产生高达 +5.5 pp 的额外自我修复增益(以修复增量的改进来衡量)。