- 简介最近的研究表明,将与错误相关的事实,例如堆栈跟踪和GitHub问题,纳入提示中可以增强大型语言模型(LLMs)的修复错误能力。考虑到这些模型的上下文窗口不断增加,一个关键问题出现了:应该包含多少个事实以最大化正确修复错误的机会?为了回答这个问题,我们进行了一项大规模研究,采用了超过19K个提示,其中包含七个不同事实的各种组合,以纠正来自BugsInPy基准测试的314个开源Python项目中的错误。我们的发现显示,每个事实都是有益的,从简单的语法细节,如代码上下文,到先前在LLMs上下文中未经探索的语义信息,例如天使值。具体来说,每个事实都有助于修复一些错误,否则这些错误将无法解决或仅能以低成功率修复。重要的是,我们发现程序修复提示的效果在使用的事实数量上是非单调的;使用过多的事实会导致次优结果。这些见解使我们定义了事实选择问题:确定要包含在提示中的最佳事实集,以最大化LLM在给定任务实例上的性能。我们发现,没有适用于所有错误修复的事实集。因此,我们开发了一个基本的统计模型,名为Maniple,它选择特定于给定错误的事实并将其包含在提示中。该模型显著超过了最佳通用事实集的性能。为了强调事实选择问题的重要性,我们将Maniple与最先进的零-shot、非对话LLM基础的错误修复方法进行了基准测试。在我们的测试数据集中,Maniple修复了88个错误,比最佳配置高出17%。
- 解决问题论文试图解决的问题是如何在大型语言模型中优化程序修复的能力,即通过加入不同的代码相关信息来提高修复代码错误的准确率。这是一个新问题。
- 关键思路论文提出了一个基于统计学的模型Maniple,通过选择特定的代码相关信息来优化程序修复的准确率。与现有的零-shot模型相比,Maniple的表现更好。
- 其它亮点论文通过大规模实验验证了不同的代码相关信息对于程序修复的准确率的影响。实验使用了开源Python项目中的314个bug,并设计了超过19K个prompt。论文开源了数据集和代码。值得深入研究的工作包括如何更好地选择代码相关信息以提高程序修复的准确率。
- 最近在这个领域中,还有一些相关的研究,例如“CodeBERT: A Pre-Trained Model for Programming and Natural Language Processing”和“Learning to Repair Software Vulnerabilities with Generative Adversarial Networks”等。
沙发等你来抢
去评论
评论
沙发等你来抢