Is Your Code Generated by ChatGPT Really Correct? Rigorous Evaluation of Large Language Models for Code Generation

解决问题:本篇论文旨在解决使用大型语言模型(LLMs)生成代码的功能正确性评估问题。现有的代码评估数据集中的测试用例数量和质量都有限,无法全面评估生成代码的正确性。因此,本文提出了EvalPlus框架,通过自动测试用例生成来评估LLMs生成的代码的功能正确性。

关键思路:EvalPlus框架的关键思路是使用自动生成的测试用例来评估LLMs生成的代码的正确性。通过使用LLM和基于变异的输入生成器来生成大量新的测试输入,EvalPlus框架可以更全面地评估生成的代码的正确性。此外,本文还扩展了HUMANEVAL基准,并构建了HUMANEVAL+,其中包含81倍的额外生成测试用例,以进一步评估LLMs生成的代码的正确性。

其他亮点:本文的实验结果表明,HUMANEVAL+可以有效地捕捉到LLMs生成的错误代码,平均降低了15.1%的pass@k。此外,在HUMANEVAL中,本文还发现了一些不正确的ground-truth实现。本文的工作不仅表明了先前流行的代码综合评估结果不能准确反映LLMs进行代码综合的真实性能,而且还为通过自动测试输入生成来改进编程基准开辟了新的方向。

关于作者:本文的主要作者是Jiawei Liu、Chunqiu Steven Xia、Yuyao Wang和Lingming Zhang。他们分别来自美国加州大学洛杉矶分校和新加坡国立大学。在过去的研究中,Jiawei Liu等人在程序综合、程序分析和软件工程等领域发表了多篇论文。Chunqiu Steven Xia等人在程序综合、程序分析和机器学习等领域也有多篇论文发表。

相关研究:近期其他相关的研究包括:

  1. "CodeBERT: A Pre-Trained Model for Programming and Natural Language Processing" by Ke Wang, Xiaodong Liu, et al. from Microsoft Research Asia.

  2. "Learning to Synthesize Programs with Abstract Examples" by Yewen Pu, et al. from Stanford University.

  3. "DeepCoder: Learning to Write Programs" by Matej Balog, et al. from University of Oxford.

论文摘要:本文讨论了程序综合的研究,最近的方法主要是直接利用大型语言模型(LLM)根据自然语言编写的用户意图生成代码。代码评估数据集包含精心策划的综合问题和输入/输出测试用例,用于衡量各种LLM在代码综合方面的性能。然而,这些数据集中的测试用例在数量和质量上都存在限制,不能完全评估生成的代码的功能正确性。现有基准测试的这种限制引出了以下问题:在LLM时代,生成的代码是否真的正确?为了回答这个问题,我们提出了EvalPlus——一个代码综合基准测试框架,以严格评估LLM合成代码的功能正确性。简而言之,EvalPlus采用基础评估数据集,并使用自动输入生成步骤来产生和多样化大量新的测试输入,使用基于LLM和基于突变的输入生成器来进一步验证合成代码。我们扩展了流行的HUMANEVAL基准测试,并构建了HUMANEVAL+,其中包含81倍的额外生成测试。我们对14个流行的LLM进行了广泛的评估,结果表明,HUMANEVAL+能够捕捉到LLM合成的大量以前未发现的错误代码,平均减少了15.1%的pass@k!此外,我们甚至在HUMANEVAL中发现了几个不正确的基准实现。我们的工作不仅表明先前流行的代码综合评估结果不能准确反映LLM在代码综合方面的真实性能,而且还开辟了一条通过自动测试输入生成来改进编程基准测试的新方向。

内容中包含的图片若涉及版权问题,请及时与我们联系删除