QualityFlow: An Agentic Workflow for Program Synthesis Controlled by LLM Quality Checks
作者: Yaojie Hu, Qiang Zhou, Qihong Chen, Xiaopeng Li, Linbo Liu, Dejiao Zhang, Amit Kachroo, Talha Oz, Omer Tripp
分类: cs.SE, cs.AI
发布日期: 2025-01-20 (更新: 2025-03-24)
💡 一句话要点
QualityFlow:基于LLM质量检查的程序合成Agent工作流
🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)
关键词: 程序合成 大型语言模型 Agent工作流 质量检查 自我调试
📋 核心要点
- 现有程序合成方法在处理复杂问题时,难以保证生成代码的正确性和鲁棒性,尤其是在测试用例存在缺陷的情况下。
- QualityFlow的核心思想是构建一个由多个LLM Agent组成的动态工作流,通过LLM质量检查器模拟程序执行,从而指导代码生成和调试过程。
- 实验结果表明,QualityFlow在多个程序合成基准测试中取得了显著的性能提升,尤其是在更严格的EvalPlus评估中。
📝 摘要(中文)
本文提出了一种用于程序合成的动态Agent工作流QualityFlow。给定编程问题的英文描述和一组单元测试,模型的目标是合成能够解决问题并通过测试的正确程序。QualityFlow包含类似软件开发团队的大型语言模型(LLM) Agent,包括代码生成、测试和自我调试。我们提出了LLM质量检查器,它显式地“想象”合成程序的执行是否符合单元测试。质量检查动态地控制工作流,包括提交最终答案、澄清问题陈述和恢复先前工作流步骤等操作。实验表明,质量检查器可以精确地接受任何正确的程序,减轻错误的合成测试,并防止潜在的工作流偏差。QualityFlow在四个程序合成基准测试中建立了最先进的结果:MBPP、HumanEval以及来自MBPP-EvalPlus和HumanEval-EvalPlus的更严格的评估。
🔬 方法详解
问题定义:论文旨在解决程序合成任务中,现有方法难以保证生成代码质量的问题。现有方法容易受到测试用例质量的影响,且缺乏有效的自我调试机制,导致在复杂问题上表现不佳。
核心思路:论文的核心思路是引入一个LLM质量检查器,该检查器能够“想象”程序的执行过程,并判断其是否符合单元测试的要求。通过这种方式,可以提前发现潜在的错误,并指导代码生成和调试过程,从而提高生成代码的质量。
技术框架:QualityFlow包含多个LLM Agent,模拟软件开发团队的角色,包括代码生成、测试和自我调试。整体流程如下:1) 代码生成Agent根据问题描述生成代码;2) LLM质量检查器评估生成的代码是否符合单元测试;3) 如果质量检查器认为代码存在问题,则触发调试Agent进行调试;4) 重复上述过程,直到生成满足要求的代码或达到最大迭代次数。
关键创新:论文最重要的技术创新点是LLM质量检查器的引入。与传统的基于执行的测试方法不同,LLM质量检查器通过“想象”程序的执行过程来进行评估,从而避免了对实际执行环境的依赖,并且能够更早地发现潜在的错误。
关键设计:LLM质量检查器的设计是关键。它需要具备理解代码逻辑和单元测试的能力,并能够准确地判断代码是否符合测试要求。论文中可能使用了特定的prompt工程技术来提高LLM质量检查器的性能,但具体细节未知。此外,工作流的动态控制机制也是一个关键设计,它需要根据LLM质量检查器的反馈来调整代码生成和调试策略。
🖼️ 关键图片
📊 实验亮点
QualityFlow在MBPP、HumanEval、MBPP-EvalPlus和HumanEval-EvalPlus四个程序合成基准测试中取得了state-of-the-art的结果。尤其是在更严格的EvalPlus评估中,QualityFlow表现出显著的优势,表明其具有更强的鲁棒性和泛化能力。具体的性能提升数据未知,但摘要中明确指出QualityFlow建立了最先进的结果。
🎯 应用场景
QualityFlow具有广泛的应用前景,可以应用于自动化软件开发、代码生成、程序修复等领域。通过提高程序合成的质量和效率,可以降低软件开发的成本,并加速软件的创新。此外,该方法还可以用于教育领域,帮助学生更好地理解编程概念和调试技巧。
📄 摘要(原文)
We introduce QualityFlow, a dynamic agentic workflow for program synthesis. Given the English description of a programming problem and a set of unit tests, the model's goal is to synthesize the correct program that solves the problem and passes the tests. QualityFlow includes large language model (LLM) agents resembling a software development team, including code generation, testing, and self-debugging. We propose the LLM Quality Checker, which explicitly "imagines" whether the synthesized programs' execution would conform to the unit tests. The Quality Checks dynamically control the workflow, including actions to submit the final answer, clarify the problem statement, and revert previous workflow steps. Our experiments show that the Quality Checker can precisely accept any correct program, mitigate faulty synthesized tests, and prevent potential workflow deviation. QualityFlow establishes the state-of-the-art results on four program synthesis benchmarks: MBPP, HumanEval, and stricter evaluations from MBPP-EvalPlus and HumanEval-EvalPlus.