ベンチマーク · 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
解説
累積残高を保持し、各操作を順に加算し、残高が0未満になった瞬間に 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チームが72BのDenseおよびMoEモデルを含むQwen2シリーズをリリース |
| 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が推論能力を強化し128Kのコンテキストに対応したGrok-1.5をリリース |
| 2023-03-14 | GPT-4 | 67.0% | OpenAI |