CigaR: Cost-efficient Program Repair with LLMs
作者: Dávid Hidvégi, Khashayar Etemadi, Sofia Bobadilla, Martin Monperrus
分类: cs.SE, cs.LG
发布日期: 2024-02-09 (更新: 2024-04-18)
💡 一句话要点
提出CigaR以降低LLM程序修复成本
🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)
关键词: 程序修复 大型语言模型 成本优化 自动化测试 软件维护
📋 核心要点
- 现有的LLM程序修复方法在成本上存在显著挑战,尤其是令牌使用量高,导致企业开销增加。
- CigaR通过生成初步补丁和扩展补丁,优化提示设置,以最小化令牌使用并降低修复成本。
- 实验结果表明,CigaR在修复相同错误时,平均令牌使用量显著低于基线,节省高达96%的成本。
📝 摘要(中文)
大型语言模型(LLM)在自动化程序修复(APR)中表现出色,但其使用成本较高,通常按令牌数量收费。本文提出CigaR,这是首个专注于降低修复成本的LLM基础APR工具。CigaR通过生成初步可行的补丁和扩展可行补丁来工作,优化提示和设置,以最小的令牌数量最大化信息传递。实验结果显示,CigaR在处理429个来自Defects4J和HumanEval-Java数据集的错误时,令牌成本降低了73%。
🔬 方法详解
问题定义:本文旨在解决使用大型语言模型进行程序修复时的高成本问题,现有方法通常需要大量令牌,导致企业负担加重。
核心思路:CigaR的核心思路是通过生成初步可行的补丁并扩展这些补丁,优化提示以减少令牌使用,从而降低修复成本。
技术框架:CigaR的整体架构分为两个主要阶段:首先生成一个初步补丁,然后通过多样化生成多个可行补丁。每个阶段都优化提示设置,以确保信息的最大化传递。
关键创新:CigaR的主要创新在于其针对性地优化提示和设置,显著降低了令牌使用量,区别于传统方法的高令牌消耗。
关键设计:在设计中,CigaR采用了精简的提示结构和高效的补丁生成策略,确保在生成补丁时使用最少的令牌,同时保持修复效果的有效性。
🖼️ 关键图片
📊 实验亮点
CigaR在实验中表现出色,处理429个错误时,令牌使用量平均为127k,而基线方法为467k,节省了73%。在同时修复的错误子集上,CigaR的令牌使用量仅为20k,相比基线的608k节省了96%。
🎯 应用场景
CigaR的研究成果具有广泛的应用潜力,尤其在软件开发和维护领域。通过降低程序修复的成本,CigaR可以帮助企业更高效地管理代码质量,减少维护开销。此外,随着软件系统的复杂性增加,CigaR的技术也可能在自动化测试和代码审查等领域发挥重要作用。
📄 摘要(原文)
Large language models (LLM) have proven to be effective at automated program repair (APR). However, using LLMs can be costly, with companies invoicing users by the number of tokens. In this paper, we propose CigaR, the first LLM-based APR tool that focuses on minimizing the repair cost. CigaR works in two major steps: generating a first plausible patch and multiplying plausible patches. CigaR optimizes the prompts and the prompt setting to maximize the information given to LLMs using the smallest possible number of tokens. Our experiments on 429 bugs from the widely used Defects4J and HumanEval-Java datasets shows that CigaR reduces the token cost by 73%. On average, CigaR spends 127k tokens per bug while the baseline uses 467k tokens per bug. On the subset of bugs that are fixed by both, CigaR spends 20k per bug while the baseline uses 608k tokens, a cost saving of 96%. Our extensive experiments show that CigaR is a cost-effective LLM-based program repair tool that uses a low number of tokens to automatically generate patches.