DevEval: Evaluating Code Generation in Practical Software Projects

📄 arXiv: 2401.06401v4 📥 PDF

作者: Jia Li, Ge Li, Yunfei Zhao, Yongmin Li, Zhi Jin, Hao Zhu, Huanyu Liu, Kaibo Liu, Lecheng Wang, Zheng Fang, Lanshen Wang, Jiazheng Ding, Xuanming Zhang, Yihong Dong, Yuqi Zhu, Bin Gu, Mengfei Yang

分类: cs.SE, cs.AI, cs.CL

发布日期: 2024-01-12 (更新: 2024-03-06)

备注: We are re-checking this benchmark and repeating related experiments. New versions of DevEval will be released later


💡 一句话要点

提出DevEval基准以解决代码生成评估不一致问题

🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)

关键词: 代码生成 大型语言模型 评估基准 软件项目 开发者经验 实际应用 机器学习 人工智能

📋 核心要点

  1. 现有的代码生成评估方法与实际软件项目存在不一致,导致LLMs的能力评估不准确。
  2. 提出DevEval基准,通过严格的样本收集流程,确保与实际开发者经验相符。
  3. 在DevEval上评估的LLMs表现不佳,例如gpt-3.5-turbo的最高Pass@1仅为42,揭示了实际能力的局限性。

📝 摘要(中文)

如何评估大型语言模型(LLMs)在代码生成中的表现仍然是一个开放性问题。现有的基准测试往往与实际软件项目不一致,例如程序分布不真实、依赖关系不足以及项目规模较小。因此,LLMs在实际项目中的能力仍不明确。本文提出了一种新的基准DevEval,旨在与开发者在实际项目中的经验相一致。DevEval通过严格的流程收集,包含来自119个实际项目的2690个样本,覆盖10个领域。与之前的基准相比,DevEval在多个维度上与实际项目对齐。我们在DevEval上评估了五种流行的LLMs,揭示了它们在代码生成中的实际能力,并讨论了代码生成面临的挑战和未来方向。我们开源了DevEval,希望能促进实际项目中的代码生成发展。

🔬 方法详解

问题定义:本文旨在解决现有代码生成评估基准与实际软件项目不一致的问题,现有方法在程序分布、依赖关系和项目规模等方面存在不足。

核心思路:提出DevEval基准,旨在通过真实的项目样本和开发者经验来评估LLMs的代码生成能力,以更好地反映实际应用场景。

技术框架:DevEval基准的构建包括数据收集、样本筛选和评估指标设计等多个阶段,确保数据的真实性和多样性。

关键创新:DevEval在多个维度上与实际项目对齐,特别是在程序分布和依赖关系的真实度上,与现有基准相比具有显著的创新性。

关键设计:在样本收集过程中,确保覆盖10个不同领域,并通过严格的筛选标准来保证样本的质量和代表性。

🖼️ 关键图片

fig_0
fig_1
fig_2

📊 实验亮点

在DevEval基准上进行的实验显示,gpt-3.5-turbo的最高Pass@1仅为42,表明当前LLMs在实际代码生成任务中的能力有限。这一结果突显了DevEval基准在评估LLMs实际能力方面的重要性。

🎯 应用场景

DevEval基准的提出为代码生成模型的评估提供了新的标准,能够帮助开发者更准确地理解和评估LLMs在实际项目中的表现。其潜在应用领域包括软件开发、自动化测试和智能编程助手等,未来可能推动代码生成技术的进一步发展与应用。

📄 摘要(原文)

How to evaluate Large Language Models (LLMs) in code generation is an open question. Many benchmarks have been proposed but are inconsistent with practical software projects, e.g., unreal program distributions, insufficient dependencies, and small-scale project contexts. Thus, the capabilities of LLMs in practical projects are still unclear. In this paper, we propose a new benchmark named DevEval, aligned with Developers' experiences in practical projects. DevEval is collected through a rigorous pipeline, containing 2,690 samples from 119 practical projects and covering 10 domains. Compared to previous benchmarks, DevEval aligns to practical projects in multiple dimensions, e.g., real program distributions, sufficient dependencies, and enough-scale project contexts. We assess five popular LLMs on DevEval (e.g., gpt-4, gpt-3.5-turbo, CodeLLaMa, and StarCoder) and reveal their actual abilities in code generation. For instance, the highest Pass@1 of gpt-3.5-turbo only is 42 in our experiments. We also discuss the challenges and future directions of code generation in practical projects. We open-source DevEval and hope it can facilitate the development of code generation in practical projects.