AutoCodeRover: Autonomous Program Improvement

2024年04月08日
  • 简介
    在过去的几十年中,研究人员在自动化软件开发过程方面取得了显著进展。已经建立了自动化问题摘要、错误重现、故障定位和程序修复等技术,以减轻开发人员的工作量。最近大型语言模型(LLMs)的进展对开发过程产生了重大影响,开发人员可以使用基于LLM的编程助手实现自动化编码。然而,软件工程涉及除编码外的程序改进过程,特别是为了实现软件维护(例如修复漏洞的程序修复)和软件演进(例如增加功能)。在本文中,我们提出了一种自动化方法来解决Github问题,以实现程序改进的自主性。在我们的方法AutoCodeRover中,LLMs与复杂的代码搜索能力相结合,最终导致程序修改或修补。与最近来自AI研究人员和从业者的LLM代理方法不同,我们的展望更加注重软件工程。我们处理程序表示(抽象语法树),而不是将软件项目视为简单的文件集合。我们的代码搜索利用类/方法的程序结构来增强LLM对问题根本原因的理解,并通过迭代搜索有效地检索上下文。使用基于谱的故障定位测试进一步锐化了上下文。在最近提出的SWE-bench-lite上进行的实验包括300个涉及错误修复和功能添加的真实Github问题,相比于AI社区的最近努力,显示出了更高的效力(在SWE-bench-lite上解决了超过20%),我们认为我们的工作流程实现了自主软件工程,在未来,可以自主改进LLMs自动生成的代码。
  • 图表
  • 解决问题
    实现自动化程序改进的自动化方法
  • 关键思路
    将大型语言模型与复杂的代码搜索相结合,使用程序表示形式(抽象语法树)和谱系故障定位来解决Github问题,从而实现自动化程序改进。
  • 其它亮点
    论文提出了一种自动化程序改进的方法AutoCodeRover,能够自动解决Github问题,包括修复程序错误和添加新功能。该方法使用大型语言模型和复杂的代码搜索,结合程序表示形式(抽象语法树)和谱系故障定位来提高效率。实验结果表明,该方法在SWE-bench-lite数据集上的表现优于当前AI社区的其他方法。
  • 相关研究
    在最近的研究中,使用大型语言模型的自动编程助手已经取得了显著进展。
PDF
原文
点赞 收藏 评论 分享到Link

沙发等你来抢

去评论