DevEval: A Manually-Annotated Code Generation Benchmark Aligned with Real-World Code Repositories
作者: Jia Li, Ge Li, Yunfei Zhao, Yongmin Li, Huanyu Liu, Hao Zhu, Lecheng Wang, Kaibo Liu, Zheng Fang, Lanshen Wang, Jiazheng Ding, Xuanming Zhang, Yuqi Zhu, Yihong Dong, Zhi Jin, Binhua Li, Fei Huang, Yongbin Li
分类: cs.CL, cs.SE
发布日期: 2024-05-30
备注: Accepted by the 62nd Annual Meeting of the Association for Computational Linguistics (ACL 2024). arXiv admin note: substantial text overlap with arXiv:2404.00599, arXiv:2401.06401
💡 一句话要点
DevEval:一个与真实代码仓库对齐的手动标注代码生成基准
🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)
关键词: 代码生成 大型语言模型 评估基准 真实代码仓库 软件开发
📋 核心要点
- 现有代码生成基准与真实代码仓库存在较大差距,无法准确评估LLM在实际场景中的编码能力。
- DevEval通过对齐代码和依赖分布,并由开发者进行全面标注,构建更贴近真实场景的评估基准。
- 实验表明,现有LLM在DevEval上的性能远低于预期,揭示了其在真实代码仓库中的局限性。
📝 摘要(中文)
大型语言模型(LLM)的编码能力评估仍然是一个开放性问题。现有基准与真实代码仓库的对齐性较差,不足以评估LLM的编码能力。为了解决这一知识差距,我们提出了一个新的基准DevEval,它具有三个优点。(1) DevEval在多个维度上与真实代码仓库对齐,例如代码分布和依赖分布。(2) DevEval由13位开发人员进行标注,包含全面的注释(例如,需求、原始仓库、参考代码和参考依赖)。(3) DevEval包含来自117个仓库的1,874个测试样本,涵盖10个流行的领域(例如,互联网、数据库)。基于DevEval,我们提出了仓库级别的代码生成,并在DevEval上评估了8个流行的LLM(例如,gpt-4、gpt-3.5、StarCoder 2、DeepSeek Coder、CodeLLaMa)。我们的实验揭示了这些LLM在真实代码仓库中的编码能力。例如,在我们的实验中,gpt-4-turbo的最高Pass@1仅为53.04%。我们还分析了LLM的失败案例,并总结了它们的缺点。我们希望DevEval能够促进LLM在真实代码仓库中的发展。DevEval、提示和LLM的预测已经发布。
🔬 方法详解
问题定义:现有代码生成基准无法很好地代表真实世界的代码仓库,导致对大型语言模型(LLM)的评估结果与实际应用场景存在偏差。这些基准在代码分布、依赖关系等方面与真实仓库存在差异,使得LLM在基准上表现良好,但在实际项目中却难以胜任。因此,需要一个更贴近真实代码仓库的评估基准,以更准确地衡量LLM的编码能力。
核心思路:DevEval的核心思路是构建一个与真实代码仓库在多个维度上对齐的评估基准。通过从真实仓库中选取样本,并由开发者进行详细标注,确保基准能够反映真实项目的复杂性和多样性。这种设计旨在弥合现有基准与实际应用之间的差距,从而更准确地评估LLM的编码能力。
技术框架:DevEval的构建流程主要包括以下几个阶段:1) 数据收集:从GitHub等代码托管平台收集大量的开源代码仓库。2) 样本选择:根据代码分布、依赖关系等指标,选取具有代表性的样本。3) 人工标注:由13位开发者对选取的样本进行详细标注,包括需求描述、原始仓库链接、参考代码和参考依赖等。4) 基准构建:将标注好的样本整理成DevEval基准,并提供相应的评估工具和指标。
关键创新:DevEval最重要的技术创新点在于其与真实代码仓库的对齐性。与现有基准相比,DevEval在代码分布、依赖关系等方面更接近真实项目,从而能够更准确地评估LLM的编码能力。此外,DevEval还采用了人工标注的方式,确保了标注的质量和准确性。
关键设计:DevEval的关键设计包括:1) 样本选择策略:采用多种指标来衡量代码仓库的代表性,例如代码规模、活跃度、依赖关系等。2) 标注规范:制定详细的标注规范,确保标注的一致性和准确性。3) 评估指标:采用Pass@k等常用的代码生成评估指标,并根据DevEval的特点进行调整。
🖼️ 关键图片
📊 实验亮点
实验结果表明,现有LLM在DevEval上的性能远低于预期。例如,即使是强大的gpt-4-turbo模型,其Pass@1指标也仅为53.04%。这表明现有LLM在处理真实代码仓库中的复杂任务时仍然存在很大的局限性。此外,研究还分析了LLM的失败案例,并总结了其在代码生成过程中常见的错误类型。
🎯 应用场景
DevEval可用于评估和改进大型语言模型在真实代码仓库中的编码能力,推动LLM在软件开发领域的应用。通过使用DevEval,开发者可以更准确地了解LLM的优缺点,并针对性地进行优化,从而提高LLM在实际项目中的表现。此外,DevEval还可以用于比较不同LLM的编码能力,为开发者选择合适的LLM提供参考。
📄 摘要(原文)
How to evaluate the coding abilities of Large Language Models (LLMs) remains an open question. We find that existing benchmarks are poorly aligned with real-world code repositories and are insufficient to evaluate the coding abilities of LLMs. To address the knowledge gap, we propose a new benchmark named DevEval, which has three advances. (1) DevEval aligns with real-world repositories in multiple dimensions, e.g., code distributions and dependency distributions. (2) DevEval is annotated by 13 developers and contains comprehensive annotations (e.g., requirements, original repositories, reference code, and reference dependencies). (3) DevEval comprises 1,874 testing samples from 117 repositories, covering 10 popular domains (e.g., Internet, Database). Based on DevEval, we propose repository-level code generation and evaluate 8 popular LLMs on DevEval (e.g., gpt-4, gpt-3.5, StarCoder 2, DeepSeek Coder, CodeLLaMa). Our experiments reveal these LLMs' coding abilities in real-world code repositories. For example, in our experiments, the highest Pass@1 of gpt-4-turbo is only 53.04%. We also analyze LLMs' failed cases and summarize their shortcomings. We hope DevEval can facilitate the development of LLMs in real code repositories. DevEval, prompts, and LLMs' predictions have been released.