CodeJudgeBench: Benchmarking LLM-as-a-Judge for Coding Tasks

📄 arXiv: 2507.10535v2 📥 PDF

作者: Hongchao Jiang, Yiming Chen, Yushi Cao, Hung-yi Lee, Robby T. Tan

分类: cs.CL, cs.AI, cs.SE

发布日期: 2025-07-14 (更新: 2025-08-14)

备注: Dataset is available at https://huggingface.co/datasets/mattymchen/codejudgebench


💡 一句话要点

提出CodeJudgeBench,评估LLM作为代码评判者在代码生成、修复和测试生成任务中的性能。

🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)

关键词: LLM 代码评判 基准测试 代码生成 代码修复 单元测试生成 思维模型 提示工程

📋 核心要点

  1. 现有LLM在代码评估中应用受限于缺乏专用基准,难以有效评估其作为评判者的能力。
  2. CodeJudgeBench通过代码生成、修复和单元测试任务,为LLM代码评判能力提供基准测试。
  3. 实验表明,思维模型优于非思维模型,但所有模型在判断中存在随机性,提示策略影响性能。

📝 摘要(中文)

大型语言模型(LLMs)在各种编码任务中显著提升了技术水平。除了直接回答用户查询外,LLMs还可以作为评判者,评估和比较其他模型生成的响应质量。这种评估能力对于基准测试不同的LLMs以及通过响应排序来提高响应质量至关重要。然而,尽管LLM-as-a-Judge范式越来越受欢迎,但由于缺乏专门的基准,其在编码场景中的有效性仍未得到充分探索。为了解决这一差距,我们引入了CodeJudgeBench,这是一个专门设计的基准,用于评估LLM-as-a-Judge模型在三个关键编码任务中的性能:代码生成、代码修复和单元测试生成。通过对26个LLM-as-a-Judge模型进行全面基准测试,我们发现最近的思维模型明显优于我们精心设计的代码评判任务中的非思维模型。值得注意的是,即使是相对较小的思维模型,如Qwen3-8B,也可以胜过高达70B的专门训练的LLM-as-a-Judge模型。然而,所有模型在编码任务的判断中仍然表现出显著的随机性。对于成对判断任务,简单地改变响应的呈现顺序可能会大大影响准确性。此外,在判断由不同LLMs编写的代码和单元测试时,LLM-as-a-Judge模型也表现出性能差异。这种敏感性引起了人们对LLM-as-a-Judge在编码场景中的可靠性和一致性的担忧。最后,我们研究了LLM-as-a-Judge的最佳提示策略。我们发现使用成对比较优于标量点判断。此外,保留完整、未经处理的LLM响应中的注释和推理可以提高评判性能。

🔬 方法详解

问题定义:现有的大型语言模型(LLM)在代码生成、代码修复和单元测试生成等任务中表现出色,但缺乏专门的基准来评估LLM作为代码评判者的能力。现有方法难以系统性地评估LLM在判断代码质量、比较不同模型输出方面的有效性,阻碍了LLM在代码相关任务中的进一步应用和优化。

核心思路:CodeJudgeBench的核心思路是构建一个专门用于评估LLM作为代码评判者的基准。通过设计包含代码生成、代码修复和单元测试生成三个关键编码任务的数据集,并结合不同的评判策略,系统性地评估LLM在判断代码质量和区分不同模型输出方面的能力。这种方法旨在弥补现有基准的不足,为LLM在代码相关任务中的应用提供更可靠的评估依据。

技术框架:CodeJudgeBench包含以下主要组成部分:1) 三个核心编码任务的数据集:代码生成、代码修复和单元测试生成;2) 多种评判策略:包括标量点判断和成对比较;3) 评估指标:用于量化LLM作为评判者的性能,例如准确率、一致性等;4) 基线模型:选择多个具有代表性的LLM作为评判者进行评估,包括思维模型和非思维模型。整体流程是:首先,利用数据集生成不同的代码解决方案;然后,使用LLM作为评判者对这些解决方案进行评估;最后,根据评估结果计算各项指标,从而评估LLM作为评判者的性能。

关键创新:CodeJudgeBench的关键创新在于其专门针对LLM作为代码评判者而设计。与现有的通用基准不同,CodeJudgeBench关注于评估LLM在代码相关任务中的判断能力,并提供了多种评判策略和评估指标。此外,该基准还考虑了LLM判断的随机性和敏感性,并研究了最佳的提示策略。

关键设计:CodeJudgeBench的关键设计包括:1) 数据集的构建:精心选择和设计代码生成、代码修复和单元测试生成任务,确保数据集的多样性和代表性;2) 评判策略的选择:采用标量点判断和成对比较两种策略,以评估LLM在不同评判方式下的性能;3) 提示工程:研究不同的提示策略,例如保留注释和推理过程,以提高LLM作为评判者的性能;4) 评估指标的设计:采用准确率、一致性等指标,全面评估LLM作为评判者的性能。

🖼️ 关键图片

img_0

📊 实验亮点

实验结果表明,思维模型(如Qwen3-8B)在CodeJudgeBench上显著优于非思维模型,甚至可以超越参数量更大的专门训练的LLM-as-a-Judge模型。然而,所有模型在判断中都表现出显著的随机性,改变响应的呈现顺序会影响准确性。成对比较优于标量点判断,保留注释和推理过程可以提高评判性能。

🎯 应用场景

CodeJudgeBench可用于评估和比较不同LLM在代码相关任务中的性能,指导LLM的训练和优化。它还可应用于自动化代码评审、代码质量评估和智能编程辅助工具的开发,提升软件开发效率和质量。未来,该基准可扩展到更多编程语言和代码任务,并结合人类反馈,进一步提高LLM作为代码评判者的可靠性和实用性。

📄 摘要(原文)

Large Language Models (LLMs) have significantly advanced the state-of-the-art in various coding tasks. Beyond directly answering user queries, LLMs can also serve as judges, assessing and comparing the quality of responses generated by other models. Such an evaluation capability is crucial both for benchmarking different LLMs and for improving response quality through response ranking. However, despite the growing adoption of the LLM-as-a-Judge paradigm, its effectiveness in coding scenarios remains underexplored due to the absence of dedicated benchmarks. To address this gap, we introduce CodeJudgeBench, a benchmark explicitly designed to evaluate the performance of LLM-as-a-Judge models across three critical coding tasks: code generation, code repair, and unit test generation. Through comprehensive benchmarking of 26 LLM-as-a-Judge models, we find that recent thinking models significantly outperform non-thinking models on our carefully designed code judging tasks. Notably, even relatively small thinking models, such as Qwen3-8B, can outperform specially trained LLM-as-a-Judge models up to 70B in size. Nevertheless, all models still exhibit significant randomness in their judgment of coding tasks. For pairwise judging tasks, simply changing the order in which responses are presented can substantially impact accuracy. In addition, when judging code and unit tests written by different LLMs, LLM-as-a-Judge models also show variance in performance. This sensitivity raises concerns about the reliability and consistency of LLM-as-a-Judge in coding scenarios. Lastly, we study optimal prompting strategies for LLM-as-a-Judge. We find that using pair-wise comparison outperforms scalar point-wise judging. Furthermore, retaining comments and reasoning in the full, unprocessed LLM response leads to improved judge performance.