【论文解读】AGENTLESS:揭开基于LLM的软件工程代理的神秘面纱,重塑软件工程自动化新基线

news2024/9/22 17:36:38

📜 文献卡

英文题目: Agentless: Demystifying LLM-based Software Engineering Agents;
作者: Chunqiu Steven Xia; Yinlin Deng; Soren Dunn; Lingming Zhang
DOI: 10.48550/arXiv.2407.01489
摘要翻译: 大型语言模型(LLM)的最新进展显著推进了软件开发任务的自动化,包括代码合成、程序修复和测试生成。最近,研究人员和行业从业者开发了各种自主LLM代理来执行端到端软件开发任务。这些代理配备了使用工具、运行命令、观察来自环境的反馈以及规划未来行动的能力。然而,这些基于代理的方法的复杂性,加上当前LLM的有限能力,引发了以下问题:我们真的必须使用复杂的自主软件代理吗?为了试图回答这个问题,我们构建了无代理——一种自动解决软件开发问题的无代理方法。与基于代理的方法的冗长和复杂的设置相比,Agentless采用了简单的本地化两阶段过程,然后进行修复,而不让LLM决定未来的行动或使用复杂的工具进行操作。我们在流行的SWE-bench Lite基准测试上的结果表明,令人惊讶的是,与所有现有的开源软件代理相比,简单的Agentless能够实现最高性能(27.33%)和最低成本(0.34美元)!此外,我们手动分类了SWE-bench Lite中的问题,并发现了精确的地面实况补丁或不足/误导性问题描述的问题。因此,我们通过排除此类有问题的问题来构建SWE-bench Lite-S,以执行更严格的评估和比较。我们的工作突出了当前在自主软件开发中被忽视的一种简单、可解释的技术的潜力。我们希望Agentless将有助于重置自治软件代理的基线、起点和视野,并激发未来朝着这一关键方向开展工作。
GitHub: https://github.com/OpenAutoCoder/Agentless

⚙️ 内容

这篇论文探讨了大型语言模型(LLM)在软件开发中的应用,并提出了一个名为AGENTLESS的简单解决方案。随着LLM技术的发展,研究人员和行业从业者已经开发出了各种自主的LLM代理程序,用于执行端到端的软件开发任务。然而,这些基于代理的方法复杂且难以理解,而当前的LLM能力有限,因此作者提出了AGENTLESS这个简单的两阶段过程:首先定位问题,然后进行修复,而不让LLM决定未来的操作或使用复杂的工具。实验结果表明,AGENTLESS能够以最高性能(27.33%)和最低成本($0.34)击败所有现有的开源软件代理!此外,作者还对SWE-bench Lite进行了手动分类,排除了一些有问题的问题,以进行更严格的评估和比较。这项工作突显了简单、可解释的技术在自主软件开发中的潜力,希望AGENTLESS能够帮助重置基准线、起点和视野,激发未来的研究方向。

1
2

3

💡 创新点

  1. 简化流程:与传统的代理系统不同,AGENTLESS采用了一个两阶段的直接流程——首先定位问题,然后进行修复。这种简化的设计避免了让LLM做出未来决策或操作复杂工具的需求,从而减少了不必要的复杂性和开销。

  2. 高性价比表现:在SWE-bench Lite基准测试中,AGENTLESS实现了最高27.33%的性能水平,同时成本仅为每项$0.34,这显著优于所有现有的开源软件代理。这一成就表明,即使没有复杂的代理机制,也能达到甚至超越其他高级解决方案的效果。

  3. 问题分类与优化:研究团队人工分类了SWE-bench Lite中的问题,识别出包含确切修补程序或描述不足/误导性的问题。通过创建SWE-bench Lite-S版本,排除这些有争议的问题,他们提供了一个更严格和精准的评价基准,进一步提升了评估的准确性。

  4. 无需自主工具使用与规划:AGENTLESS明确禁止LLM自主使用工具或规划,这意味着它不需要建模复杂的环境行为或反馈,从而避免了传统代理系统中常见的额外负担。这种方法简化了开发过程,同时也降低了运行成本。

综上所述,AGENTLESS的核心创新在于其简约而高效的策略,通过去除不必要的复杂性,它能够在保持高性能的同时大幅降低成本,为自动化的软件开发提供了一种全新的视角和方法。

