遇见数据集

Exec-CSN

收藏
arXiv2024-05-08 更新2024-07-31 收录
官方服务:

资源简介:

Exec-CSN是由卡内基梅隆大学创建的一个大规模代码生成数据集,包含1931个示例,这些示例是从367个GitHub仓库中提取并修改的。数据集旨在通过执行基础的评估示例来评估代码生成系统的能力。Exec-CSN涵盖了293个库和668个仓库主题,反映了广泛的编程场景和难度级别。该数据集通过迭代执行和调试过程生成,确保每个示例都能通过所有测试用例。Exec-CSN的应用领域包括评估和改进代码生成模型,特别是在解决复杂编程问题和提高代码质量方面。

Exec-CSN is a large-scale code generation dataset developed by Carnegie Mellon University. It contains 1,931 examples extracted and modified from 367 GitHub repositories. This dataset is designed to evaluate the capabilities of code generation systems by executing baseline evaluation examples. Exec-CSN covers 293 libraries and 668 repository topics, reflecting a wide range of programming scenarios and difficulty levels. The dataset is generated through an iterative execution and debugging process, ensuring that every example can pass all test cases. The application areas of Exec-CSN include evaluating and improving code generation models, especially in solving complex programming problems and enhancing code quality.

提供机构:
卡内基梅隆大学
创建时间:
2024-03-31
原始信息汇总

CodeBenchGen 数据集概述

数据集创建步骤

环境设置

  • 环境变量:需在 setup.sh 中设置并运行 source setup.sh

  • 外部库:安装以下包:

    pip install transformers==4.21.0 tree_sitter==0.20.1 sacrebleu=="1.2.11"

  • Docker 设置:推荐在 Docker 中执行代码,使用提供的 Dockerfile 构建镜像并运行容器。

使用 CodeBenchGen 创建基准

  • 输入:准备代码片段集,选择目标代码段,输入格式为 JSON 文件。
  • 步骤 1:沙箱化:隔离输入代码环境。
  • 步骤 2:测试生成:为每个示例生成测试函数。
  • 步骤 3:迭代执行与调试:在 Docker 容器中迭代执行和调试生成的示例。
  • 步骤 4:后处理:包括环境检查和指令生成,最终数据文件格式为 JSON。

可选:测试增强

  • 生成候选测试:使用模型生成额外的测试。
  • 执行候选测试:确保参考答案通过所有测试。
  • 添加成功测试:将通过的测试添加到数据文件中。

评估

  • 推理:提供代码进行模型推理,支持开源模型和 OpenAI API。
  • Pass@k 评估:在 Docker 中执行代码进行 Pass@k 评估。
