当前位置: 首页 > article >正文

【AI论文】SWE-rebench:一个用于软件工程代理的任务收集和净化评估的自动化管道

摘要:基于LLM的代理在越来越多的软件工程(SWE)任务中显示出有前景的能力。 然而,推进这一领域面临着两个关键挑战。 首先,高质量的训练数据稀缺,尤其是反映现实世界软件工程场景的数据,在这些场景中,代理必须与开发环境交互,执行代码并根据其行为结果调整行为。 现有的数据集要么局限于一次性的代码生成,要么包含小型的、人工策划的交互式任务集合,缺乏规模和多样性。 其次,缺乏新鲜的交互式SWE任务会影响对快速改进模型的评估,因为静态基准会因污染问题而迅速过时。 为了解决这些局限性,我们引入了一种新颖的、自动化的、可扩展的管道,以从不同的GitHub存储库中连续提取真实的交互式SWE任务。 使用这个流水线,我们构建了SWE-rebench,这是一个包含21000多个基于Python的交互式SWE任务的公共数据集,适用于大规模SWE代理的强化学习。 此外,我们使用SWE-rebench方法收集的新任务持续供应,为代理软件工程构建一个无污染的基准。我们比较了各种LLM在这个基准上的结果和SWE-bench Verified的结果,并表明一些语言模型的性能可能因污染问题而膨胀。Huggingface链接:Paper page,论文链接:2505.20411

研究背景和目的

研究背景

近年来,基于大型语言模型(LLMs)的代理在软件工程(SWE)任务中展现出令人瞩目的能力,涵盖了代码生成、调试、自动化开发流程等多个方面。随着这些能力的不断提升,研究者们开始致力于创建能够与真实代码库和开发环境交互的LLM驱动代理,通过执行动作并接收反馈来执行复杂任务。然而,这一领域的进步面临着两大关键挑战。

首先,高质量的训练数据极为稀缺。特别是那些能够反映真实世界软件工程场景的数据,在这些场景中,代理不仅需要生成代码,还必须与开发环境进行交互,执行代码,并根据执行结果调整其行为策略。现有的数据集要么仅限于一次性代码生成任务,要么包含的是小规模、人工策划的交互式任务集合,这些数据集在规模和多样性上都存在明显不足,难以支撑复杂代理的训练需求。

其次,缺乏新鲜的交互式SWE任务也制约了模型的评估效果。由于软件工程领域的快速发展,静态基准测试集很快就会因为数据污染问题而过时。新模型在训练过程中可能会接触到测试集中的数据,导致评估结果失真,无法准确反映模型的真实性能。

研究目的

为了解决上述挑战,本研究旨在开发一个新颖、自动化且可扩展的管道,用于从多样化的GitHub存储库中持续提取真实的交互式SWE任务。通过这一管道,我们构建了SWE-rebench数据集,该数据集包含超过21,000个基于Python的交互式SWE任务,特别适合用于大规模SWE代理的强化学习训练。此外,我们还利用SWE-rebench方法收集的新任务构建了一个无污染的基准测试集,以促进对LLM驱动软件工程代理的透明和公平评估。

研究方法

数据收集与预处理

本研究从GitHub Archive和GitHub平台获取原始输入数据,涵盖超过30,000个Python代码库,重点收集与已解决问题相关的拉取请求(PRs)。通过一系列过滤条件,如问题描述长度、PR是否合并到主分支、是否包含测试修改等,我们初步筛选出约153,400个潜在的任务实例。

自动化安装指令配置

为了克服手动配置环境的局限性,我们采用了一种全自动化的方法来生成环境设置指令。具体而言,我们使用LLM扫描仓库文件,识别潜在的安装信息文件(如README.md、Dockerfile、setup.py等),并从中提取安装配方。通过多次迭代和错误日志分析,我们不断优化安装配方,确保至少有一个任务实例能够成功配置环境。

执行基础安装验证

为了确保任务的可解决性和测试的完整性,我们对每个任务实例进行执行基础的安装验证。这一过程包括在隔离容器中安装项目依赖,执行测试,并验证测试结果是否符合预期。只有通过验证的任务实例才会被纳入最终的数据集。

自动化任务质量评估

为了进一步提升数据集的质量,我们使用LLM对每个任务实例进行自动化质量评估。评估指标包括问题清晰度、任务复杂度和测试补丁正确性。我们使用SWE-bench Verified的数据对LLM进行微调,并使用微调后的模型对每个任务实例进行预测,生成相应的质量标签。

研究结果

SWE-rebench数据集

