Planning-Driven Programming: A Large Language Model Programming Workflow
作者: Chao Lei, Yanchuan Chang, Nir Lipovetzky, Krista A. Ehinger
分类: cs.SE, cs.AI
发布日期: 2024-11-21 (更新: 2025-05-23)
🔗 代码/项目: GITHUB
💡 一句话要点
提出Planning-Driven Programming,通过规划驱动提升大语言模型代码生成能力。
🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)
关键词: 大语言模型 代码生成 规划驱动 程序改进 文本到代码
📋 核心要点
- 现有代码生成方法依赖持续的程序改进,但受限于LLM效率和推理能力。
- LPW通过规划驱动,先生成解决方案计划,再进行代码实现和验证,提升代码质量。
- 实验表明,LPW在多个基准测试中显著提升Pass@1准确率,达到新的SOTA。
📝 摘要(中文)
大型语言模型(LLMs)的强大性能引发了对其在代码生成应用中的广泛讨论。最近的研究表明,通过可见测试持续改进程序可以提高LLMs的代码生成准确性。然而,这些方法受到LLMs效率低下和推理能力有限的制约。本文提出了一种LLM编程工作流程(LPW),旨在通过结构化的两阶段工作流程来改进初始代码生成和后续改进。具体来说,解决方案生成阶段制定解决方案计划,然后通过可见测试验证以指定预期的自然语言解决方案。随后,代码实现阶段根据解决方案计划及其验证起草初始代码。如果生成的代码未通过可见测试,则计划验证将作为预期解决方案,从而一致地为纠正错误的改进过程提供信息。与各种现有LLMs上的最新方法相比,LPW在已建立的文本到代码生成基准测试中,显著提高了高达16.4%的Pass@1准确率。LPW还使用GPT-4o作为主干,实现了新的最先进的Pass@1准确率,在HumanEval上达到98.2%,在MBPP上达到84.8%,在LiveCode上达到59.3%,在APPS上达到62.6%,在CodeContest上达到34.7%。
🔬 方法详解
问题定义:现有的大语言模型在代码生成任务中,虽然可以通过持续的程序改进来提高准确性,但由于LLM本身效率较低,且推理能力有限,导致代码生成质量提升受限,难以达到令人满意的效果。尤其是在复杂任务中,LLM容易出现逻辑错误和效率问题。
核心思路:本文的核心思路是引入“规划”的概念,将代码生成过程分解为“解决方案规划”和“代码实现”两个阶段。通过先制定清晰的解决方案计划,再根据计划生成代码,从而提高代码的准确性和效率。这种方法借鉴了人类解决复杂问题的习惯,即先思考清楚再动手。
技术框架:LPW包含两个主要阶段:1) 解决方案生成阶段:LLM首先生成一个解决方案计划,该计划用自然语言描述解决问题的步骤。然后,通过可见测试验证该计划的正确性。2) 代码实现阶段:LLM根据验证后的解决方案计划生成初始代码。如果生成的代码未能通过可见测试,则利用计划验证的结果指导代码的改进过程。整个流程形成一个闭环,不断迭代优化代码质量。
关键创新:LPW的关键创新在于将“规划”显式地引入到LLM的代码生成流程中。与以往直接生成代码的方法不同,LPW首先生成一个可验证的解决方案计划,然后基于该计划生成代码。这种方法可以有效提高代码的准确性和可维护性,并降低调试难度。此外,计划验证的结果可以作为代码改进的指导信息,从而提高代码改进的效率。
关键设计:LPW的关键设计包括:1) 解决方案计划的表示形式:使用自然语言描述解决问题的步骤,方便LLM理解和生成。2) 可见测试的设计:选择合适的测试用例,能够有效验证解决方案计划和代码的正确性。3) 代码改进策略:利用计划验证的结果,指导LLM进行有针对性的代码改进。
🖼️ 关键图片
📊 实验亮点
LPW在多个文本到代码生成基准测试中取得了显著的性能提升。例如,在HumanEval上达到98.2%的Pass@1准确率,在MBPP上达到84.8%,在LiveCode上达到59.3%,在APPS上达到62.6%,在CodeContest上达到34.7%。与现有方法相比,LPW在这些基准测试中平均提高了16.4%的Pass@1准确率,证明了其有效性。
🎯 应用场景
该研究成果可应用于自动化软件开发、代码辅助生成、智能编程教育等领域。通过提高代码生成质量和效率,可以降低软件开发成本,缩短开发周期,并为程序员提供更智能化的开发工具。未来,该方法有望扩展到更复杂的软件系统和编程语言中。
📄 摘要(原文)
The strong performance of large language models (LLMs) raises extensive discussion on their application to code generation. Recent research suggests continuous program refinements through visible tests to improve code generation accuracy in LLMs. However, these methods suffer from LLMs' inefficiency and limited reasoning capacity. In this work, we propose an LLM programming workflow (LPW) designed to improve both initial code generation and subsequent refinements within a structured two-phase workflow. Specifically, the solution generation phase formulates a solution plan, which is then verified through visible tests to specify the intended natural language solution. Subsequently, the code implementation phase drafts an initial code according to the solution plan and its verification. If the generated code fails the visible tests, the plan verification serves as the intended solution to consistently inform the refinement process for correcting bugs. Compared to state-of-the-art methods across various existing LLMs, LPW significantly improves the Pass@1 accuracy by up to 16.4% on well-established text-to-code generation benchmarks. LPW also sets new state-of-the-art Pass@1 accuracy, achieving 98.2% on HumanEval, 84.8% on MBPP, 59.3% on LiveCode, 62.6% on APPS, and 34.7% on CodeContest, using GPT-4o as the backbone. Our code is publicly available at: https://github.com/you68681/lpw