摘要
大型语言模型 (LLM) 在自然语言处理任务上的强大性能引发了对其在代码生成中应用的广泛讨论。最近的研究表明,多种采样方法可以提高初始代码生成的准确性,或者可以使用程序修复方法来改进代码。然而,这些方法受限于LLM的低效率和有限的推理能力。在这项工作中,我们提出了一种LLM编程工作流程 (LPW),旨在在一个结构化的两阶段工作流程中改进初始代码生成和后续改进。具体来说,在解决方案生成阶段,LLM首先概述一个解决方案计划,将问题分解成可管理的子问题,然后通过可见的测试用例验证生成的解决方案计划。随后,在代码实现阶段,LLM根据解决方案计划及其验证初步起草代码。如果生成的代码未能通过可见测试,则计划验证将作为预期的自然语言解决方案,为纠正错误的改进过程提供信息。我们进一步介绍了SLPW,它是LPW的一种采样变体,它最初生成多个解决方案计划和计划验证,为每个计划及其验证生成一个程序,并在必要时改进每个程序,直到一个程序成功通过可见测试。与各种现有LLM上的最先进方法相比,我们的实验结果表明,LPW在已建立的文本到代码生成基准测试中将Pass@1准确率提高了高达16.4%,尤其是在具有挑战性的基准测试中,改进幅度约为10%。此外,SLPW在各种基准测试中比LPW提高了高达5.6%,并在各种基准测试中取得了新的最先进的Pass@1准确率,例如,在HumanEval上达到98.2%,在MBPP上达到84.8%,在APPS上达到64.0%,在CodeContest上达到35.3%,使用GPT-4o作为主干模型。