five

RepoBench

收藏
arXiv2023-10-04 更新2024-07-30 收录
下载链接:
https://github.com/Leolty/repobench
下载链接
链接失效反馈
官方服务:
资源简介:
RepoBench是一个专为评估仓库级别代码自动补全系统设计的新基准,支持Python和Java语言,包含三个相互关联的评估任务:RepoBench-R(检索)、RepoBench-C(代码补全)和RepoBench-P(管道)。该数据集由10,345个Python历史仓库和14,956个Java历史仓库组成,用于训练数据,以及1,075个Python新仓库和594个Java新仓库作为测试数据。RepoBench旨在通过模拟真实编程场景,评估模型处理长且复杂的上下文的能力,推动代码智能领域的持续创新。

RepoBench is a novel benchmark specifically designed for evaluating repository-level code completion systems, supporting both Python and Java programming languages. It encompasses three interrelated evaluation tasks: RepoBench-R (Retrieval), RepoBench-C (Code Completion), and RepoBench-P (Pipeline). The dataset comprises 10,345 historical Python repositories and 14,956 historical Java repositories for training, along with 1,075 new Python repositories and 594 new Java repositories as test data. RepoBench aims to evaluate models' ability to handle long and complex contexts by simulating real-world programming scenarios, and promote continuous innovation in the field of code intelligence.
提供机构:
加州大学圣地亚哥分校
创建时间:
2023-06-06
原始信息汇总

数据集概述

数据集版本

数据加载

下载数据

  • 测试数据

    • 下载链接:Google Drive
    • 命令行下载: bash gdown --id 1HvFFnOybTKEJCrEypWh4ftmW6DZBaiK_ --output ./archive_data/test.zip unzip ./archive_data/test.zip -d ./archive_data/ rm ./archive_data/test.zip
  • 训练数据(可选):

    • 下载链接:Google Drive
    • 命令行下载: bash gdown --id 179TXJBfMMbP9FDC_hsdpGLQPmN6iB4vY --output ./archive_data/train.zip unzip ./archive_data/train.zip -d ./archive_data/ rm ./archive_data/train.zip

数据加载方法

  • 导入load_data函数: python from archive_data.utils import load_data

  • 调用函数加载数据: python data = load_data(split, task, language, settings, length)

  • 参数说明

    • split:数据集分割,可选traintest
    • task:任务类型,可选retrievalcompletionpipeline
    • language:编程语言,可选pythonjava
    • settings:设置类型,可选cross_file_firstcross_file_randomin_file,可组合使用。
    • length:(可选)完成任务的长度,可选2k8k
  • 示例: python data = load_data(split=test, task=completion, language=python, settings=[cross_file_first, cross_file_random, in_file], length=8k)

数据集设置

  • cross_file_first:屏蔽首次使用不同文件模块的行。
  • cross_file_random:随机屏蔽使用不同文件模块的行(非首次使用)。
  • in_file:随机屏蔽没有跨文件依赖的行。

数据泄露警告

  • 数据泄露/记忆风险:测试数据包含2023年2月9日至2023年8月3日之间的GitHub代码。如果模型训练数据包含此时间段内的代码,可能存在数据泄露和记忆风险。

许可证和所有权

  • 许可证验证:数据集中的代码许可证可能未经过仔细验证。如果发现许可证问题或希望移除包含的代码,请及时联系。
