- 简介自动程序修复已经成为一种强有力的技术,可以减轻软件漏洞对系统可靠性和用户体验的影响。本文介绍了RepairAgent,这是第一篇通过基于大语言模型(LLM)的自主代理来解决程序修复挑战的工作。与现有的基于深度学习的方法不同,这些方法会提示模型使用固定的提示或在固定的反馈循环中进行操作,我们的工作将LLM视为代理,能够自主规划和执行修复漏洞的操作,通过调用合适的工具。RepairAgent自由地交错收集有关漏洞的信息、收集修复材料和验证修复,同时根据收集到的信息和以前修复尝试的反馈来决定调用哪些工具。使RepairAgent成为可能的关键贡献包括一组对程序修复有用的工具、一个动态更新的提示格式,允许LLM与这些工具交互,以及一个有限状态机,指导代理调用工具。我们在流行的Defects4J数据集上进行的评估表明,RepairAgent能够有效地自主修复164个漏洞,包括39个之前未被修复的漏洞。与LLM交互会对每个漏洞产生平均27万个标记的成本,在OpenAI的GPT-3.5模型的当前定价下,这相当于每个漏洞14美分的成本。据我们所知,这项工作是第一个提出基于自主、LLM的代理进行程序修复的工作,为未来基于代理的软件工程技术铺平了道路。
- 图表
- 解决问题本文旨在通过自主代理来解决程序修复的挑战,使用大型语言模型作为代理,以减轻软件漏洞对系统可靠性和用户体验的影响。这是否是一个新问题?
- 关键思路文章提出了RepairAgent,这是第一个基于大型语言模型的自主代理,用于解决程序修复挑战。相比现有的深度学习方法,该方法将LLM视为代理,能够自主规划和执行修复操作,从而更加灵活和高效。
- 其它亮点本文的亮点包括:使用一组有用的程序修复工具,动态更新的提示格式,以及有限状态机来指导代理调用工具。在Defects4J数据集上的评估表明,RepairAgent在修复164个漏洞方面非常有效,包括之前未被修复的39个漏洞。该方法的平均代价为每个漏洞270,000个令牌,使用OpenAI的GPT-3.5模型的当前定价,这相当于每个漏洞14美分。
- 最近在这个领域中,还有一些相关的研究,例如:Automated Program Repair、DeepFix、Prophet等。
沙发等你来抢
去评论
评论
沙发等你来抢