← 最新论文
🤖 machine learning

Where Do LLMs Still Struggle? An In-Depth Analysis of Code Generation Benchmarks

本文通过分析代码生成基准测试,旨在识别大型语言模型持续失败的任务,揭示了阻碍性能的四种循环出现的弱点模式以及常见的任务复杂化因素。

原作者: Amir Molzam Sharifloo, Maedeh Heydari, Parsa Kazerooni, Daniel Maninger, Mira Mezini

发布于 2026-07-07
📖 1 分钟阅读☕ 轻松阅读

原作者: Amir Molzam Sharifloo, Maedeh Heydari, Parsa Kazerooni, Daniel Maninger, Mira Mezini

原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明

想象一群拥有高度智能、速度极快的机器人(大语言模型,简称 LLM),它们被训练用来编写计算机代码。它们就像才华横溢的学徒,读遍了世界上几乎所有的食谱,现在只要听到你想要什么,就能立刻做出美味佳肴(一段代码)。

来自德国的研究人员决定让这些机器人参加一系列严格的烹饪比赛(基准测试),以观察它们到底有多厉害。他们不仅仅是看谁获得的奖牌最多,更想找出为什么即使在应该表现出专家水准时,这些机器人还是会烧焦同样的特定菜肴。

以下是他们的发现,通过简单的分类进行了拆解:

1. 背景设定:烹饪大赛

研究人员挑选了四个著名的“烹饪比赛”(基准测试)来测试这些机器人:

  • HumanEval & MBPP: 这些是基础食谱测试。“做个蛋糕”、“切一些洋葱”。它们既短又简单。
  • LiveCodeBench & BigCodeBench (Hard): 这些是高规格的烹饪挑战。“制作一顿十道菜的盛宴,要能适应客人的过敏情况,使用你从未见过的食材,同时厨房还在着火。”这些挑战难度要大得多。

他们让六个不同的“厨师”(AI 模型)参加了数百项此类任务的测试。

2. 第一个问题:仅仅是因为食谱太难了吗?

研究人员想知道:机器人失败是因为菜肴太复杂了吗?

为了检查这一点,他们测量了正确答案(解决方案代码)的“复杂度”。他们观察了以下指标:

  • 食谱有多少步?(代码长度)
  • 你需要做多少次决策?(圈复杂度)
  • 嵌套指令有多深?(嵌套深度)

令人惊讶的发现:
对于简单的比赛(HumanEval 和 MBPP),食谱的难度并不重要。机器人失败的频率与完成简单或困难任务的频率差不多。这并不是因为数学太难,而是其他地方出了问题。

然而,对于最难的比赛(LiveCodeBench),确实存在关联:食谱越复杂,机器人出错的可能性就越大。但即便如此,复杂度也并非全部原因。

3. 第二个问题:它们究竟为什么失败?

研究人员仔细观察了 114 个所有机器人全部失败的具体任务。他们发现了四个机器人共有的重复性“坏习惯”:

  • “点错菜单”的错误(错误的题目映射):
    想象一下,顾客要求一份“辣味汤”,但机器人听成了“辣味炖菜”,于是开始做炖菜。机器人假设该任务属于它熟悉的某个类别,从而忽略了具体的细节。

    • 例子: 一个任务要求一种特定的括号序列,但机器人直接使用了它背诵下来的标准“平衡括号”食谱,忽略了独特的变体。
  • “半熟”的食谱(有缺陷的算法):
    机器人掌握了大体思路,但漏掉了关键的一步。这就像知道要烤蛋糕,却忘了预热烤箱。

    • 例子: 一个机器人试图预测销售趋势,但忘记处理销售额下降而非上升的情景。
  • “边缘情况”盲区:
    机器人在处理正常情况时表现出色,但在处理奇怪、罕见的情况时却表现糟糕。这就像一个司机在晴朗的高速公路上驾驶完美,但一旦开始下雨或有松鼠跑过马路就会发生车祸。

    • 例子: 一个机器人可以整理主文件夹中的文件,但完全忘记了查看子文件夹。
  • “挑食者”错误(格式问题):
    机器人做出了完美的食物,但评委拒绝了它,因为食物放在了蓝色盘子里而不是白色盘子里。逻辑是对的,但输出格式稍有偏差。

    • 例子: 任务要求将数字写成文字形式(“23”),但机器人只给出了数字(23)。

4. 转折:有时“笨”机器人反而赢了

这是最有趣的部分。研究人员注意到,一些“聪明”的机器人(如 Claude Sonnet-4)有时会输给“简单”的机器人(如 Llama-3.3-70B)。

为什么?
聪明的机器人过度思考了任务。它们试图通过添加符合现实世界的假设来变得“务实”,但这却破坏了测试的严格规则。

  • 类比: 如果测试要求“列出每一个 IP 地址”,聪明的机器人可能会想:“哦,我应该跳过网络地址,因为这是常规做法”,结果它错了。而简单的机器人只是字面上执行指令:“列出每一个”,结果它对了。

5. 测试本身的问题

研究人员还发现,有时“烹饪比赛”本身也是有缺陷的。

  • 模糊的提示词: 指令有时非常不明确,以至于机器人必须靠猜测来理解评委想要什么。
  • 隐藏规则: 测试有时期望机器人能猜出一些并未写出来的细节。如果机器人猜对了,它就通过了;如果猜错了,它就失败了。这并非机器人的大脑出了问题,而是测试设计的问题。

核心结论

这篇论文告诉我们,虽然 AI 代码生成器非常了不起,但它们并不完美。它们失败不仅仅是因为任务太难。它们失败是因为:

  1. 它们基于以往见过的经验做出了假设。
  2. 它们忽略了罕见、奇特的场景。
  3. 它们会被微小的格式细节绊倒。
  4. 有时,它们过于聪明,在应该照令行事时却进行了过度优化。

研究人员希望这项分析有助于构建更好的机器人和更好的测试,这样我们就能停止烧焦汤品,开始烹饪完美的佳肴。

您所在领域的论文太多了?

获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。

试用 Digest →