论文
用于生成有竞争力的代码的迭代测试和修复框架
An Iterative Test-and-Repair Framework for Competitive Code Generation
摘要
大语言模型 (LLM) 在代码生成方面取得了显着进步,但竞争性编程仍然是一个挑战。最近基于训练的方法通过使用带有执行反馈的强化学习 (RL) 改进了代码生成。最新的框架 CURE 进一步将测试生成纳入训练过程,在单个模型中联合训练编码器和测试器。在推理时,编码器生成许多候选程序,测试器根据问题描述生成测试。通过大部分生成测试的候选人将被选为最终答案。然而,CURE 有两个关键的局限性。首先,测试人员从不读取任何候选代码,因此其测试通常无法暴露特定于实现的错误。其次,编码器从头开始生成每个候选程序,并且永远不会根据失败的测试来修复有缺陷的程序。为了解决这些限制,我们提出了 FixAudit,它从一个新的角度来处理竞争性代码生成:从单个初始候选者开始,它通过有针对性的测试和修复调试周期迭代地改进候选者。该框架通过四个阶段训练一个具有两个专门角色的共享模型:修复器(Fixer),它根据失败的测试修复当前候选模型;审计器(Auditor),它读取候选代码以生成新的测试,以暴露其剩余的错误。我们根据三个基准评估 FixAudit:APPS、CodeContests 和 xCodeEval。应用于 7B 模型时,该框架在零样本设置下超越了同一模型系列中较大的 32B 基线的平均性能。与基于相同 7B 基本模型构建的强大基线相比,FixAudit 将平均 Pass@1 提高了 35.1% 至 36.8%,将平均 AvgPassRatio 提高了 7.1% 至 24.5%。