0

0

登顶开源AI软件工程师榜首,UIUC无Agent方案轻松解决SWE-bench真实编程问题

PHPz

PHPz

发布时间:2024-07-15 18:40:27

|

438人浏览过

|

来源于机器之心

转载

登顶开源AI软件工程师榜首,UIUC无Agent方案轻松解决SWE-bench真实编程问题
AIxiv专栏是本站发布学术、技术内容的栏目。过去数年,本站AIxiv专栏接收报道了2000多篇内容,覆盖全球各大高校与企业的顶级实验室,有效促进了学术交流与传播。如果您有优秀的工作想要分享,欢迎投稿或者联系报道。投稿邮箱:liyazhou@jiqizhixin.com;zhaoyunfeng@jiqizhixin.com

这篇论文的作者均来自伊利诺伊大学香槟分校(uiuc)张令明老师团队,包括:steven xia,四年级博士生,研究方向是基于 ai 大模型的自动代码修复;邓茵琳,四年级博士生,研究方向是基于 ai 大模型的代码生成;soren dunn,科研实习生,目前为 uiuc 大三学生。张令明老师现任 uiuc 计算机系副教授,主要从事软件工程、机器学习、代码大模型的相关研究。

更多详细信息请见张老师的个人主页:https://lingming.cs.illinois.edu/

自从 Devin(首个全自动 AI 软件工程师)提出以来,针对软件工程的 AI Agent 的设计成为研究的焦点,越来越多基于 Agent 的 AI 自动软件工程师被提出,并在 SWE-bench 数据集上取得了不俗的表现、自动修复了许多真实的 GitHub issue。

然而,复杂的 Agent 系统会带来额外的开销和不确定性,我们真的需要使用如此复杂的 Agent 来解决 GitHub issue 吗?不依赖 Agent 的解决方案能接近它们的性能吗?

从这两个问题出发,伊利诺伊大学香槟分校(UIUC)张令明老师团队提出了 OpenAutoCoder-Agentless,一个简单高效并且完全开源的无 Agent 方案,仅需 $0.34 就能解决一个真实的 GitHub issue。Agentless 在短短几天内在 GitHub 上已经吸引了超过 300 GitHub Star,并登上了 DAIR.AI 每周最热 ML 论文榜单前三。

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

登顶开源AI软件工程师榜首,UIUC无Agent方案轻松解决SWE-bench真实编程问题

  • 论文:AGENTLESS : Demystifying LLM-based Software Engineering Agents

  • 论文地址:https://huggingface.co/papers/2407.01489

  • 开源代码:https://github.com/OpenAutoCoder/Agentless

AWS 研究科学家 Leo Boytsov 表示:“Agentless 框架表现优异,超过所有开源 Agent 解决方案,几乎达到 SWE Bench Lite 最高水平(27%)。而且,它以显著更低的成本击败了所有开源方案。该框架采用分层查询方法(通过向 LLM 提问来查找文件、类、函数等)以确定补丁位置。虽然利用 LLM,但不允许 LLM 做出规划决策。”

登顶开源AI软件工程师榜首,UIUC无Agent方案轻松解决SWE-bench真实编程问题

Agentless 是一种自动解决软件开发问题的方法,它使用简单的两阶段方法进行定位和修复,以修复代码库中的 bug。在定位阶段,Agentless 以分层方式来逐步缩小到可疑的文件、类 / 函数和具体的编辑位置。对于修复,它使用简单的 diff 格式(参考自开源工具 Aider)来生成多个候选补丁,并对其进行过滤和排序。

登顶开源AI软件工程师榜首,UIUC无Agent方案轻松解决SWE-bench真实编程问题

研究者将 Agentless 与现有的 AI Software Agent 进行了比较,其中包括最先进的开源和商业 / 闭源项目。令人惊讶的是,Agentless 可以以更低的成本超越所有现有的开源 Software Agent!Agentless 解决了 27.33% 的问题,是开源方案中最高的,并且解决每个问题平均仅需 $0.29,在所有问题上(包括能解决和未解决的)平均只需要约 $0.34。

登顶开源AI软件工程师榜首,UIUC无Agent方案轻松解决SWE-bench真实编程问题

不仅如此,Agentless 还有改进的潜力。在考虑所有生成的补丁时,Agentless 可以解决 41% 的问题,这个上限表明补丁排序和选择阶段有显著的改进空间。此外,Agentless 能够解决一些即使是最好的商业工具(Alibaba Lingma Agent)也无法解决的独特问题,这表明它可以作为现有工具的补充。

Audo Studio
Audo Studio

AI音频清洗工具(噪音消除、声音平衡、音量调节)

