← 最新论文
💻 computer science

Evaluating LLM-Generated Code: A Benchmark and Developer Study

本文引入了一种结合了正确性基准测试、代码质量验证和开发者调查的综合三维评估方法,用于评估大语言模型生成的代码,并通过对三种模型的对比研究,证明了在识别超越标准正确性指标的生产级质量方面,人类洞察力是必不可少的。

原作者: Joanna Szych, Anne Schwerk

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

原作者: Joanna Szych, Anne Schwerk

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

想象一下,你正在雇佣一支由三名不同的 AI 助手组成的团队,来为你所在的社区建造一座复杂的、定制化的树屋。你不仅希望这座树屋能站得稳(功能性),还希望它安全、易于攀爬,并且让你的邻居们以后也能轻松理解如何使用它(质量)。

这篇论文讲述了作者是如何决定测试这些 AI 助手的。他们意识到,现有的测试大多是在问:“你能造出一块完美的木板吗?”虽然这很有用,但它无法告诉我们 AI 是否能建造一整座树屋,能否处理建筑过程中混乱的现实情况,或者能否写出人类真正可以遵循的说明书。

以下是他们使用日常类比对研究方法的拆解:

1. 问题所在:“木板” vs. “树屋”

目前大多数针对 AI 代码生成器的测试就像是在空旷停车场进行的驾驶考试。它们要求 AI 解决微小的、孤立的问题(比如“写一个对列表进行排序的函数”)。AI 通过了,得到了小红花,大家都感到很满意。

但在现实世界中,编程更像是建造一整栋房子。你必须打好地基、搭建框架、安装管道,还要确保屋顶不漏水。这是一个漫长的对话过程:你请求一件东西,接着是另一件,而 AI 必须记住它在三个提示词之前做了什么。作者想要看看 AI 是否能处理这种“整栋房子”的情景,而不仅仅是单块砖头。

2. 挑战:“生命之树”的构建

为了测试这一点,作者给了这些 AI 助手一个特定的、艰巨的任务:“从零开始构建生命之树。”

  • 类比: 想象要求某人绘制地球上所有物种的家族树,但他们只能使用原始的 DNA 序列作为线索。他们必须弄清楚谁和谁有亲缘关系,计算它们之间的距离,并将它们归类为不同的家族。
  • 难点: AI 必须从零开始完成这项工作。没有初始代码,没有模板。只有一个接一个发送的 14 个问题(提示词),就像人类开发者与 AI 聊天一样。

3. 三部分测试法(“三折叠”方法)

作者不仅仅检查树屋是否能站立。他们使用了三步检查流程:

A 步:“通过/失败”测试(正确性)

首先,他们检查代码是否真的有效。

  • 类比: 他们建立了一个清单。AI 是否保存了正确的数据?它是否正确地绘制了树状图?它是否将动物正确地归类到家族中?
  • 转折: 由于 AI 经常会出现微小的拼写错误(比如漏掉一个分号),作者充当了“修复者”。他们手动修复了细微的错误,仅为了观察代码是否能够运行。这模拟了一个真实开发者修复快速 Bug 以继续工作的场景。
  • 结果: 他们发现,虽然有些 AI 掌握了逻辑,但许多 AI 失败了,因为它们无法处理整个项目的复杂性。其中一个 AI(DeepSeek)在掌握正确逻辑方面表现最好。

B 步:“机器人检查员”(自动化质量)

接下来,他们运行了一个机器人检查员(一个名为 SonarQube 的工具)来检查代码。

  • 类比: 这个机器人会检查“代码异味”。它寻找诸如格式混乱、缺少安全防护或变量命名混乱之类的问题。它会给代码评定 A 到 E 的等级。
  • 结果: 出人意料的是,几乎所有的 AI 在安全性和可靠性方面都获得了“A”。机器人并没有发现太多重大缺陷。然而,它确实指出有些代码很“凌乱”,人类清理起来会更费时。

C 步:“人类邻居”(开发者调查)

最后,也是最独特的部分,他们邀请了真正的软件开发者来评审代码。

  • 类比: 想象一下把蓝图交给三个不同的邻居,并询问:“如果你必须住在这座树屋里,你会选哪一个?哪一个最容易理解?哪一个的说明书最好?”
  • 方法: 开发者们并没有随意写笔记。他们填写了一份结构化的调查问卷,对代码进行评分,例如“是否易于阅读?”以及“注释是否有帮助?”
  • 惊喜: 人类评审员并不总是与机器人或数学逻辑一致。
    • 机器人说 DeepSeek 的代码是最好的(错误最少)。
    • 人类却说 Claude 的代码才是他们真正想一起工作的代码。尽管 Claude 的 Bug 稍多,但人类觉得它的组织更严密、更易读,且说明书更好。

4. 他们学到了什么?

论文的结论包含几个关键要点:

  • 正确性并非一切: 一个 AI 可以写出运行完美的代码(通过数学测试),但其代码可能极其混乱且难以理解,以至于人类开发者会讨厌去维护它。
  • 人类能看到机器人忽略的东西: 自动化测试会错过诸如“变量命名是否符合逻辑?”或“文档是否清晰?”之类的问题。只有人类才能发现这些。
  • “最佳”AI 取决于目标: 如果你想要数学上的完美,DeepSeek 赢了。如果你想要能让人类团队轻松上手并开展工作的代码,人类更倾向于 Claude。
  • 我们需要新的测试方式: 我们不能再仅仅使用旧的“通过/失败”测试了。要真正了解一个 AI 是否擅长编程,我们需要在大型项目上测试它,并询问真实的人类是否愿意使用它的输出。

简而言之,作者为 AI 程序员建立了一份新的“成绩单”,它不仅检查答案是否正确,还会询问:“这个答案是否是人类真正想要使用的东西?”

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

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

试用 Digest →