分享自:

SWE-Agent:通过代理-计算机接口实现自动化软件工程

期刊:38th conference on neural information processing systems (NeurIPS 2024)

本文档是一篇名为“SWE-Agent: Agent-Computer Interfaces Enable Automated Software Engineering”的学术论文,发表于第38届神经信息处理系统大会(NeurIPS 2024)。作者来自普林斯顿大学普林斯顿语言与智能中心(Princeton Language and Intelligence, Princeton University),主要作者包括John Yang、Carlos E. Jimenez、Alexander Wettig、Kilian Lieret、Shunyu Yao、Karthik Narasimhan和Ofir Press,其中John Yang和Carlos E. Jimenez为共同第一作者。

该研究属于人工智能与软件工程的交叉领域,具体聚焦于语言模型(Language Model, LM)智能体(Agent)的交互界面设计。研究背景在于,随着语言模型能力的提升,它们越来越多地被用作智能体来自动化数字环境中的复杂任务,例如代码生成。然而,与人类工程师拥有集成开发环境(IDE)等强大工具不同,现有的语言模型智能体通常直接使用为人类设计的接口(如Linux Shell),这可能导致效率低下和错误频发。因此,研究团队提出,语言模型智能体代表了一类具有独特需求和能力的新型终端用户,它们需要专门为其设计的、能够扬长避短的接口。基于这一认识,该研究引入了“智能体-计算机接口”(Agent-Computer Interface, ACI)的概念,并旨在探索接口设计如何影响语言模型智能体在复杂软件工程任务中的性能。研究的具体目标是设计并验证一个名为SWE-Agent的系统和其ACI,使其能够自主使用计算机解决现实世界中的软件工程问题,例如修复GitHub issue中报告的错误。

研究的工作流程主要包括以下几个部分:ACI概念与设计原则的提出、SWE-Agent系统的构建、在标准基准上的性能评估、以及对设计选择与智能体行为的详细分析。

首先,研究团队明确了ACI的定义:它是位于语言模型智能体与计算机环境之间的一个抽象层,规定了智能体可用的命令集以及环境状态反馈给智能体的格式。他们从人机交互(HCI)研究中汲取灵感,并通过手动检查智能体行为和网格搜索配置两种方法,提炼出针对语言模型智能体的核心ACI设计原则:1)命令应简单易懂:避免像bash命令那样拥有数十个选项,简洁的文档能减少对演示或微调的依赖。2)命令应紧凑高效:将高阶操作(如文件导航、编辑)整合到尽可能少的动作中,使智能体能在单步中取得有意义的进展。3)环境反馈应信息丰富且简洁:提供关于环境状态和动作效果的实质性信息,同时避免不必要的细节。4)设置防护栏以减轻错误传播:集成如语法检查器之类的防护机制,帮助智能体识别并快速纠正错误。

基于这些原则,研究团队构建了SWE-Agent系统。该系统由一个语言模型(如GPT-4 Turbo)和一个专门设计的ACI组成。ACI的核心组件包括:1)搜索与导航:提供了find_filesearch_filesearch_dir等专用命令,用于在代码库中按文件名或内容字符串进行搜索,并将结果以简洁的摘要形式返回(最多50条结果),避免输出泛滥。2)文件查看器:通过opengotoscroll_downscroll_up命令,允许智能体以窗口形式(默认100行)查看文件,并显示文件路径、总行数、当前窗口前后的省略行数以及每行的行号,便于精确定位。3)文件编辑器:关键的edit命令允许智能体指定起始行、结束行和替换文本来替换文件中的多行代码。编辑后,文件查看器会自动显示更新后的内容,提供即时反馈。更重要的是,该命令集成了代码语法检查(linting)防护栏:如果编辑引入了语法错误(如缩进错误、未定义符号),编辑将被拒绝执行,并向智能体展示错误信息、编辑后的代码片段和原始代码片段,引导其修正。4)上下文管理:系统提示包含环境描述、命令文档、问题描述和解决策略提示。在交互过程中,系统管理历史观察,将最近5次观察之外的先前观察折叠成单行摘要,以减少无关上下文,节省上下文窗口空间并避免展示过时的文件信息。智能体遵循ReAct范式,在每一步生成“思考”和“动作”。

研究的评估对象是标准软件工程基准数据集。主要评估集是SWE-Bench,它包含来自12个流行Python仓库的2294个真实GitHub issue任务实例。此外,还使用了HumanEvalFix基准来测试基础的代码调试能力。研究使用的主要语言模型是GPT-4 Turbo和Claude 3 Opus。设置了两个基线进行比较:1)非交互式检索增强生成(RAG)基线:直接从相关文件中生成补丁。2)仅使用Shell(Shell-only)的交互式基线:智能体只能使用标准的Linux bash命令进行交互。

在实验配置上,研究首先在SWE-Bench开发集的一个小子集上通过定性分析和网格搜索确定了最终的ACI设计参数(如查看器窗口大小、历史处理方式、解码温度)。然后,在完整的测试集上评估SWE-Agent的性能,主要指标是解决率(% resolved)或pass@1,即应用模型生成的补丁后所有测试通过的任务实例比例。同时,还统计了成功解决实例的平均API调用成本。

