ClassEval-Pro: A Cross-Domain Benchmark for Class-Level Code Generation
本文介绍了 ClassEval-Pro,这是一个由大语言模型集成和高覆盖率测试套件验证的、包含 300 个类级别代码生成任务的严谨跨领域基准,该基准揭示当前前沿大语言模型因逻辑和依赖错误而在组合式代码生成方面表现不佳,其最佳 Pass@1 仅为 45.6%。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
想象一下,你正在教一个机器人厨师如何烹饪。
旧方法(函数级):
到目前为止,研究人员主要通过让 AI 厨师制作单一、简单的食材来测试它们,例如“切洋葱”或“烧开水”。AI 在这方面表现出色。它有 90% 的时间能完美地切好洋葱。这就像测试机器人能否操作单一工具。
缺失的一环(类级):
但在现实世界中,烹饪不仅仅是切一样东西。它是关于构建一道完整的菜肴,其中的食材需要相互配合。你需要一个知道加了多少盐的酱汁,一个与主菜相配的装饰,以及一个能将所有部分整合在一起的摆盘策略。这就是论文所称的“组合式代码生成”。它是指构建一个完整、有组织的“类”(一个自包含的软件单元)的能力,其中多个部分能够正确地相互交互。
问题所在:
作者表示,我们缺乏针对这种“整道菜”技能的良好测试。旧有的测试过于简单,而少数存在的测试是由人类制作的,这既缓慢又昂贵,而且这些食谱可能在 AI 训练期间泄露给了 AI(就像 AI 通过死记硬背测试答案来作弊一样)。
解决方案:ClassEval-Pro
团队构建了一个名为ClassEval-Pro的全新大规模测试。以下是他们如何利用一个富有创意的类比来制作该测试的:
- 食材(数据): 他们不是手工编写食谱,而是前往一个巨大的数字图书馆(GitHub),抓取了 2025 年 1 月之后编写的食谱。这确保了 AI 此前未曾见过这些内容,从而保证测试的公平性。
- 搅拌碗(跨领域): 他们不仅仅混合相似的食材。他们迫使 AI 混合完全不同的领域。想象一下,要求机器人构建一个“金融计算器”,同时它还得管理“电子游戏库存”。它必须让金钱逻辑和游戏逻辑在同一个连贯的程序中协同工作。
- 试吃(验证): 在测试开始之前,他们使用一组 AI 评委来检查食谱是否合理,以及测试“试吃”(代码测试)是否覆盖了至少 90% 的食谱。如果食谱有问题,他们就会将其丢弃。
结果:机器人厨师们表现挣扎
他们邀请了五位最聪明的 AI 厨师(如 GPT-5.1、Gemini 和 Qwen)来制作这些复杂的菜肴。
- 得分: 即使是最好的厨师,也只有约**45%**的菜肴制作正确。这与他们在简单的“切洋葱”任务中获得的 90% 得分相比,是一个巨大的下降。
- 差距: 最好的厨师和最差的厨师之间存在巨大差异。最好的厨师正确率为 45%,而最弱的仅为 28%。这证明该测试能够有效区分强厨师和弱厨师。
- “方法”陷阱: 有趣的是,厨师们通常能正确写出各个步骤(如“切洋葱”或“加盐”)。但当他们试图将所有内容整合成一道可运行的菜肴时,事情就崩溃了。洋葱切好了,但盐却加到了错误的锅里。
他们尝试的辅助方法(策略)
研究人员尝试让厨师们采用不同的烹饪方法:
- “自底向上”方法: “从基础食材开始,然后制作酱汁,最后做装饰。”这帮助较弱的厨师显著提高了表现。
- “自顶向下”方法: “先规划整个菜单,然后再烹饪。”这帮助了最强的厨师。
- “组合式”方法: “先写酱汁食谱,再写装饰食谱,然后将它们粘合在一起。”这是一场灾难。厨师们在尝试粘合各个部分时感到困惑,成功率暴跌至接近零(其中一个模型仅为 1.3%)。
出了什么问题?(错误分析)
团队检查了 500 道失败的菜肴,以找出问题所在。他们发现了两个主要问题:
- 逻辑错误(56%): 机器人理解了文字,但误解了含义。(例如:“如果用户离线,给他们发送成功消息”而不是失败消息)。
- 依赖错误(38%): 各个部分无法契合。(例如:酱汁食谱需要装饰食谱中没有的食材,或者它们对同一个碗使用了不同的名称)。
核心结论
该论文得出结论:虽然 AI 在编写小型、孤立的代码片段方面令人惊叹,但在编排整个系统方面仍然非常糟糕。最困难的部分不是编写单个函数的代码,而是确保该函数能与其他函数正确交互,共享正确的数据,并且不会破坏整个系统。
ClassEval-Pro 是新的“烹饪比赛”,它终于迫使这些 AI 厨师证明他们能够运营整个厨房,而不仅仅是切一种蔬菜。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。