下载

登顶开源AI软件工程师榜首,UIUC无Agent方案轻松解决SWE-bench真实编程问题

对 SWE-bench Lite 数据集的分析

研究者还对 SWE-bench Lite 数据集进行了人工检查和详细分析。

研究发现,SWE-bench Lite 数据集中,有 4.3% 的问题在问题描述中直接给出了完整的答案,也就是正确的修复补丁。而另外 10% 的问题描述了正确解决方案的确切步骤。这表明,SWE-bench Lite 中的某些问题可能更容易解决。

此外,研究团队观察到有 4.3% 的问题在问题描述中包含了用户提议的解决方案或者步骤,但这些方案与开发人员的真实补丁并不一致。这进一步揭示了该基准测试的潜在问题,因为这些误导性解决方案可能导致 AI 工具仅通过遵循问题描述来生成不正确的解决方案。

在问题描述质量方面,研究者观察到,虽然 SWE-bench Lite 中大部分的任务都包含了足够的信息,并且许多任务还提供了失败示例来复现错误,但是仍有 9.3% 的问题没有包含足够的信息。例如需要实现一个新的函数或者添加一个错误信息,但是特定的函数名或者特定的错误信息字符串并没有在问题描述中给出。这意味着即使正确实现了底层功能,如果函数名或错误信息字符串不完全匹配,测试也会失败。

登顶开源AI软件工程师榜首,UIUC无Agent方案轻松解决SWE-bench真实编程问题

普林斯顿大学的研究人员,同时也是 SWE-Bench 的作者之一,Ofir Press 确认了他们的发现:“Agentless 对 SWE-bench Lite 进行了不错的手动分析。他们认为 Lite 上的理论最高得分可能是 90.7%。我觉得实际的上限可能会更低(大约 80%)。一些问题的信息不足,另一些问题的测试过于严格。”

登顶开源AI软件工程师榜首,UIUC无Agent方案轻松解决SWE-bench真实编程问题

SWE-bench Lite-S:经过过滤的严格问题子集

针对这些问题,研究者提出了一个严格的问题子集 SWE-bench Lite-S(包含 252 个问题)。具体来说,从 SWE-bench Lite(包含 300 个问题)中排除了那些在问题描述中包含确切补丁、误导性解决方案或未提供足够信息的问题。这样可以去除不合理的问题,并使基准测试的难度水平标准化。与原始的 SWE-bench Lite 相比,过滤后的基准测试更准确地反映了自动软件开发工具的真实能力。

结语

尽管基于 Agent 的软件开发非常有前景,作者们认为技术和研究社区是时候停下来思考其关键设计与评估方法,而不是急于发布更多的 Agent。研究者希望 Agentless 可以帮助重置未来软件工程 Agent 的基线和方向。

相关专题

更多
js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

278

2023.08.03

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

212

2023.09.04

java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

1491

2023.10.24

字符串介绍
字符串介绍

字符串是一种数据类型,它可以是任何文本,包括字母、数字、符号等。字符串可以由不同的字符组成,例如空格、标点符号、数字等。在编程中,字符串通常用引号括起来,如单引号、双引号或反引号。想了解更多字符串的相关内容,可以阅读本专题下面的文章。

621

2023.11.24

java读取文件转成字符串的方法
java读取文件转成字符串的方法

Java8引入了新的文件I/O API,使用java.nio.file.Files类读取文件内容更加方便。对于较旧版本的Java,可以使用java.io.FileReader和java.io.BufferedReader来读取文件。在这些方法中,你需要将文件路径替换为你的实际文件路径,并且可能需要处理可能的IOException异常。想了解更多java的相关内容,可以阅读本专题下面的文章。

551

2024.03.22

php中定义字符串的方式
php中定义字符串的方式

php中定义字符串的方式:单引号;双引号;heredoc语法等等。想了解更多字符串的相关内容,可以阅读本专题下面的文章。

566

2024.04.29

go语言字符串相关教程
go语言字符串相关教程

本专题整合了go语言字符串相关教程,阅读专题下面的文章了解更多详细内容。

166

2025.07.29

c++字符串相关教程
c++字符串相关教程

本专题整合了c++字符串相关教程,阅读专题下面的文章了解更多详细内容。

82

2025.08.07

菜鸟裹裹入口以及教程汇总
菜鸟裹裹入口以及教程汇总

本专题整合了菜鸟裹裹入口地址及教程分享,阅读专题下面的文章了解更多详细内容。

0

2026.01.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 13.6万人学习

Node.js 教程
Node.js 教程

共57课时 | 9.1万人学习

CSS3 教程
CSS3 教程

共18课时 | 4.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号