通过上述方法,我们成功构建了SWE-rebench数据集,该数据集包含21,336个标注的任务实例,覆盖了3,468个不同的GitHub存储库。数据集已公开发布在Hugging Face Datasets上,并提供了相应的代码和评估脚本。

SWE-rebench基准测试

我们利用SWE-rebench方法收集的新任务构建了一个无污染的基准测试集,并对比了不同LLM在该基准测试集和SWE-bench Verified上的表现。结果显示,一些语言模型在SWE-bench Verified上的性能可能因数据污染问题而被高估。相比之下,SWE-rebench基准测试集提供了更准确、更可靠的评估结果。

模型性能分析

我们对多个开源和闭源LLM在SWE-rebench基准测试集上的性能进行了详细分析。结果显示,不同模型在解决复杂任务和保持一致性方面存在显著差异。例如,GPT-4.1在较晚的任务子集上性能明显下降,而LLaMa-4-Maverick则表现出较高的pass@5得分,但整体解决率相对较低。这些发现为我们深入理解不同LLM在软件工程任务中的表现提供了宝贵见解。

研究局限

自动化任务质量评估的局限性

尽管我们采用了自动化任务质量评估方法来提升数据集的质量,但这种方法仍然存在局限性。由于LLM生成的标签可能包含错误,因此数据集中可能仍存在一些描述不清或无法解决的任务实例。这些任务实例可能会对模型的训练和评估产生不利影响。

语言多样性的限制

目前,SWE-rebench数据集和基准测试集主要关注基于Python的任务实例。尽管我们的管道设计上是语言无关的,并且可以扩展到其他编程语言,但当前版本的数据集在语言多样性方面仍存在限制。这可能会限制数据集在更广泛软件工程任务中的应用。

未来研究方向

扩展数据覆盖范围和体积

未来,我们计划通过扩展数据收集方法,从更广泛的代码变更(如任意拉取请求)中提取任务实例,以显著增加数据集的体积。这将有助于进一步丰富数据集的多样性和规模,为模型训练提供更充足的资源。

改进任务过滤管道

为了提高提取任务的整体质量,我们将致力于优化过滤管道中的启发式方法。通过更精确的过滤条件,我们可以减少数据集中描述不清或无法解决的任务实例数量,从而提升数据集的整体质量。

支持新的编程语言

我们将利用核心方法论,收集其他流行编程语言(如JavaScript、Java、C++等)的项目数据集,以扩展SWE-rebench的语言和技术多样性。这将使数据集能够覆盖更广泛的软件工程任务,促进不同编程语言下模型性能的比较和评估。

保持SWE-rebench基准测试的更新

我们将持续利用新鲜任务更新SWE-rebench基准测试集,并对现有模型进行更广泛的评估。通过与社区分享详细的性能分析结果,我们将促进透明和公平的模型评估,推动软件工程领域AI技术的快速发展。

综上所述,本研究通过开发一个新颖、自动化且可扩展的管道,成功构建了SWE-rebench数据集和基准测试集,为软件工程领域AI技术的研究和发展提供了有力支持。未来,我们将继续扩展数据集的覆盖范围和体积,改进任务过滤管道,支持新的编程语言,并保持基准测试的更新,以推动该领域的持续进步。

相关文章:

【AI论文】SWE-rebench:一个用于软件工程代理的任务收集和净化评估的自动化管道

摘要:基于LLM的代理在越来越多的软件工程(SWE)任务中显示出有前景的能力。 然而,推进这一领域面临着两个关键挑战。 首先,高质量的训练数据稀缺,尤其是反映现实世界软件工程场景的数据,在这些场…...

Flask文件处理全攻略:安全上传下载与异常处理实战

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「storms…...

【算法深练】分组循环:“分”出条理,化繁为简

目录 引言 分组循环 2760. 最长奇偶子数组 1446. 连续字符 1869. 哪种连续子字符串更长 2414. 最长的字母序连续子字符串的长度 3456. 找出长度为 K 的特殊子字符串 1957. 删除字符使字符串变好 674. 最长连续递增序列 978. 最长湍流子数组 2110. 股票平滑下跌阶段的…...

焊缝缺陷焊接缺陷识别分割数据集labelme格式5543张4类别

数据集中有超过一半为增强图片,请认真观察图片预览 数据集格式:labelme格式(不包含mask文件,仅仅包含jpg图片和对应的json文件) 图片数量(jpg文件个数):5543 标注数量(json文件个数):5543 标注类别数:4…...

关于scrapy在pycharm中run可以运行,但是debug不行的问题

关于scrapy在pycharm中run模式可以运行,但是debug模式不行的问题 文章目录 关于scrapy在pycharm中run模式可以运行,但是debug模式不行的问题查了下原因 点击run就可以运行,但是debug就是运行不了 一点击debug就报这个错,也不知道啥…...

