文章提出SWE-Judge,首个基于LLM集成评判的软件工件评估指标,用于解决代码生成、程序修复和代码摘要等任务中自动评估与人类判断的差距。该方法创新性地设计五种评估策略(直接评估、反思评估、等价性评估、测试生成评估和参考分析评估),通过动态团队选择机制组合最优策略子集,集成生成最终正确性分数。在六大数据集(CoNaLa、Card2Code等)上的实验表明,SWE-Judge与人类评估的相关性提升5.9%-183.8%,在代码生成和程序修复任务中达到接近人类间评估的一致性水平。
软件工程中自动生成代码片段、补丁和注释等工件的技术日益普及,但评估生成工件的正确性仍面临重大挑战:人工评估准确但缺乏扩展性;基于测试的指标(如Pass@k)依赖精心设计的测试用例;现有自动评估指标常无法准确反映正确性。文章提出SWE-Judge,通过大语言模型(LLM)的集成评判机制,首次实现软件工件正确性的高效自动评估。
受学术同行评审机制启发,SWE-Judge包含三个关键组件:
相比现有SOTA方法ICE-Score(单一直接评估策略),SWE-Judge的创新在于:
\[ \mathcal{E}(x,y,r) = \text{Ensemble}\left( \text{TeamSelect}\left( \bigcup_{i=1}^{5} P_i(x,y,r) \right) \right) \]
其中动态团队选择机制使评估适应不同数据集特性,多策略集成显著提升语义理解深度。
在三大软件工程任务上验证:
| 任务类型 | 数据集 | 工件类型 | 编程语言 |
|---|---|---|---|
| 代码生成 | CoNaLa, Card2Code | 代码片段 | Python |
| 程序修复 | APR-Assess | 代码补丁 | Java/C++ |
| 代码摘要 | Summary-Assess | 自然语言描述 | Java |
在基于测试执行的代码生成任务(HumanEval-X/APPS)中,SWE-Judge相关性提升32.1%-1691.7%,证明其从人类评估到测试执行的泛化能力。
SWE-Judge首次实现LLM驱动的软件工件多策略集成评估,显著缩小自动评估与人类判断的差距。未来工作将扩展至非功能性属性(如代码效率)评估,进一步提升软件自动化工具的可靠性。