DevBench: A Realistic, Developer-Informed Benchmark for Code Generation Models

DevBench 是一个基于真实开发者遥测数据构建的代码生成基准测试,旨在通过涵盖六种语言和六类任务的 1800 个评估实例,在避免训练数据污染的同时,从功能正确性、语义推理及实际效用等多维度对大语言模型进行更具生态效度的评估与诊断。

Pareesa Ameneh Golnari, Adarsh Kumarappan, Wen Wen, Xiaoyu Liu, Gabriel Ryan, Yuting Sun, Shengyu Fu, Elsie Nallipogu

发布于 Tue, 10 Ma
📖 1 分钟阅读☕ 轻松阅读

Each language version is independently generated for its own context, not a direct translation.

这篇论文介绍了一个名为 DevBench 的新工具,它就像是为 AI 写代码能力量身定做的“真实世界模拟考场”。

为了让你更容易理解,我们可以把现在的 AI 写代码(比如 GitHub Copilot)想象成一位正在实习的超级程序员。以前我们怎么考核这位实习生呢?

1. 以前的考试:死记硬背的“模拟题”

以前的测试题(Benchmark)就像是从旧书堆里随便抄来的数学题逻辑谜题

  • 问题所在:这些题目太“理想化”了。就像让实习生在真空环境下做实验,题目都是完美的,答案也是唯一的。
  • 后果:实习生可能背下了所有题目的答案(数据污染),一遇到真实工作中那种“代码写了一半,上下文很乱,还要调用奇怪的外部工具”的复杂情况,就彻底懵了。而且,以前的考试只能告诉你他“及格了没”,却说不清楚他到底哪里不行。

2. DevBench 的诞生:基于“真实监控”的“实战演练”

微软的研究团队觉得这样不行,于是他们搞了个DevBench

  • 核心来源:他们不是凭空出题,而是像交通监控一样,分析了超过10 亿次真实的开发者写代码记录(当然,数据已经匿名处理,保护隐私)。
  • 怎么出题:他们从这些真实的“交通拥堵”和“事故现场”中,提炼出了1800 个最典型、最让人头疼的写代码场景。
    • 比如:你正在写一个银行转账功能,前面代码已经写了一半,后面需要补全,还要处理余额不足的错误。
    • 这就像给实习生出了一套“真实路况模拟考”,而不是“理想赛道赛车”。

3. 考什么?(六大关卡)

这个考场设计了六个不同的“关卡”,专门测试实习生的不同技能:

  1. API 调用:就像让你用特定的工具(比如某种特殊的电钻)去拧螺丝,看你会不会用错工具。
  2. 理解业务逻辑:给你一段银行代码,让你写转账功能。你不能只写对语法,还得懂“钱不能转负数”这种业务道理。
  3. 代码与语言互译:让你把中文需求翻译成代码,或者把代码写成中文文档。
  4. 低上下文挑战:只给你几行代码,让你猜出后面要写什么。这考验的是你对编程“套路”的直觉。
  5. 模式识别:前面给了几个例子,让你照着样子写第三个。看你能不能学会“举一反三”。
  6. 语法填空:专门考那些容易写错的括号、缩进和复杂结构。

4. 怎么打分?(不只是看对错)

以前的考试只看“答案对不对”(功能正确性)。DevBench 用了三重打分法,更像是一个资深导师在点评:

  1. 功能测试:代码跑起来通不通?(这是底线)
  2. 相似度打分:你的写法是不是和标准答案太像了?(防止死记硬背,鼓励灵活变通)
  3. AI 导师点评:用一个更聪明的 AI 当“考官”,让它像人类一样去读代码,判断这段代码有没有用是不是符合当下的语境

5. 考试结果发现了什么?

他们找了 9 个最厉害的 AI 模型来考试,结果很有意思:

  • 有的 AI 很“死板”:它们能完美模仿代码的格式(长得像),但逻辑是错的(跑不通)。
  • 有的 AI 很“灵活”:虽然代码长得不一样,但逻辑完美,能真正解决问题。
  • 语言差异:有些 AI 写 Python 很溜,但一写 TypeScript 就抓瞎,因为后者的类型系统太复杂了。
  • 推理能力的陷阱:有些号称“会推理”的模型,在功能测试上得分很高,但在“代码是否实用”的评分上反而不如一些“不推理”的模型。这说明会解题不代表会干活

总结

DevBench 就像是把 AI 从“做题家”的考场,拉到了“真实职场”的工位上。

它不再问 AI“这道题答案是什么”,而是问"AI,在这个复杂的真实项目里,你能帮我把这个功能补全吗?好用吗?符合规范吗?”

这个基准测试开源了,意味着以后大家开发 AI 写代码工具,都有了更靠谱的“体检报告”,能更清楚地知道哪个模型真正适合帮人类写代码,而不是只会背题的“书呆子”。