介绍
(1) 发表:ISSTA'24
(2) 背景
软件工程涉及程序改进的过程,特别是软件维护(例如,程序错误修复)和软件演变(例如,功能添加)
自动化程序维修任务对实现自动软件工程愿景的重要性。鉴于自动化程序维修的动机,并且开发人员经常花费大量的时间来修复错误。本工作提出了 AutoCodeRover,实现了 SWE-bench-lite 上的 SOTA,并且提升了 19% 的效率
方法

(1) 上下文检索 API
我们观察到用户经常提及代码库中哪一部分相关的一些 "Hints"。这些提示可以是相关方法,类或文件的名称,有时还包含简短的代码段
在上下文检索阶段,基本组件是一组 API。本工作为 LLM Agents 设计了一组 API 以从这些 Hints 中找到相应的代码上下文

(2) 分层上下文搜索

提出了两个观察结果:① 上下文检索不应仅限于单个 API 调用 ② 某些 API 调用结果提供了更多的元素来构建新的 API 调用
搜索规则如下:
-
在每一层中允许 LLM 选择多个 API 调用,并指示它仅选择必要的调用,从而构建我们认为的最佳上下文
-
执行层中的 API 调用后,将新检索的代码片段添加到当前上下文中。然后提示 LLM 代理分析当前上下文是否足以理解问题,从而决定是否继续迭代搜索过程
(3) 分析增强的上下文检索
在这一步中研究了程序调试技术如何增强工作流程,具体而言将 SBFL 分析集成进来,以研究基于测试的动态分析的效果。SBFL 的主要作用是在问题陈述中提到的相关类别和方法上揭示更多的 "hints",由于SBFL识别的方法与问题陈述一起呈现给 Agent,因此 Agent 可以在这两个信息来源之间进行交叉引用。例如,如果SBFL识别的方法名称之一与问题语句更加紧密相关,则 LLM 更有可能在此名称上调用 search_method API。
- 基于频谱的故障定位 (SBFL):SBFL 的目的是确定软件故障的位置。给定测试套件t包含通过测试和失败测试,SBFL考虑了通过和失败的测试执行中的控制流差异,并将可疑性得分分配给不同的程序位置。具有最高可疑性分数的语句或者块被确定为可能性位置。由于LLM可以处理合理的长代码段,因此我们在AutoCoderover中使用方法级 SBFL
(4) 补丁生成
利用收集到的代码上下文来生成补丁,如果补丁无法通过测试套件,则进行重试循环 (在这一阶段还使用 linter 来检测 python 的语法特性问题)
实验结果

实现了 SWE-bench-lite 上的 SOTA,同时提升了效率和降低了成本
总结
更多的从软件视角提出了一个 LLM Agents 的框架,尽可能的利用代码上下文信息,理所当然的取得了很好的效果
AI大模型学习福利
作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
一、全套AGI大模型学习路线
AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获取
二、640套AI大模型报告合集
这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获
三、AI大模型经典PDF籍
随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获
四、AI大模型商业化落地方案

因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获
作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量
975

被折叠的 条评论
为什么被折叠?



