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

news2025/6/7 5:37:56

摘要:基于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技术的研究和发展提供了有力支持。未来,我们将继续扩展数据集的覆盖范围和体积,改进任务过滤管道,支持新的编程语言,并保持基准测试的更新,以推动该领域的持续进步。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2401189.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

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 …

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…

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…

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

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

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

极客时间-《搞定音频技术》-学习笔记 语音基础知识 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…

2024年认证杯SPSSPRO杯数学建模D题(第二阶段)AI绘画带来的挑战解题全过程文档及程序

2024年认证杯SPSSPRO杯数学建模 D题 AI绘画带来的挑战 原题再现: 2023 年开年,ChatGPT 作为一款聊天型AI工具,成为了超越疫情的热门词条;而在AI的另一个分支——绘图领域,一款名为Midjourney(MJ&#xff…

DOCKER使用记录

1、拉取镜像 直接使用docker pull <image>&#xff0c;大概率会出现下面的报错信息&#xff1a; (base) jetsonyahboom:~$ docker pull ubuntu:18.04 Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while …

【深度学习相关安装及配环境】Anaconda搭建虚拟环境并安装CUDA、cuDVV和对应版本的Pytorch,并在jupyter notebook上部署

目录 1. 查看自己电脑的cuda版本2.安装cuda关于环境变量的配置测试一下&#xff0c;安装完成 3.安装cuDVV环境变量的配置测试一下&#xff0c;安装完成 4.创建虚拟环境先安装镜像源下载3.11版本py 5.在虚拟环境下&#xff0c;下载pytorch6.验证是否安装成功7.在jupyter noteboo…

web3-区块链基础:从区块添加机制到哈希加密与默克尔树结构

区块链基础&#xff1a;从区块添加机制到哈希加密与默克尔树结构 什么是区块链 抽象的回答: 区块链提供了一种让多个参与方在没有一个唯一可信方的情况下达成合作 若有可信第三方 > 不需要区块链 [金融系统中常常没有可信的参与方] 像股票市场&#xff0c;或者一个国家的…

TCP小结

1. 核心特性 面向连接&#xff1a;通过三次握手建立连接&#xff0c;四次挥手终止连接&#xff0c;确保通信双方状态同步。 TCP连接建立的3次握手 抓包&#xff1a; client发出连接请求&#xff1b; server回应client请求&#xff0c;并且同步发送syn连接&#xff1b; clien…