📖标题:CodeJudge-Eval: Can Large Language Models be Good Judges in Code Understanding?
🌐来源:arXiv, 2408.10718
摘要
最近大型语言模型(LLMs)的进展展示了令人印象深刻的代码生成能力,主要是通过语言到代码基准测试进行评估。然而,这些基准测试可能无法完全捕捉模型的代码理解能力。我们介绍了CodeJudge-Eval(CJ-Eval),这是一个新颖的基准测试,旨在从代码判断的角度而不是代码生成来评估LLMs的代码理解能力。CJ-Eval挑战模型确定提供的代码解决方案的正确性,包括各种错误类型和编译问题。通过利用多样化的问题和细粒度的判断系统,CJ-Eval解决了传统基准测试的局限性,包括可能的解决方案记忆。对12个知名的LLMs在CJ-Eval上的评估表明,即使是最先进的模型也会遇到困难,突显了这个基准测试探究模型代码理解能力的能力。我们的基准测试将在https://github.com/CodeLLM-Research/CodeJudge-Eval上提供。
🛎️文章简介
🔸研究问题:大语言模型(LLM)具备代码理解能力,是否意味着可以用于评估代码生成质量的好坏?
🔸主要贡献:论文引入了一个新的基准测试CodeJudge-Eval,用于评估LLM作为代码判断者的能力。
📝重点思路
🔺相关工作
🔸LLM代码生成:不少工作利用LLM来完成涉及代码的任务,重点是理解和创建代码,包括Codex、CodeGemma、CodeT5和StarCoder等
🔸LLM代码基准:用于评估LLM的编码能力,简单的流行Python基准包括HumanEval和MBPP,其他基准还有ReCode、APPS等其他语言和困难编码。
🔺论文方案
🔸使用APPS的测试集作为数据源,合计5000个问题,覆盖了入门、面试和竞赛三个难度。
🔸选择了16个具有代码生成能力的代表性LLM,包括专有通用LLM、开源通用LLM和开源代码LLM,分别对测试集进行作答。
🔸考虑了五种答案类型,分别为编译错误、运行时错误、超出时间、错误答案和正确
🔸通过CodeJudge-Eval基准测试,评估这些LLM在判断代码解决方案正确性方面的能力。
🔎分析总结
🔸专有模型在整体表现上优于开源模型,但即使是表现最好的专有模型,在最容易的代码判断任务上的F1也只有0.5。
🔸1-shot不一定比0-shot好,原因可能是模型不具备代码理解能力,所以根本不能用好示例。
🔸开源模型在大多数情况下表现甚至不如随机猜测,表明CodeJudge-Eval基准测试对开源模型来说非常具有挑战性。
🔸模型生成正确代码的能力并不保证其能够正确判断其他解决方案的正确性,这表明传统的代码生成评估可能无法完全捕捉LLM的代码理解能力。
💡个人观点
论文旨在从LLM作为代码判断者的角度测量其代码理解能力。
附录