Large Language Model Critics for Execution-Free Evaluation of Code Changes
作者: Aashish Yadavally, Hoan Nguyen, Laurent Callot, Gauthier Guinet
分类: cs.CL, cs.AI, cs.SE
发布日期: 2025-01-28
备注: 10 pages, 4 figures
🔗 代码/项目: GITHUB
💡 一句话要点
提出基于大语言模型的代码变更评估方法,无需执行即可评估代码质量。
🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)
关键词: 大语言模型 代码变更评估 无需执行评估 软件工程 黄金测试补丁
📋 核心要点
- 现有代码变更评估方法依赖构建状态和日志分析,信息稀疏,难以充分评估代码质量。
- 提出基于LLM的评论器,利用黄金测试补丁作为参考,无需执行即可评估代码变更的语义和可执行性。
- 实验表明,该方法在预测代码可执行性和构建状态方面表现出色,优于其他无参考和参考感知的LLM评论器。
📝 摘要(中文)
大型语言模型(LLMs)为自动化软件工程任务(如错误修复、功能添加等)提供了一种有前景的方法,通过基于LLM的多步骤代理工作流实现。然而,现有的评估此类工作流的指标,主要是构建状态和偶尔的日志分析,过于稀疏和有限,无法提供评估变更质量所需的信息。本文设计了基于LLM的评论器,为仓库级别的代码变更推导出结构良好且严谨的中间/步骤级别的、无需执行的评估代理。重要的是,我们假设可以访问问题的黄金测试补丁(即,参考感知),以评估生成的补丁的语义和可执行性。以黄金测试补丁作为参考,我们预测所有编辑位置的可执行性,F1得分为91.6%,汇总后,我们可以预测SWE-bench中84.8%的实例的构建状态。特别是,这种以执行为中心的LLM评论器比其他无参考和参考感知的LLM评论器高出38.9%到72.5%。此外,我们证明了这种参考感知框架在比较不同代理工作流生成的补丁方面的有用性。最后,我们开源了为该项目开发的库,允许进一步用于其他代理工作流或其他基准测试。源代码可在https://github.com/amazon-science/code-agent-eval获得。
🔬 方法详解
问题定义:现有基于LLM的代码变更评估方法依赖于构建状态和日志分析,这些指标提供的信息有限,无法充分评估代码变更的质量。此外,执行代码变更进行评估的成本较高,效率较低。因此,需要一种无需执行即可评估代码变更质量的方法。
核心思路:本文的核心思路是利用大型语言模型(LLMs)作为评论器,通过参考黄金测试补丁,预测代码变更的可执行性,从而评估代码变更的质量。这种方法无需执行代码变更,可以快速有效地评估代码质量。
技术框架:该方法的技术框架包括以下几个主要模块:1) LLM评论器:使用LLM作为评论器,评估代码变更的可执行性。2) 黄金测试补丁:使用黄金测试补丁作为参考,评估代码变更的语义和可执行性。3) 可执行性预测:预测所有编辑位置的可执行性。4) 构建状态预测:根据可执行性预测,预测构建状态。
关键创新:该方法最重要的技术创新点是使用LLM作为评论器,并参考黄金测试补丁,实现了无需执行即可评估代码变更质量。与现有方法相比,该方法可以更快速、更有效地评估代码质量。
关键设计:该方法的关键设计包括:1) 使用预训练的LLM作为评论器。2) 使用黄金测试补丁作为参考,提供代码变更的语义信息。3) 使用F1 score评估可执行性预测的准确性。4) 使用SWE-bench数据集进行实验评估。
🖼️ 关键图片
📊 实验亮点
实验结果表明,该方法在预测代码可执行性方面表现出色,F1得分为91.6%。在SWE-bench数据集上,该方法可以预测84.8%的实例的构建状态。与现有方法相比,该方法在可执行性预测方面提高了38.9%到72.5%。
🎯 应用场景
该研究成果可应用于自动化软件工程领域,例如自动化错误修复、功能添加等。它可以帮助开发人员快速评估代码变更的质量,提高开发效率。此外,该方法还可以用于比较不同代码生成模型的性能,选择最佳模型。
📄 摘要(原文)
Large language models (LLMs) offer a promising way forward for automating software engineering tasks, such as bug fixes, feature additions, etc., via multi-step LLM-based agentic workflows. However, existing metrics for evaluating such workflows, mainly build status and occasionally log analysis, are too sparse and limited in providing the information needed to assess the quality of changes made. In this work, we designed LLM-based critics to derive well-structured and rigorous intermediate/step-level, execution-free evaluation proxies for repo-level code changes. Importantly, we assume access to the gold test patch for the problem (i.e., reference-aware) to assess both semantics and executability of generated patches. With the gold test patch as a reference, we predict executability of all editing locations with an F1 score of 91.6%, aggregating which, we can predict the build status in 84.8% of the instances in SWE-bench. In particular, such an execution-focused LLM critic outperforms other reference-free and reference-aware LLM critics by 38.9% to 72.5%. Moreover, we demonstrate the usefulness of such a reference-aware framework in comparing patches generated by different agentic workflows. Finally, we open-source the library developed for this project, which allows further usage for either other agentic workflows or other benchmarks. The source code is available at https://github.com/amazon-science/code-agent-eval.