🧩 不足

  1. 问题描述质量参差不齐:部分问题描述缺乏足够的信息,导致任务执行时可能会遇到困难。例如,有些任务要求实现具体名称的函数或添加特定字符串的错误消息,如果这些细节没有在问题描述中给出,即使功能实现正确,测试也会失败。另外,有些问题可能存在多种理解方式,其中只有部分解法能够满足测试标准,这也增加了解决问题的难度。

  2. 描述中提供的解决方案影响:在问题描述中有时会给出解决方案或步骤,这可能导致模型在解决实际问题时受到误导。特别是当描述中提供的解决方案与实际情况不符时,模型可能会遵循错误的指导,从而影响修复效果。

  3. 基准测试的局限性:SWE-bench Lite和SWE-bench Lite-S这两个基准测试集中存在一些不合理或描述不清的问题,这可能扭曲了模型的真实能力评估。例如,有些问题已经提供了确切的修复代码,或者问题描述含糊不清,这些问题的存在影响了基准测试的公正性和准确性。

  4. 对特定类型问题的处理能力有限:在对SWE-bench Lite进行分类分析时发现,对于那些需要精确匹配函数名称或错误消息字符串的问题,AGENTLESS和其他模型可能因描述信息不足而难以找到正确的解决方案。此外,对于描述中包含误导性解决方案建议的问题,模型也可能受其影响而无法通过测试。

  5. 模型能力受限:尽管AGENTLESS方法在特定问题集上表现出色,但其成功依赖于问题描述的质量和清晰度。对于那些描述模糊或缺乏关键信息的问题,其解决能力可能会受到限制,这表明当前的LLM模型在理解和处理复杂、非结构化信息方面仍有待提高。

为了克服这些局限性,研究者建议进一步优化和筛选SWE-bench Lite问题集,以确保问题描述完整、清晰,并且避免包含误导性信息。此外,开发更强大的LLM模型,使其能够更好地理解和处理复杂多变的自然语言描述,也是未来研究的重要方向。

🔁 实验卡

💧 数据

研究使用了流行的SWE-bench Lite基准数据集,该数据集包含了300个软件工程问题。为了更严格地评估和比较,研究人员手动分类了这些问题,并排除了描述不准确或具有误导性的问题,构建了SWE-bench Lite-S。

👩🏻‍💻 方法

定位阶段
  1. 项目结构转换:AGENTLESS首先将整个项目代码库转换成树状结构,这样可以直观地展示出每个文件在项目中的相对位置。

  2. 文件级定位:在得到项目的目录结构后,利用大型语言模型(LLM),根据问题描述和此结构图,确定最可疑的前N个文件,这些文件可能是问题所在的地方。

  3. 类与函数级定位:对于选定的文件,进一步细化到具体的类和函数。通过向LLM提供文件的声明头(即类和函数的列表),模型可以输出需要重点检查的类和函数列表。

  4. 代码行级定位:最后,将前一阶段选出的类和函数的完整代码内容呈现给LLM,以便进一步缩小需要修改的位置,可以是特定的类、函数,甚至是具体代码行。

修复阶段
  1. 生成候选补丁:在确定了需要修改的代码位置之后,将这些位置的代码片段以及问题描述一起输入给LLM,请求生成多个用于解决问题的候选补丁。

  2. 语法与测试过滤:接下来,AGENTLESS会对生成的补丁进行初步的过滤,移除任何存在语法错误或不能通过先前测试的补丁。

  3. 补丁重排与选择:在过滤掉不合格的补丁后,剩余的补丁会根据某种多数投票机制进行重新排序,最终选择排名第一的补丁作为最终提交的修复方案。

AGENTLESS方法的关键优势在于其简洁性、效率和成本效益。通过避免使用复杂的工具和避免让LLM自主决定未来的行动,AGENTLESS在SWE-bench Lite基准测试中实现了最高的性能和最低的总体成本。这种方法的另一个亮点是它能够处理那些具有确切修复代码或问题描述不足的情况,通过构建更严谨的SWE-bench Lite-S基准,排除有问题的任务,以更准确地评估软件开发问题的解决能力。总的来说,AGENTLESS代表了自主软件开发领域中一种被忽视的潜力,为未来研究设定了新的起点和目标。

🔬 实验

本文主要介绍了使用基于大模型的自动软件工程(AGENTLESS)工具在SWE-bench数据集上的表现,并与现有的商业和开源工具进行了比较。实验包括两个部分:首先,作者对AGENTLESS和其他13个工具进行了比较,评估了它们在修复问题方面的性能;其次,作者还分析了这些问题的分类以及它们对修复性能的影响。

在第一个实验中,作者将AGENTLESS与其他13个工具进行了比较,这些工具代表了当前最先进的软件工程自动化技术。作者采用了四个评估指标来衡量这些工具的表现:解决率、平均成本、平均输入输出标记数和正确位置百分比。结果表明,AGENTLESS虽然没有其他工具表现得那么好,但它非常简单且易于实现,而且相对于其他开源工具,它的性能更好。

在第二个实验中,作者对SWE-bench数据集中的问题进行了分类,并分析了每种类型的修复性能。作者发现,有些问题提供了确切的解决方案或步骤,而有些则没有提供足够的信息。此外,有些问题提供了正确的文件、函数或行级别的位置信息,而有些则没有提供任何线索。通过这个实验,作者认为有必要进一步改进SWE-bench数据集中的一些问题,以提高工具的性能。

