SWE-Fixer: Training Open-Source LLMs for Effective and Efficient GitHub Issue Resolution

2025年01月09日
  • 简介
    大型语言模型(LLMs)在各种复杂任务中展现了卓越的能力。LLMs的一个重要应用是解决软件工程挑战,特别是在GitHub上根据用户报告的问题修复代码来处理现实世界的任务。然而,许多当前的方法依赖于专有的LLMs,这限制了可重复性、可访问性和透明度。针对软件工程问题的LLMs的关键组件及其能力如何有效增强仍然不清楚。为了解决这些挑战,我们引入了SWE-Fixer,这是一种新型的开源LLM,旨在高效且有效地解决GitHub上的问题。SWE-Fixer包含两个核心模块:代码文件检索模块和代码编辑模块。检索模块使用BM25算法结合轻量级LLM模型实现从粗到精的文件检索。随后,代码编辑模块利用另一个LLM模型为已识别的文件生成补丁。为了应对公开可用数据集的缺乏,我们编制了一个包含11万条GitHub问题及其对应补丁的广泛数据集,并分别训练了SWE-Fixer的两个模块。我们在SWE-Bench Lite和Verified基准上评估了我们的方法,在开源模型中取得了最先进的性能,得分分别为23.3%和30.2%。这些结果突显了我们方法的有效性。我们将把我们的模型、数据集和代码公开发布在https://github.com/InternLM/SWE-Fixer。
  • 图表
  • 解决问题
    论文试图解决大型语言模型(LLM)在软件工程领域,特别是修复GitHub代码问题时的可复现性、可访问性和透明度不足的问题。这是一个新问题,尤其关注于使用开源模型和公开数据集来提高这些方面的性能。
  • 关键思路
    关键思路在于引入了SWE-Fixer,一个新型的开源LLM,它由两个模块组成:一个是基于BM25和轻量级LLM的代码文件检索模块,另一个是用于生成代码补丁的代码编辑模块。这种设计不仅提高了模型在解决实际GitHub问题上的效率,还通过分离训练这两个模块,增强了模型的灵活性和针对性。
  • 其它亮点
    该研究编译了一个包含110K个GitHub问题及其对应补丁的大型公开数据集,并在此基础上训练了SWE-Fixer的两个模块。实验结果表明,在SWE-Bench Lite和Verified基准测试中,SWE-Fixer分别达到了23.3%和30.2%的准确率,这是开源模型中的最佳表现。此外,所有模型、数据集和代码都将被公开,为后续研究提供了坚实的基础。
  • 相关研究
    最近在这个领域,有几项相关研究值得关注,如《CodeBERT: A Pre-trained Model for Programming and Natural Languages》和《GraphCodeBERT: A Pre-trained Model for Code-Text Generation and Translation》。这些研究同样致力于提升代码理解和生成的能力,但主要集中在预训练模型的应用上,而SWE-Fixer则更专注于解决具体GitHub问题的实际应用。
PDF
原文
点赞 收藏 评论 分享到Link

沙发等你来抢

去评论