搜集汇总
数据集介绍
Exec-CSN 数据集图片
构建方式
Exec-CSN数据集的构建依托于CodeBenchGen框架,该框架利用大语言模型将任意代码片段转化为可执行的评估样本。具体而言,从CodeSearchNet数据集中选取367个GitHub仓库的代码片段作为原始素材,通过沙箱化处理隔离外部依赖,由LLM生成测试用例,并经过迭代执行与调试确保代码通过所有测试。最终,经过后处理步骤生成自然语言指令与额外测试,得到1,931个涵盖293个库的高质量样本。
使用方法
使用Exec-CSN时,研究者需提供上下文代码、函数签名及基于I/O规范的指令,模型需补全目标函数体。评估采用执行测试用例的方式,通过Pass@k指标衡量功能正确性。数据集支持迭代改进设置,允许模型基于执行结果反复修正输出。由于包含丰富的库依赖,建议在沙箱环境中运行,并利用提供的依赖列表配置执行环境,以避免冲突并确保评测可复现。
背景与挑战
背景概述
Exec-CSN数据集由卡内基梅隆大学与上海交通大学的研究团队于2024年联合创建,旨在应对代码生成领域执行级基准测试的匮乏现状。该数据集基于CodeBenchGen框架,从CodeSearchNet中选取367个GitHub仓库的代码片段,经大语言模型自动化转换与人工轻量校验,最终生成涵盖293个库与668个仓库主题的1931个可执行评估样例。通过引入执行式测试用例与沙箱隔离机制,Exec-CSN突破了传统基准局限于算法题或手工构造的桎梏,实现了对现实编程场景中多样化库调用、复杂依赖与多层级逻辑的覆盖,为衡量代码生成模型在真实世界任务上的功能性正确性提供了高可靠性的评估平台。
当前挑战
Exec-CSN所解决的领域核心挑战在于构建可扩展且领域多样化的执行级代码生成基准。传统方法或依赖人工编写样例导致规模受限,或局限于算法与数据结构领域,难以反映真实开发中涉及外部库、复杂上下文与多文件依赖的编码实践。在数据构建过程中,挑战尤为显著:首先,从GitHub原始代码中提取可独立执行的片段需处理缺失依赖、文件系统访问与外部API调用等沙箱化难题;其次,自动生成高质量测试用例需平衡覆盖度与正确性,避免LLM自偏倚导致的评估偏差;最后,跨293个库的依赖冲突排查与运行时环境统一过滤,进一步增加了数据筛选的复杂度,最终仅47%的原始代码片段成功转化为有效样例。
常用场景
经典使用场景
Exec-CSN数据集的核心应用场景在于对代码生成模型进行基于执行的评估。它通过将来自GitHub的真实代码片段转化为包含自然语言指令、上下文、依赖环境及测试用例的评估样本,使得研究者能够在多样化的编程任务上衡量模型的功能正确性。该数据集覆盖了293个库和668个仓库主题,从初学者的小型项目到拥有超过400名贡献者的专业项目,为评估模型在真实世界代码场景中的泛化能力提供了丰富且具有挑战性的测试平台。
解决学术问题
Exec-CSN旨在解决现有代码生成基准在多样性和可扩展性方面的局限性。传统基准如HumanEval和MBPP多集中于算法问题,而基于仓库的基准则受限于已有测试用例的专业项目,难以反映广泛编程实践。Exec-CSN通过自动化框架从任意代码片段生成可执行样本,显著降低了人工成本,同时覆盖了从标准库到外部库的广泛领域,解决了如何构建大规模、高领域多样性的执行基准这一关键学术问题,推动了代码生成评估的全面性。
实际应用
在实际应用中,Exec-CSN可用于评估和比较不同代码生成模型在真实编程场景下的性能,例如在集成开发环境或代码补全工具中。它帮助开发者识别模型在长代码、多函数调用或外部库依赖等复杂情境下的弱点,从而指导模型优化。此外,该数据集支持迭代改进机制,可模拟人类程序员基于错误反馈逐步修正代码的过程,为开发更智能的辅助编程系统提供了可靠的测试基准。
数据集最近研究
最新研究方向
Exec-CSN数据集聚焦于基于执行的代码生成基准测试的前沿方向,通过自动化框架CodeBenchGen从GitHub代码片段中构建包含测试用例的评估样本,覆盖293个库和367个仓库,显著提升了领域多样性与现实场景的贴合度。该研究回应了代码生成领域对可扩展、可执行评估的迫切需求,尤其在大型语言模型快速演进的背景下,Exec-CSN通过人类研究验证了81.3%的可解性及模型仅37.21%的Pass@1成绩,揭示了当前模型在复杂库依赖和长目标代码上的性能瓶颈。这一工作不仅推动了代码生成基准从算法问题向真实开发任务转型,还为评估模型在多样化编程实践中的鲁棒性提供了关键参考,对软件工程自动化和AI辅助编程的发展具有深远意义。
相关研究论文
  • 1
    CodeBenchGen: Creating Scalable Execution-based Code Generation Benchmarks卡内基梅隆大学 · 2024年
以上内容由遇见数据集搜集并总结生成
二维码
社区交流群
二维码
科研交流群
商业服务