研究的主要结果如下:在SWE-Bench完整测试集上,使用GPT-4 Turbo的SWE-Agent取得了12.47%的解决率(286/2294),在SWE-Bench Lite(300个实例的子集)上达到18.00%。这显著超越了之前的最佳成绩(Claude 3 Opus的RAG基线,在完整集上为3.79%)。与使用相同GPT-4 Turbo模型但仅提供Shell接口的基线相比,SWE-Agent在Lite集上的性能相对提升了64%(从11.00%到18.00%)。在HumanEvalFix上,SWE-Agent w/ GPT-4 Turbo取得了87.7%的pass@1率,远超其他非交互式模型。这些结果强有力地证明了专门设计的ACI能够极大提升语言模型智能体在复杂软件工程任务上的性能,且这种提升不依赖于修改模型权重。

为了深入理解ACI设计的影响,研究进行了详尽的消融实验和分析。在搜索接口方面,对比了“总结式搜索”(一次性列出所有匹配结果摘要)和“迭代式搜索”(受VSCode等启发,逐条显示结果)。结果显示,迭代式搜索会导致智能体低效地遍历所有结果,耗尽预算或上下文窗口,其性能(12.0%)甚至不如不提供额外搜索工具(15.7%),而总结式搜索取得了最佳性能(18.0%)。这验证了“反馈需简洁”和“命令需高效”的原则。在编辑接口方面,消融实验表明,没有专用编辑命令(仅能使用sed或重写整个文件)的性能大幅下降至10.3%,而有关闭语法检查的编辑命令性能为15.0%,带有语法检查防护栏的完整编辑命令性能最高(18.0%)。这凸显了“紧凑编辑”和“防护栏”原则的重要性。此外,文件查看器的窗口大小也显著影响性能:30行(14.3%)或显示整个文件(12.7%)都不如100行窗口(18.0%),说明信息量需要平衡。

研究还对智能体在使用优化ACI后的行为模式进行了分析。轨迹分析显示,智能体通常从问题复现和/或定位开始,要么创建并运行复现代码,要么通过搜索命令定位相关文件和代码行。随后,进入一个以“编辑,然后执行”为核心的循环:智能体进行编辑,运行测试(如python命令),根据反馈可能再次进行搜索定位,然后继续编辑。编辑本身对智能体而言仍具挑战性:超过一半的轨迹中至少出现一次因语法错误而被拒绝的编辑。然而,防护栏机制有效:首次编辑尝试最终成功的概率为90.5%,即使在一次失败后,成功概率仍有57.2%。研究还发现,成功解决的任务往往耗时更短、成本更低(中位数:12步,1.21美元),而失败的任务则倾向于消耗更多资源(均值:21步,2.52美元),这表明单纯增加预算或步数限制对性能提升有限。对失败案例的自动分类显示,约52%的失败源于“实现不正确”或“实现过于特定”,即解决方案未能功能性地解决问题或泛化能力不足;另有23.4%的失败源于“未能从编辑错误中恢复”。

该研究的主要结论是:专门为语言模型智能体设计的智能体-计算机接口(ACI)能够显著提升其在复杂、现实世界软件工程任务上的性能,而无需修改底层语言模型的权重。SWE-Agent系统及其ACI的提出与验证,为将语言模型有效应用于端到端的软件工程自动化开辟了新途径。研究不仅贡献了一个高性能的开源系统,更重要的是提出了ACI这一概念框架和一套设计原则,为未来开发更高效、更可靠的语言模型智能体交互界面提供了指导。

本研究的亮点在于:1)概念创新:首次明确提出了“智能体-计算机接口”(ACI)这一概念,并将其定位为与人机接口(HCI)并列、专门服务于语言模型智能体的新设计领域。2)方法创新:设计并实现了一套针对软件工程任务优化的、融合了搜索、查看、编辑和防护栏的综合性ACI,其设计源于对语言模型能力与局限性的深刻理解。3)性能突破:在具有挑战性的SWE-Bench基准上取得了当时最好的性能,验证了精心设计的接口本身即是强大“赋能器”。4)深入分析:不仅报告了结果,还通过系统的消融实验和行为分析,揭示了不同接口设计选择如何具体影响智能体的行为模式与任务成功率,为ACI设计提供了实证依据。5)跨模型通用性:虽然主要针对GPT-4 Turbo设计,但研究表明该ACI可迁移至其他强大模型(如Claude 3 Opus),具有一定的通用性。

该研究的价值深远。在科学层面,它推动了我们对如何有效“激发”大型语言模型潜力的理解,表明通过塑造交互环境可以弥补模型的内在局限性(如对长上下文的低效利用、算术易错性)。它也为智能体研究提供了一个新的视角:除了改进模型本身,优化其与环境的交互接口是同等重要的研究方向。在应用层面,SWE-Agent展示了自动化解决真实世界软件工程问题的可行性,为开发AI辅助编程工具、自动化代码维护和测试等应用奠定了基础。最后,作者展望,对ACI的研究可以像HCI促进心理学研究一样,增进我们对人类智能与人工智能差异的对比理解,从而建立更普适的智能体交互理论。

上述解读依据用户上传的学术文献,如有不准确或可能侵权之处请联系本站站长:admin@fmread.com