遇见数据集

CodevBench

收藏
Hugging Face2024-09-20 更新2024-12-12 收录
官方服务:

资源简介:

Codev-Bench是一个细粒度的、真实世界的、仓库级别的、以开发者为中心的评估框架。它评估代码完成工具是否能够准确捕捉开发者的即时意图,并在多样化的细粒度上下文中建议适当的代码片段。该数据集不仅重现了用户在开发过程中可能遇到的各种子场景,还构建了基于单元测试的评估方法,以更准确地评估各种大型语言模型生成的代码质量。数据集包括从真实GitHub仓库中提取的单元测试类和函数,以及通过GPT-4辅助完成的环境依赖安装和单元测试执行。此外,数据集还包含了各种子场景的提示和预测响应,供研究人员和开发者使用。

Codev-Bench is a fine-grained, real-world, repository-level, developer-centric evaluation framework. It assesses whether code completion tools can accurately capture developers' immediate intentions and suggest appropriate code snippets within diverse fine-grained contexts. This dataset not only replicates a wide range of sub-scenarios that developers may encounter during the software development lifecycle, but also establishes a unit test-based evaluation methodology to more precisely assess the code quality generated by various large language models (LLMs). The dataset comprises unit test classes and functions extracted from real GitHub repositories, alongside environment dependency installation and unit test execution workflows assisted by GPT-4. Additionally, the dataset contains prompts and prediction responses across various sub-scenarios for researchers and developers to utilize.

创建时间:
2024-09-19
原始信息汇总

Codev-Bench 数据集概述

基本信息

  • 许可证: Apache 2.0
  • 任务类别: 文本生成
  • 语言: 英语
  • 标签: 代码生成
  • 数据规模: 1K<n<10K

简介

Codev-Bench(代码开发基准)是一个细粒度、真实世界、仓库级别和开发者中心的评估框架。该基准评估代码补全工具是否能够准确捕捉开发者的即时意图,并在多样化的细粒度上下文中建议适当的代码片段。

方法论

  • 数据提取: 从真实的GitHub仓库中提取单元测试类和函数,并通过GPT-4辅助完成环境依赖的安装和单元测试的执行。
  • 工具使用: 使用pytest trace提取单元测试的执行轨迹,使用tree-sitter解析目标函数的抽象语法树(AST)。

使用场景

数据集将开发者在IDE中的实时补全需求细分为以下部分:

  1. 场景1: 完成完整的代码块(包括函数、条件逻辑块、循环逻辑块、注释、普通语句等)。
    • 场景1.1: 待完成的代码块上下文完全完整。
    • 场景1.2: 待完成的代码块主体为空,但函数的外部上下文完整。
    • 场景1.3: 待完成的代码块后续上下文完全为空。
  2. 场景2: 完成特定代码块内的部分代码。
    • 场景2.1: 完成代码块内的部分代码。
    • 场景2.2: 代码块已完整,不应添加任何代码。
  3. 场景3: 基于其他文件中定义的类和函数完成代码。
  4. 场景4: 基于项目中相关和相似的代码完成代码。

数据下载

安装与验证

  • 环境创建: 推荐使用conda创建虚拟环境,并安装必要的依赖包。
  • 环境构建: 运行create_env.sh脚本构建执行环境。
  • 单元测试验证: 运行src/prepare.py脚本验证单元测试是否成功执行。

提示与预测

  • 提示结构: 提示信息包括函数名、单元测试ID、目标代码块的文件路径和行位置等。
  • 预测响应: 预测响应包括模型的原始响应和解析后的目标代码。

评估

  • 单元测试运行: 将预测代码填充到光标位置并运行相应的单元测试。
  • 结果总结: 运行src/evaluate.py脚本生成和总结评估结果。

实验结果

  • 场景1.1: 评估了部分流行的通用LLMs和代码LLMs在该子数据集上的表现。