总的来说,本文展示了AGENTLESS在软件工程自动化方面具有潜力,并为未来的改进提供了方向。

📜 结论

5
4

在SWE-bench Lite上的测试结果显示,AGENTLESS能有效解决82个问题,占比27.33%,并且平均每项解决问题的成本仅为$0.34,这是所有开源代理中表现最佳的结果。此外,研究还对SWE-bench Lite中的问题进行了详细的分类,发现了一些带有精确修复代码或问题描述不充分的情况,因此构建了SWE-bench Lite-S数据集,排除这些问题后进行更严格的评估比较。这一系列实验不仅展示了AGENTLESS的高效性和经济性,也揭示了在自主软件开发领域中简单、可解释的技术的潜力。

🤔 总结卡

文章优点

  • 提出了一个简单而有效的解决方案来解决软件开发问题。
  • 与传统的基于代理的方法相比,该方法不需要复杂的工具设计或自主决策规划,从而避免了相关限制和缺陷。
  • 在SWE-bench Lite基准测试中,这种方法实现了最高的性能,并且成本更低。
  • 对SWE-bench Lite进行了详细的分类研究,为构建更严格的基准提供了新的见解。

方法创新点

  • 通过两个阶段的过程(定位和修复)来解决问题,而不是使用复杂的自主决策规划。
  • 使用递归过程来定位错误,以便更好地理解代码库中的依赖关系。
  • 生成多个候选补丁并对其进行简单的过滤以提高效率。

未来展望

  • 这种方法的成功表明,对于某些任务,简单和可解释的技术可能比复杂和高度自动化的技术更具优势。
  • 可能需要进一步研究如何将这种简单方法扩展到更广泛的问题领域。
  • 可能还需要探索其他类型的工具和技术,以解决更复杂的软件开发问题。

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

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

相关文章

【pytorch19】交叉熵

