CodeJudge-Eval: Can Large Language Models be Good Judges in Code Understanding?

📄 arXiv: 2408.10718v2 📥 PDF

作者: Yuwei Zhao, Ziyang Luo, Yuchen Tian, Hongzhan Lin, Weixiang Yan, Annan Li, Jing Ma

分类: cs.SE, cs.CL

发布日期: 2024-08-20 (更新: 2024-09-13)

备注: The first two authors contributed equally

🔗 代码/项目: GITHUB


💡 一句话要点

提出CodeJudge-Eval以评估大型语言模型的代码理解能力

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

关键词: 代码理解 大型语言模型 基准评估 错误判断 编程辅助工具

📋 核心要点

  1. 现有的语言到代码基准无法全面评估模型的代码理解能力,存在潜在的解决方案记忆问题。
  2. 提出了CodeJudge-Eval基准,专注于评估模型的代码判断能力,涵盖多种错误类型和编译问题。
  3. 对12个知名LLMs的评估结果显示,当前最先进的模型在CJ-Eval上表现不佳,反映出其代码理解能力的不足。

📝 摘要(中文)

近年来,大型语言模型(LLMs)在代码生成方面取得了显著进展,主要通过语言到代码的基准进行评估。然而,这些基准可能无法全面反映模型的代码理解能力。本文提出了CodeJudge-Eval(CJ-Eval),一个新颖的基准,旨在从代码判断的角度评估LLMs的代码理解能力。CJ-Eval挑战模型判断提供的代码解决方案的正确性,涵盖多种错误类型和编译问题。通过利用多样化的问题集和细粒度的评判系统,CJ-Eval解决了传统基准的局限性,包括潜在的解决方案记忆。对12个知名LLMs在CJ-Eval上的评估显示,即使是最先进的模型也面临挑战,突显了该基准深入探测模型代码理解能力的能力。我们的代码和基准可在https://github.com/CodeLLM-Research/CodeJudge-Eval获取。

🔬 方法详解

问题定义:本文旨在解决现有基准无法有效评估大型语言模型代码理解能力的问题,尤其是模型可能通过记忆解决方案而非真正理解代码。

核心思路:通过设计CodeJudge-Eval基准,重点考察模型在判断代码正确性方面的能力,而非仅仅生成代码。这样可以更全面地评估模型的理解深度。

技术框架:CJ-Eval基准包含多样化的问题集,模型需判断提供代码的正确性,评估过程包括错误类型的识别和编译问题的处理。

关键创新:CJ-Eval的创新在于其细粒度的评判系统和多样化的问题设计,能够有效避免传统基准的局限性,深入探测模型的代码理解能力。

关键设计:在设计中,CJ-Eval考虑了多种错误类型和编译问题,确保评估的全面性和准确性,同时设置了细致的评分标准,以提高评估的可靠性。

📊 实验亮点

在对12个知名LLMs的评估中,结果显示即使是最先进的模型在CJ-Eval上也表现不佳,表明当前模型在代码理解方面的能力仍有待提升。这一发现强调了CJ-Eval作为评估工具的重要性,能够有效揭示模型的不足之处。

🎯 应用场景

该研究的潜在应用领域包括教育、编程辅助工具和自动化代码审查等。通过准确评估模型的代码理解能力,CJ-Eval可以帮助开发更智能的编程助手,提升软件开发的效率和质量。未来,该基准可能推动更多针对代码理解的研究和应用。

📄 摘要(原文)

Recent advancements in large language models (LLMs) have showcased impressive code generation capabilities, primarily evaluated through language-to-code benchmarks. However, these benchmarks may not fully capture a model's code understanding abilities. We introduce CodeJudge-Eval (CJ-Eval), a novel benchmark designed to assess LLMs' code understanding abilities from the perspective of code judging rather than code generation. CJ-Eval challenges models to determine the correctness of provided code solutions, encompassing various error types and compilation issues. By leveraging a diverse set of problems and a fine-grained judging system, CJ-Eval addresses the limitations of traditional benchmarks, including the potential memorization of solutions. Evaluation of 12 well-known LLMs on CJ-Eval reveals that even state-of-the-art models struggle, highlighting the benchmark's ability to probe deeper into models' code understanding abilities. Our codes and benchmark are available at \url{https://github.com/CodeLLM-Research/CodeJudge-Eval}.