Benchmark · coding
BigCodeBench
BigCodeBench est un benchmark de génération de code Python composé de 1 140 tâches de programmation réalistes, chacune exigeant de combiner des appels à plusieurs bibliothèques ; il est noté par un Pass@1 basé sur l'exécution — la proportion de tâches dont la solution générée réussit tous les tests unitaires.
En savoir plus
- Exemple
- Une tâche typique fournit une signature de fonction et un docstring détaillé — par exemple « charger un CSV, calculer des statistiques résumées par groupe avec pandas, puis tracer un diagramme en barres avec matplotlib » — et demande au modèle d'écrire un corps qui relie correctement plusieurs appels de bibliothèque.
- Notation
- La métrique est le Pass@1 calibré, généralement avec décodage glouton : chaque programme généré est exécuté contre les tests unitaires de la tâche dans un bac à sable, une tâche n'est comptée résolue que si tous les tests passent, et le score est le pourcentage de tâches résolues. Deux partitions sont rapportées — Complete (compléter une fonction esquissée par un docstring) et Instruct (seulement une instruction en langage naturel) — ainsi qu'un sous-ensemble Hard de 148 tâches.
- Vérification
- L'acceptation se fait uniquement par exécution : la solution doit réussir tous les tests unitaires écrits à la main de la tâche (environ 5,6 par tâche, avec ~99 % de couverture moyenne des branches) lorsqu'elle est exécutée dans un environnement isolé. Il n'y a ni crédit partiel ni comparaison à un texte de référence.
- Pourquoi c'est important
- Contrairement aux benchmarks courts à fonction unique comme HumanEval, BigCodeBench teste si un modèle sait suivre des instructions complexes et utiliser correctement des API réelles et variées issues de 139 bibliothèques et 7 domaines, ce qui reflète mieux le travail logiciel concret ; la partition Instruct et le sous-ensemble Hard sollicitent encore davantage le suivi d'instructions et la composition d'outils.
Exemple résolu
Tâche
```python
import pandas as pd
import numpy as np
def task_func(df, column):
"""
Standardise la colonne numérique indiquée d'un DataFrame pour obtenir une moyenne nulle
et une variance unitaire, puis renvoie le DataFrame modifié.
Prérequis :
- pandas
- numpy
Paramètres :
df (pd.DataFrame): Les données d'entrée.
column (str): Nom de la colonne numérique à standardiser.
Renvoie :
pd.DataFrame: Le DataFrame avec la colonne standardisée.
Exemple :
>>> df = pd.DataFrame({'a': [1, 2, 3, 4, 5]})
>>> round(task_func(df, 'a')['a'].mean(), 5)
0.0
"""
```
Solution
```python
df[column] = (df[column] - np.mean(df[column])) / np.std(df[column])
return df
```
Explication
Soustraire la moyenne de la colonne et diviser par l'écart-type de population (np.std, ddof=0) ramène les valeurs à une moyenne de 0 et une variance unitaire, ce qui satisfait la docstring et son doctest (la moyenne s'arrondit à 0.0), tout en utilisant les deux bibliothèques requises. La notation repose sur l'exécution : BigCodeBench exécute la fonction complétée contre les tests unitaires cachés de la tâche et n'attribue le Pass@1 que si tous les tests réussissent.
Aucun score vérifié pour ce benchmark à ce jour.