Java高级 | 【实验四】Springboot 获取前端数据与返回Json数据

隶属文章: Java高级 | (二十二)Java常用类库-CSDN博客 系列文章: Java高级 | 【实验一】Spring Boot安装及测试 最新-CSDN博客 Java高级 | 【实验二】Springboot 控制器类相关注解知识-CSDN博客 Java高级 | 【实验三】Springboot …...

云数据库选型指南:关系型 vs NoSQL vs NewSQL的企业决策

在云时代,数据库选型直接关系到企业应用性能和成本效益。本文深入分析三大数据库类型,助您做出明智决策。 目录概览 关系型数据库:经典之选NoSQL数据库:灵活应对非结构化数据NewSQL数据库:融合的优势三大数据库对比分…...

Prj08--8088单板机C语言8255读取按键码

1.验证结果 2.代码片 key_codeinp(PORT_8255_C)&0x0f;tiny_sprintf(buffer,"Key_code 0X%x \r\n",key_code);uart_str_send(buffer); 3.完整代码 #include "tiny_stdarg.h" // 使用自定义可变参数实现#define ADR_273 0x0200 #define ADR_244 0x…...

蜜獾算法(HBA,Honey Badger Algorithm)

2021年由Hashim等人提出(论文:Honey Badger Algorithm: A New Metaheuristic Algorithm for Solving Optimization Problems)。模拟蜜獾在自然界中的智能捕食行为,属于群体智能优化算法(与粒子群PSO、遗传算法GA同属一…...

Modbus转Ethernet IP网关助力罗克韦尔PLC数据交互

在工业自动化领域,Modbus协议是一种广泛应用的串行通信协议,它定义了主站和从站之间的通信规则和数据格式。罗克韦尔PLC是一种可编程的逻辑控制器,通过Modbus协议实现与其他设备之间的数据交互。然而,随着以太网技术的普及和发展&…...

飞算JavaAI 炫技赛重磅回归!用智能编码攻克老项目重构难题

深夜还在排查十年前Hibernate框架埋下的N1查询隐患?跨语言迁移时发现SpringMVC控制器里的业务逻辑像一团乱麻?当企业数字化进入深水区,百万行代码的老系统就像一座随时可能崩塌的"技术债冰山"。近日,飞算科技发布JavaAI…...

青少年编程与数学 02-020 C#程序设计基础 15课题、异常处理

青少年编程与数学 02-020 C#程序设计基础 15课题、异常处理 一、异常1. 异常的分类2. 异常的作用小结 二、异常处理1. 异常处理的定义2. 异常处理的主要组成部分3. 异常处理的作用小结 三、C#异常处理1. 异常的基本概念2. 异常处理的关键字3. 异常处理的流程4. 自定义异常5. 异…...

Electron打包前端和后端为exe

文章目录 什么是Electron? 安装electron过程 其他git项目地址比较好的文章electron的替代品安装报错 npm ERR! request to https://registry.npm.taobao.org/electron failed, reason: certificate has expired安装提示 npm WARN deprecated boolean3.2.0: Package …...

unix/linux,sudo,一个强大且灵活的工具,允许一个被授权的用户以另一个用户(通常是root,即超级用户)的身份来执行命令

sudo:不仅仅是“用管理员权限运行” sudo 这个词,来源于 SuperUser DO (或者 Substitute User DO,后者的含义更为广阔和准确)。它是一个强大且灵活的工具,允许一个被授权的用户以另一个用户(通常是root,即超级用户)的身份来执行命令。 1. Unix/Linux 的权限哲学:最小…...

JavaScript 二维数组初始化:为什么 fill([]) 是个大坑?

JavaScript 二维数组初始化:为什么 fill([]) 是个大坑? 今天刷leetcode的时候,遇到一个神奇的bug。 当我修改数组中的一个元素,却意外影响了其他所有元素???。 问题重现:诡异的数组…...

项目任务,修改svip用户的存储空间。

修改存储空间 3GB->5GB,这是项目任务,首先有人任务就要去思考实现思路,首先存储空间,也就是说不只是前端样式3GB改一下就可以了,那用户实际还是3GB,所以我们去网站看后端谁返回给我们了3GB,我…...

TypeScript 全面学习指南 (2025最新版)

TypeScript 全面学习指南 目录 TypeScript 简介环境搭建与工具基础类型变量声明接口(Interfaces)类(Classes)函数(Functions)泛型(Generics)枚举(Enums)类型…...

【redis】过期策略 懒惰删除

过期删除: redis会将所有设置过期时间的key以及过期时间存储在字典里。 redis采取两个策略实现删除过期key: 1、定时删除:定期扫描字典,采用贪心的策略,从字典随机抽20个key,删除其中已经过期的key&#x…...

Docker或Docker-Compose时间时区配置

Docker或Docker-Compose配置时区,主要是为了使用容器内的时间和物理机操作系统的时间保持一致。以下是集中配置Docker或Docker-Compose环境时间时区的方式。 Dockerfile(Docker)中配置时区 在Dockerfile中,可以通过如下方式添加…...

如何在IDE中通过Spark操作Hive

在IDE中通过Spark操作Hive是一项常见的任务,特别是在大数据处理和分析的场景中。本文将详细介绍如何在集成开发环境(IDE)中使用Apache Spark与Hive进行交互,包括必要的设置、代码示例以及详细解释。 环境准备 在开始之前&#x…...

ToolsSet之:XML工具

ToolsSet是微软商店中的一款包含数十种实用工具数百种细分功能的工具集合应用,应用基本功能介绍可以查看以下文章: Windows应用ToolsSet介绍https://blog.csdn.net/BinField/article/details/145898264 ToolsSet中Text菜单下的XML Tool工具是一个Xml工…...

keepalived定制日志bug

keepalived定制日志bug 源码安装apt安装endl 源码安装 在/etc/rsyslog.d/目录下创建 keepalived的日志配置文件keepalived.conf [rootubuntu24-13:~]# vim /etc/rsyslog.d/keepalived.conf [rootubuntu24-13:~]# cat /etc/rsyslog.d/keepalived.conf local6.* /var/log/keepa…...

ElasticSearch+Gin+Gorm简单示例

更多个人笔记见: (注意点击“继续”,而不是“发现新项目”) github个人笔记仓库 https://github.com/ZHLOVEYY/IT_note gitee 个人笔记仓库 https://gitee.com/harryhack/it_note 个人学习,学习过程中还会不断补充&…...

数据库系统概论(十三)详细讲解SQL中数据更新(插入,修改与更新)

数据库系统概论(十三)详细讲解SQL中数据更新 前言一、数据插入1. 插入数据是什么?2.插入单条数据(插入元组)场景 1:指定部分列插入场景 2:不指定列名(插入所有列)场景 3&…...

JVMTI 在安卓逆向工程中的应用

JVMTI 在安卓逆向工程中的应用 JVMTI 在安卓逆向工程中扮演着重要角色,尤其是在分析和修改 Java 层应用行为时。以下是其核心应用场景、实现方式及典型工具: 一、核心应用场景 1. 动态代码注入与 hook 通过 JVMTI 可以在运行时修改或拦截 Java 方法&…...

极客时间-《搞定音频技术》-学习笔记

极客时间-《搞定音频技术》-学习笔记 语音基础知识 https://www.zhangzhenhu.com/audio/feature.html 序章-0 作者说这个语音技术啊,未来肯定前景大好啊,大家都来学习,然后给出了课程的脑图 音频基础 什么是声音 声音的三要素是指响度、…...

网络攻防技术十三:网络防火墙

文章目录 一、网络防火墙概述1、网络型防火墙(网络防火墙)2、Web应用防火墙3、数据库防火墙4、主机防火墙(个人防火墙)5、网络防火墙的功能 二、防火墙工作原理1、无状态包过滤防火墙2、有状态包过滤防火墙(状态检测/动…...

Express 集成Sequelize+Sqlite3 默认开启WAL 进程间通信 Conf 打包成可执行 exe 文件

代码:express-exe: 将Express开发的js打包成exe服务丢给客户端使用 实现目标 Express 集成 Sequelize 操作 Sqlite3 数据库; 启动 Sqlite3 时默认开启 WAL 模式,避免读写互锁,支持并发读; 利用 Conf 实现主进程与 Ex…...

CppCon 2015 学习:A C++14 Approach to Dates and Times

Big Picture — 日期库简介 扩展 标准库 这个库是对 C 标准库中 <chrono> 的自然延伸&#xff0c;专注于处理“日历”相关的功能&#xff08;比如年月日、闰年、节假日等&#xff09;&#xff0c;而不仅仅是时间点和时长。极简设计 它是**单头文件&#xff08;header-on…...

基于CNN的OFDM-IM信号检测系统设计与实现

基于CNN的OFDM-IM信号检测系统设计与实现 摘要 本文详细研究了基于卷积神经网络(CNN)的正交频分复用索引调制(OFDM-IM)信号检测方法。通过在不同信噪比(SNR)和信道条件下进行系统仿真,对比分析了CNN检测器与传统最大似然(ML)检测器的误码率(BER)性能和计算复杂度。实验结果表…...