搜集汇总
数据集介绍
main_image_url
构建方式
在代码智能领域,现有基准多局限于单文件任务,难以评估真实多文件编程场景的复杂性。为填补这一空白,RepoBench数据集通过整合历史GitHub代码库与新近爬取数据构建而成。具体而言,训练数据源自github-code数据集,筛选包含32至128个文件的Python与Java仓库,确保跨文件依赖的充分性;测试数据则通过GitHub API采集2023年2月之后创建的最新非分支仓库,以规避数据泄露风险。利用tree-sitter解析工具识别导入语句及其相关代码片段,从而构建包含跨文件与文件内上下文的提示,支持代码检索与补全任务的系统评估。
使用方法
使用RepoBench进行评估时,研究者可依据具体任务选择相应子集。对于代码检索任务(RepoBench-R),需计算候选片段与裁剪后文件内代码的相似度,并采用Accuracy@k指标衡量性能;代码补全任务(RepoBench-C)则要求模型基于给定的跨文件与文件内上下文,自回归地预测下一行代码,使用精确匹配与编辑相似度进行评分。端到端管道任务(RepoBench-P)需先执行检索获取相关片段,再将其作为上下文进行补全预测,综合考察系统的整体效能。数据集支持零样本学习与微调两种模式,为不同规模的模型提供了灵活的评估路径,助力代码智能系统的迭代优化。
背景与挑战
背景概述
在大型语言模型(LLM)推动代码自动补全系统快速发展的背景下,现有基准测试多局限于单文件任务,难以评估真实世界中多文件编程场景的复杂性。为此,加州大学圣地亚哥分校的研究团队于2023年推出了RepoBench,这是一个专门为评估仓库级代码自动补全系统而设计的基准数据集。该数据集涵盖Python和Java两种编程语言,通过三个相互关联的子任务——RepoBench-R(检索)、RepoBench-C(代码补全)和RepoBench-P(流水线)——全面衡量系统在跨文件上下文中的检索能力、代码预测能力以及端到端处理能力。RepoBench的构建旨在填补现有评估体系的空白,推动代码智能系统向更贴近实际开发环境的方向演进,对提升开发效率与模型泛化能力具有重要影响。
当前挑战
RepoBench针对的领域问题是仓库级代码自动补全,其核心挑战在于处理多文件项目中的复杂依赖关系与长上下文理解。具体而言,系统需在大量候选代码片段中精准检索相关上下文,并基于跨文件与文件内信息预测下一行代码,这对模型的语义理解、长序列处理能力提出了较高要求。在数据集构建过程中,挑战主要体现在数据采集与处理环节:需要从海量GitHub仓库中筛选具有代表性的多文件项目,并利用tree-sitter等工具解析跨文件依赖关系,同时避免数据泄露与记忆化问题。此外,数据集的划分需平衡不同编程语言的特性和任务难度,确保评估的全面性与公正性。
常用场景
经典使用场景
在代码智能领域,RepoBench作为首个专注于仓库级代码自动补全的基准测试,其经典使用场景在于系统性地评估大型语言模型在跨文件编程环境中的表现。该数据集通过模拟真实软件开发中多文件交互的复杂场景,为研究者提供了衡量模型在检索相关代码片段、预测下一行代码以及整合两者形成完整工作流的能力。其设计涵盖了Python和Java两种主流编程语言,确保了评估的广泛适用性,从而成为推动代码补全技术向更贴近实际开发需求演进的关键工具。
解决学术问题
RepoBench主要解决了当前代码补全研究中的一个核心局限:即现有基准大多局限于单文件任务,未能充分反映真实世界中跨文件依赖的复杂性。通过引入仓库级上下文,该数据集使得研究者能够深入探究模型在处理长距离代码依赖、理解模块间关系以及适应多样化编程模式时的能力。这不仅填补了评估体系中的空白,还为开发更健壮、更具泛化能力的代码智能模型提供了实证基础,推动了该领域从理论到实践的跨越。
实际应用
在实际应用层面,RepoBench直接服务于提升集成开发环境中智能补全工具的性能,如GitHub Copilot等系统。通过提供标准化的评估框架,它帮助开发者筛选和优化那些能够在大型代码库中准确理解跨文件引用、高效检索相关代码并生成连贯补全建议的模型。这显著增强了开发者在处理多模块项目时的效率,减少了上下文切换的认知负担,并为构建下一代面向企业级代码仓库的智能辅助系统奠定了技术基础。
数据集最近研究
最新研究方向
在代码智能领域,随着大型语言模型在单文件代码补全任务上取得显著进展,研究者们逐渐将目光投向更贴近实际开发场景的仓库级代码自动补全系统评估。RepoBench作为专为此设计的基准测试,其最新研究方向聚焦于跨文件上下文建模与长序列处理能力的深度融合。前沿探索主要围绕多文件依赖关系的精准检索、基于扩展上下文的下一行代码预测,以及端到端流水线任务的优化展开,这些方向正推动模型从局部代码生成向项目级语义理解演进。相关热点事件包括GitHub Copilot等工业级工具对跨文件智能补全需求的日益增长,以及Transformer架构在长序列处理上的持续改进。RepoBench通过支持Python和Java的双语评估,为模型在真实多文件项目中的泛化能力提供了标准化测试平台,对提升开发者生产力、推动代码智能向复杂场景落地具有深远意义。
相关研究论文
  • 1
    RepoBench: Benchmarking Repository-Level Code Auto-Completion Systems加州大学圣地亚哥分校 · 2023年
以上内容由遇见数据集搜集并总结生成
5,000+
优质数据集
54 个
任务类型
进入经典数据集
二维码
社区交流群

面向社区/商业的数据集话题

二维码
科研交流群

面向高校/科研机构的开源数据集话题

数据驱动未来

携手共赢发展

商业合作