分类问题的loss MSECross Entropy LossHinge Loss (SVN用的比较多) ∑ i m a x ( 0 , 1 − y i ∗ h θ ( x i ) ) \sum_imax(0,1-y_i*h_\theta(x_i)) ∑i​max(0,1−yi​∗hθ​(xi​)) Entropy(熵) Uncertainty(…

使用 ESP32-WROOM + DHT11 做个无屏温湿度计

最近梅雨天,有个房间湿度很大,而我需要远程查看温湿度,所以无所谓有没有显示屏,某宝上的温湿度计都是带屏的,如果连WIFI查看温湿度操作也比较麻烦,还需要换电池,实在不能满足我的需求&#xff0…

聊天广场(Vue+WebSocket+SpringBoot)

由于心血来潮想要做个聊天室项目 ,但是仔细找了一下相关教程,却发现这么多的WebSocket教程里面,很多都没有介绍详细,代码都有所残缺,所以这次带来一个比较完整得使用WebSocket的项目。 目录 一、效果展示 二、准备工…

python自动化办公之cryptography加密解密

目录 用到的库 实现效果 代码部分 1、加密2024.txt文件 2、解密2024.txt文件 用到的库 cryptography 实现效果 加密文件和解密文件 代码部分 1、加密2024.txt文件 # 加密 from cryptography.fernet import Fernet # 生成加密密钥 keyFernet.generate_key() cipher_s…

robotframework-appiumLibrary 应用 - 实现 app 自动化

1、安装appiumLibrary第三方库 运行pip命令:pip install robotframework-appiumlibrary 若已安装,需要更新版本可以用命令:pip install -U robotframework-appiumlibrary 2、安装app自动化环境。 参考我的另外一篇专门app自动化环境安装的…

baomidou多数据源切换注解@DS没有效果

baomidou多数据源切换注解DS没有效果 <dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot-starter</artifactId><version>3.1.1</version> </dependency> ##原因 方法上有Transaction…

Android Studio Run窗口中文乱码解决办法

Android Studio Run窗口中文乱码解决办法 问题描述&#xff1a; AndroidStudio 编译项目时Run窗口中文乱码&#xff0c;如图&#xff1a; 解决方法&#xff1a; 依次打开菜单&#xff1a;Help--Edit Custom VM Options&#xff0c;打开studio64.exe.vmoptions编辑框&#xf…

2.1 tmux和vim

文章目录 前言概述tmuxvim总结 前言 开始学习的时间是 2024.7.6 ,13&#xff1a;47 概述 最好多使用&#xff0c;练成条件反射式的 直接使用终端的工具&#xff0c;可以连接到服务器&#xff0c;不需要使用本地的软件 tmux 这个主要有两个功能&#xff0c;第一个功能是分…

macOS查看系统日志的方法

1、command空格键打开搜索框&#xff0c;输入‘控制台’并打开 2、选择日志报告&#xff0c;根据日期打开自己需要的文件就可以

【vue组件库搭建05】vitePress中使用vue/antd/demo预览组件

一、vitepress使用vue及antd组件 1.安装antd之后在docs\.vitepress\theme\index.ts引入文件 // https://vitepress.dev/guide/custom-theme import { h } from vue import type { Theme } from vitepress import DefaultTheme from vitepress/theme import ./style.css impor…

智慧矿山建设规划方案(121页Word)

智慧矿山建设项目方案摘要 一、项目背景及现状分析 项目背景 随着信息技术的迅猛发展&#xff0c;智慧化、数字化已成为矿山行业转型升级的必然趋势。智慧矿山建设项目旨在通过集成先进的信息技术手段&#xff0c;实现对矿山生产、管理、安全等全过程的智能化监控与管理&…

大厂面试官赞不绝口的后端技术亮点【后端项目亮点合集(2)】

本文将持续更新~~ hello hello~ &#xff0c;这里是绝命Coding——老白~&#x1f496;&#x1f496; &#xff0c;欢迎大家点赞&#x1f973;&#x1f973;关注&#x1f4a5;&#x1f4a5;收藏&#x1f339;&#x1f339;&#x1f339; &#x1f4a5;个人主页&#xff1a;绝命C…

【MYSQL】InnoDB引擎为什么选可重复读作为默认隔离级别

InnoDB引擎为什么选可重复读作为默认隔离级别 一般的DBMS系统&#xff0c;默认都会使用读提交&#xff08;Read-Comitted&#xff0c;RC&#xff09;作为默认隔离级别&#xff0c;如Oracle、SQL Server等&#xff0c;而MySQL却使用可重复读&#xff08;Read-Repeatable&#x…

一级指针 二级指针

目录 一级指针 二级指针 通过二级指针打印原数据 一级指针 一级指针就是存放变量的指针 代码演示&#xff1a; #include<stdio.h> int main() {int a 10;int* pa &a;return 0; } pa就是一级指针变量&#xff0c;是变量就会有地址&#xff0c;因为变量都是在…

Spring Boot 中的监视器是什么?有什么作用?

前言&#xff1a; 监听器相信熟悉 Spring、Spring Boot 的都知道&#xff0c;但是监视器又是什么&#xff1f;估计很多人一脸懵的状态&#xff0c;本篇分享一下 Spring Boot 的监视器。 Spring Boot 系列文章传送门 Spring Boot 启动流程源码分析&#xff08;2&#xff09; …

四端口千兆以太网交换机与 SFP 扩展功能

在数字化时代&#xff0c;网络基础设施的重要性日益凸显&#xff0c;它是企业和个人取得成功的关键支撑。配备 SFP 插槽的 4 端口千兆以太网交换机提供了一种灵活且可扩展的网络解决方案&#xff0c;能够应对快速的数据传输、低延迟以及不断增长的带宽需求。本篇文章深入探讨了…

轻松设置:服务器域名配置全攻略

目录 前置条件 在阅读本篇内容之前&#xff0c;请先确保以下物料已准备好&#xff1a; 一台公网服务器&#xff0c;服务正常运行申请完成的域名&#xff0c;在对应域名服务商后台正常DNS解析域名备案完成可选条件&#xff1a;有https访问请求时&#xff0c;需要申请SSL证书 …

Spring源码十三:非懒加载单例Bean

上一篇Spring源码十二&#xff1a;事件发布源码跟踪中&#xff0c;我们介绍了Spring中是如何使用观察者设计模式的思想来实现事件驱动开发的&#xff1a;实际上就是将所有监听器注册到广播器中&#xff0c;并通过监听该事件的监听器来处理时间的。结合前面十二篇文章我们将Spri…

关于linux服务器更改镜像后连接不上vscode问题

问题样子解决办法直接看 问题样子 问题描述&#xff1a;从centos换到ubantu后&#xff0c;xshell能直接连接上&#xff08;没有更改ssh配置信息&#xff09;&#xff0c;但是vscode连不上&#xff08;配置文件因为端口号和ip是一样的&#xff0c;也没法改&#xff09; 猜测…

这款新的 AI 语音助手击败了 OpenAI,成为 ChatGPT 最受期待的功能之一

OpenAI 推迟了 ChatGPT 令人印象深刻的语音模式&#xff0c;这让许多 AI 聊天机器人的粉丝感到不安&#xff0c;但他们现在可能已经被挖走了。法国人工智能开发商 Kyutai 推出了一款名为 Moshi 的实时语音 AI 助手。 Moshi 旨在通过语音&#xff08;如 Alexa 或 Google Assista…