Benchmark · coding
HumanEval
HumanEval 衡量模型根据自然语言描述编写正确 Python 代码的能力,用 pass@1 评分,即第一次尝试就解决的题目比例。
了解更多
- 示例
- 一道典型题目给出函数签名和它的 docstring——例如「返回所有小于 n 的质数列表」——模型需要补全函数体。
- 评分方式
- 指标是 pass@1:每个生成的解答都会运行隐藏的 unit 测试,得分是 164 道题中解答通过其全部测试的百分比。
- 验证方式
- 完全自动:只有当解答通过该题的所有隐藏 unit 测试时才算正确;不涉及人工评判,也不做字符串精确匹配。
- 为何重要
- 它是最早被广泛使用的代码生成基准之一,成为衡量编程能力的标准参照,不过如今顶级模型得分极高,基本已经饱和,几乎无法区分它们。
示例解析
任务
补全这个 Python 函数的函数体,使其通过隐藏的单元测试:
```python
from typing import List
def below_zero(operations: List[int]) -> bool:
"""You're given a list of deposit and withdrawal operations on a bank account starting at zero balance. Detect whether the balance ever drops below zero and return True at that point; otherwise return False.
>>> below_zero([1, 2, 3])
False
>>> below_zero([1, 2, -4, 5])
True
"""
```
解答
from typing import List
def below_zero(operations: List[int]) -> bool:
balance = 0
for op in operations:
balance += op
if balance < 0:
return True
return False
解析
维护一个累计余额,按顺序加上每次操作,一旦余额小于零就返回 True;如果循环结束,说明余额从未为负,于是返回 False。HumanEval 的评分方式是把模型的补全拼接到提示后面,用隐藏的单元测试运行(pass@k)——只有全部 assert 通过时该题才算解出。
| 日期 | 模型 | 得分 | 来源 |
|---|---|---|---|
| 2026-07-16 | Granite 4.0 3B | 83.5% | IBM开源CodeAlchemy,一个包含高质量代码的海量合成数据集 |
| 2024-07-15 | Qwen2-72B | 64.6% | Qwen2 技术报告介绍高达 72B 的密集和 MoE 模型 |
| 2024-07-15 | Qwen2-72B | 64.6% | Qwen团队发布Qwen2系列,包含72B密集模型和MoE模型 |
| 2024-06-20 | Claude 3.5 Sonnet | 92.0% | Anthropic发布Claude 3.5 Sonnet附录,提升编码与视觉基准表现 |
| 2024-06-20 | Claude 3.5 Sonnet | 92.0% | Anthropic |
| 2024-05-13 | GPT-4o | 90.2% | OpenAI |
| 2024-03-28 | Grok-1.5 | 74.1% | xAI发布Grok-1.5,推理能力增强,支持128K上下文 |
| 2023-03-14 | GPT-4 | 67.0% | OpenAI |