遇见数据集

princeton-nlp/SWE-bench_oracle

收藏
Hugging Face2024-04-15 更新2024-03-04 收录
官方服务:

资源简介:

SWE-bench_oracle数据集用于测试系统自动解决GitHub问题的能力。该数据集收集了来自12个流行Python项目的2,294个Issue-Pull Request对。评估通过使用PR后的行为作为参考解决方案的单元测试验证进行。数据集的结构包括多个特征,如instance_id、text、patch等,每个特征都有详细的描述。数据集支持的任务是提供完整仓库和GitHub问题的解决方案,并且提供了一个排行榜。数据集的文本主要是英文,但未进行语言类型的过滤或清理。

提供机构:
princeton-nlp
原始信息汇总

数据集概述

名称:SWE-bench

目的:测试系统自动解决GitHub问题的能力。

数据组成:收集了2,294对Issue-Pull Request(问题-拉取请求)。

来源:数据来源于12个流行的Python项目。

评估方法:通过单元测试验证,使用拉取请求后的行为作为参考解决方案。

搜集汇总
数据集介绍
构建方式
在软件工程与自然语言处理交叉领域,自动化解决GitHub Issue已成为评估大语言模型代码理解与生成能力的重要试金石。SWE-bench_oracle数据集源自SWE-bench项目,通过从12个流行的Python开源仓库中系统收集2,294对Issue-拉取请求(PR)对构建而成。每个实例以“Oracle”检索设置进行格式化,即利用PR后行为作为参考解决方案,将问题陈述、相关代码文件及预期补丁格式整合为统一的文本输入。数据集的构建严格遵循后PR单元测试验证流程,确保每个补丁的准确性,并划分为训练集(18,817条)、开发集(225条)、测试集(2,294条)和验证集(191条),为模型训练与评估提供结构化支撑。
特点
该数据集的核心特点在于其生态真实性与评估严谨性的高度统一。每个样本包含实例ID、仓库标识、基准提交哈希、问题陈述、提示文本、金标准补丁及测试补丁等丰富字段,特别是FAIL_TO_PASS和PASS_TO_PASS字段,分别记录了PR解决前后测试集的变化,为细粒度评估模型修复能力提供了量化依据。此外,数据集采用统一的补丁格式模板,引导模型生成标准化的diff输出,降低了推理复杂度。其“Oracle”检索设置模拟了理想信息检索场景,专注于评估模型在给定正确上下文时的代码修复性能,从而剥离了检索环节的干扰,使研究者能更纯粹地探究语言模型自身的推理与生成能力。
使用方法
使用SWE-bench_oracle数据集时,可直接利用其`text`列作为语言模型的输入,该列已包含指令、检索到的代码文件及输出格式示例。模型需遵循预定义的补丁模板生成diff格式输出,例如使用`<patch> diff --- a/path/to/file.py --- b/path/to/file.py ... </patch>`结构。生成的补丁文件可与SWE-bench官方推理脚本无缝对接,实现从输入到评估的全流程自动化。研究者亦可依据`repo`、`base_commit`和`environment_setup_commit`字段复现仓库环境,结合`test_patch`和`FAIL_TO_PASS`/`PASS_TO_PASS`字段进行单元测试验证,从而系统评估模型在真实软件修复任务上的表现。
背景与挑战
背景概述
在软件工程与自然语言处理交叉领域,自动化代码修复与问题解决一直是极具挑战的研究方向。2023年,由普林斯顿大学研究团队提出的SWE-bench数据集,旨在系统性地评估语言模型在真实GitHub仓库中解决实际问题的能力。该数据集精心收集了来自12个流行Python项目的2294个Issue-Pull Request对,通过单元测试验证作为评估基准,开创性地将代码生成任务从简单的函数补全延伸至完整的仓库级问题修复。SWE-bench_oracle作为其子集,采用Oracle检索策略格式化实例,为语言模型直接生成补丁文件提供了标准化接口。该数据集不仅推动了自动化软件维护领域的发展,更成为衡量大型语言模型在真实世界代码理解与修改能力的重要标杆,其提出的评估框架已被广泛采纳于后续研究之中。
当前挑战
SWE-bench所面临的挑战主要体现在两个维度。在领域问题层面,其核心难题在于如何使语言模型理解复杂的仓库上下文并生成精准的补丁,这要求模型不仅能够定位问题所在文件,还需把握跨文件的依赖关系与代码逻辑,远超过传统的代码生成任务。在数据集构建过程中,挑战集中于高质量Issue-PR对的筛选与验证:需要确保每个实例的补丁能通过后PR行为的单元测试,同时排除无关的测试代码干扰;此外,跨版本的依赖环境设置、不同Python版本的兼容性问题以及测试用例的准确标注,都构成了构建过程中的重大障碍。这些复杂性使得SWE-bench成为评估语言模型实际代码修复能力的严峻试金石。
常用场景
经典使用场景
SWE-bench_oracle数据集的核心经典应用在于评估和提升大语言模型对真实世界GitHub问题的自动修复能力。研究者通过向模型提供包含问题描述、仓库上下文及Oracle检索到的相关代码片段的格式化输入,引导其生成符合Unix diff格式的补丁文件。这一场景不仅检验了模型对代码仓库结构和编程语言语义的理解深度,更衡量了其从复杂、多模态的Issue描述中精准定位缺陷并生成有效修复方案的综合能力。该数据集已成为自动化软件工程领域中,评估语言模型在代码修复任务上性能的权威基准。
实际应用
在实际软件工程领域,SWE-bench_oracle所驱动的模型技术正逐步渗透到持续集成与持续部署(CI/CD)流程中,助力开发者自动筛选和修复代码缺陷。依托该数据集训练的模型能够被集成至代码审查工具,自动为Pull Request生成初步的修复建议,显著缩短问题从发现到修复的周期。此外,在开源社区维护和大型软件项目的版本管理中,该数据集衍生的技术可辅助自动化回归测试与补丁验证,降低人工排查的成本,提升软件迭代的效率与可靠性。
衍生相关工作
SWE-bench_oracle的发布催生了一系列具有里程碑意义的后续工作。其中最经典的是SWE-agent系列研究,其探索了基于Agent的迭代式代码修复框架,让语言模型能够与环境交互、执行命令并观察结果,从而提升修复成功率。此外,诸如CodeR、RepoCoder等工作借鉴了该数据集的评估范式,致力于通过检索增强生成、多步推理等策略改进模型对仓库级代码的理解。这些衍生工作共同推动了从简单的补丁生成向具备主动探索与验证能力的智能修复系统的跃迁,确立了该数据集在自动化软件工程领域不可替代的基石地位。
以上内容由遇见数据集搜集并总结生成
二维码
社区交流群
二维码
科研交流群
商业服务