Benchmark · coding
HumanEval
HumanEval mesure la capacité d'un modèle à écrire du code Python correct à partir d'une description en langage naturel ; il est noté par pass@1, la proportion de problèmes qu'il résout du premier coup.
En savoir plus
- Exemple
- Un item typique fournit la signature d'une fonction et sa docstring — par exemple « renvoyer la liste de tous les nombres premiers inférieurs à n » — et le modèle doit compléter le corps de la fonction.
- Notation
- La métrique est pass@1 : chaque solution générée est exécutée contre des tests unitaires cachés, et le score est le pourcentage des 164 problèmes dont la solution réussit tous ses tests.
- Vérification
- Entièrement automatique : une solution n'est comptée comme correcte que si elle réussit tous les tests unitaires cachés du problème ; sans jugement humain ni comparaison exacte de chaînes.
- Pourquoi c'est important
- Ce fut l'un des premiers benchmarks de génération de code largement utilisés et il est devenu une référence standard de la compétence en programmation, même si les meilleurs modèles y obtiennent désormais des scores si élevés qu'il est pratiquement saturé et les distingue à peine.
Exemple résolu
Tâche
Complétez le corps de cette fonction Python pour qu'elle passe les tests unitaires cachés :
```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
"""
```
Solution
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
Explication
On tient un solde courant, on ajoute chaque opération dans l'ordre et on renvoie True dès qu'il devient négatif ; si la boucle se termine, le solde n'est jamais passé sous zéro, donc on renvoie False. HumanEval note en ajoutant la complétion du modèle au prompt et en l'exécutant sur des tests unitaires cachés (pass@k) — l'item n'est compté comme résolu que si tous les assert passent.
| Date | Modèle | Score | Source |
|---|---|---|---|
| 2026-07-16 | Granite 4.0 3B | 83.5% | IBM open-source CodeAlchemy, un immense jeu de données synthétique de code de haute qualité |
| 2024-07-15 | Qwen2-72B | 64.6% | Le rapport technique Qwen2 présente des modèles denses et MoE jusqu'à 72 milliards de paramètres |
| 2024-07-15 | Qwen2-72B | 64.6% | L'équipe Qwen publie la série Qwen2 avec des modèles denses et MoE de 72B |
| 2024-06-20 | Claude 3.5 Sonnet | 92.0% | Anthropic publie un complément à Claude 3.5 Sonnet avec des benchmarks de codage et de vision améliorés |
| 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 lance Grok-1.5 avec un raisonnement amélioré et un contexte de 128K |
| 2023-03-14 | GPT-4 | 67.0% | OpenAI |