搜集汇总
数据集介绍
CodevBench 数据集图片
构建方式
Codev-Bench数据集的构建方法基于真实GitHub仓库中的单元测试类和函数,通过GPT-4辅助完成环境依赖的安装和单元测试的执行。同时,使用pytest trace工具提取单元测试的执行轨迹,以确定每个单元测试相关的目标函数。随后,利用tree-sitter解析目标函数的抽象语法树(AST),从而识别出子函数、注释、逻辑块和语句等元素。这一过程确保了数据集的多样性和真实性,能够准确反映开发者在IDE中的实时自动补全需求。
特点
Codev-Bench数据集的特点在于其细粒度、真实场景和开发者中心化的评估框架。它不仅涵盖了生成完整函数的需求,还包括逻辑块、函数参数列表和普通语句的补全场景。数据集通过单元测试的方式评估生成代码的质量,确保模型能够准确捕捉开发者的即时意图。此外,数据集还引入了基于检索增强生成(RAG)的补全场景,进一步提升了模型的上下文理解能力。
使用方法
Codev-Bench数据集的使用方法包括下载源代码仓库及其副本,并通过提供的脚本构建执行环境。研究人员和开发者可以通过运行单元测试来验证数据集的完整性,并使用提供的提示模板调用不同模型进行代码补全预测。预测结果可以通过运行单元测试进行评估,最终生成的结果文件可用于总结模型的表现。数据集的使用流程清晰,便于研究人员进行模型评估和优化。
背景与挑战
背景概述
Codev-Bench是由Lingma团队于2024年提出的一个细粒度、真实世界、仓库级别的开发者中心代码补全评估框架。该数据集旨在评估代码补全工具是否能够准确捕捉开发者的即时意图,并在多样化的细粒度上下文中生成合适的代码片段。与以往仅关注根据注释生成完整函数的基准不同,Codev-Bench通过模拟开发者在实际IDE环境中可能遇到的各种子场景,如逻辑块的上下文补全、函数参数列表的补全以及普通语句的补全,提供了更为全面的评估。该数据集的构建基于从GitHub仓库中提取的单元测试,并结合了GPT-4的辅助执行和AST解析技术,确保了评估的准确性和实用性。Codev-Bench的推出为代码生成领域的研究提供了新的视角和工具,推动了开发者中心代码补全技术的发展。
当前挑战
Codev-Bench面临的挑战主要体现在两个方面。首先,在领域问题方面,代码补全任务需要模型在复杂的上下文环境中准确理解开发者的意图,并生成符合预期的代码片段。这不仅要求模型具备强大的语言理解能力,还需要其能够处理多样化的代码结构和逻辑。其次,在数据集构建过程中,如何从真实的GitHub仓库中提取有效的单元测试,并确保这些测试能够覆盖多样化的代码补全场景,是一个技术难点。此外,数据集的构建还依赖于复杂的工具链,如GPT-4的执行辅助和AST解析技术,这些工具的稳定性和准确性直接影响了数据集的质量。如何在未来的版本中持续更新和扩展数据集,以覆盖更多的代码补全场景,也是Codev-Bench面临的重要挑战。
常用场景
经典使用场景
Codev-Bench数据集主要用于评估大型语言模型(LLMs)在代码生成任务中的表现,特别是在开发者日常使用的集成开发环境(IDE)中。该数据集通过模拟真实的代码开发场景,涵盖了多种代码补全子任务,如完整代码块补全、不完整后缀补全、内部代码块补全以及基于检索增强生成(RAG)的补全。这些场景能够全面测试模型在不同上下文中的代码生成能力,帮助研究者深入理解模型在实际开发中的表现。
解决学术问题
Codev-Bench解决了现有代码生成基准测试的局限性,特别是那些仅关注根据注释生成完整函数的任务。通过引入多样化的代码补全场景和基于单元测试的评估方法,该数据集能够更准确地评估模型生成的代码质量。这不仅为研究者提供了更全面的评估工具,还推动了代码生成领域的研究进展,尤其是在模型如何捕捉开发者意图和生成高质量代码方面。
衍生相关工作
Codev-Bench的推出催生了一系列相关研究,特别是在代码生成和补全领域。基于该数据集的研究工作不仅改进了现有模型的性能,还推动了新型模型架构的开发。例如,一些研究利用Codev-Bench中的RAG场景,探索了如何通过检索增强生成技术提升代码补全的准确性。此外,该数据集还为其他代码生成基准测试提供了参考,促进了该领域的标准化和进一步发展。
以上内容由遇见数据集搜集并总结生成
二维码
社区交流群
二维码
科研交流群
商业服务