Référence API
Références des types principaux du SDK d'évaluation et du point d'entrée principal evaluation.run(). Pour les références des méthodes des opérations avancées, consultez Relancer les enregistrements en échec, Recalculer les scores des exécutions enregistrées et Optimiser les prompts et les paramètres. Pour les limites de taille et les erreurs API, consultez Limites.
evaluation.run()
Le point d'entrée principal pour lancer des évaluations.
run = await client.evaluation.run(
dataset=...,
task=...,
evaluators=...,
# optional parameters below
)| Paramètre | Type | Valeur par défaut | Description |
|---|---|---|---|
dataset | Sequence[Mapping[str, Any]] | Dataset | obligatoire | Enregistrements d'entrée fournis directement, ou ensemble de données Studio (10 000 enregistrements maximum par exécution). |
task | TaskFunction | obligatoire | Fonction asynchrone ou synchrone (ctx: TaskContext) -> output. |
evaluators | list[Evaluator] | obligatoire | Évaluateurs appliqués à chaque enregistrement. |
run_evaluators | list[RunEvaluator] | [] | Évaluateurs appliqués à l'exécution entière (après le traitement de tous les enregistrements). |
project | Project | None | Projet dans lequel enregistrer les résultats (créé s'il n'existe pas et qu'il est sélectionné par son nom). Une exécution avec une evaluation mais sans project est enregistrée dans un projet nommé "Default project". |
evaluation | Evaluation | None | Évaluation dans laquelle enregistrer les résultats (créée si elle n'existe pas et qu'elle est sélectionnée par son nom). Sans ce paramètre, l'exécution reste locale et n'est pas enregistrée. |
name | str | None | Nom de l'exécution. |
description | str | None | Description de l'exécution. |
metadata | dict | RunMetadataFunction | None | Métadonnées statiques sous forme de paires clé-valeur, ou fonction de rappel qui reçoit un RunMetadataContext après l'exécution et renvoie un dictionnaire à fusionner. |
record_metadata | RecordMetadataFunction | None | Fonction de rappel appelée une fois par enregistrement, après sa tâche et ses fonctions de scoring. Elle reçoit un RecordMetadataContext, et le dictionnaire qu'elle renvoie est stocké dans les métadonnées de l'enregistrement. |
tags | list[str] | [] | Étiquettes utilisées pour le filtrage dans Studio. |
num_generations | int | 1 | Nombre d'exécutions de la tâche par enregistrement d'entrée. |
local | bool | False | Si la valeur est True, le téléchargement vers Studio est ignoré. |
system | System | None | Configuration du système transmise à la tâche et aux fonctions de scoring via les objets de contexte. |
upload_batch_size | int | 10 | Nombre d'enregistrements à mettre en mémoire tampon avant chaque téléchargement en streaming (au moins un). Une requête de téléchargement ne contient jamais plus de 500 enregistrements : le SDK divise les tampons plus volumineux. |
max_concurrency | int | 10 | Nombre maximal d'enregistrements traités simultanément. |
La fonction renvoie un EvaluationRun :
| Champ | Type | Description |
|---|---|---|
output_records | list[EvaluationRunRecord] | Tous les enregistrements traités, avec leurs générations et leurs scores. |
failed_record_count | int | Nombre d'enregistrements dont la tâche ou le calcul d'un score a échoué, parmi len(output_records) (0.10.0+). Les éléments en échec ne figurent pas dans statistics ; retry_failed_records() relance ces enregistrements. |
statistics | dict[str, EvaluatorStatistics] | Statistiques agrégées par évaluateur, sans les générations et les scores en échec. |
run_scores | dict[str, Score] | Résultats des évaluateurs appliqués à l'exécution entière, indexés par nom d'évaluateur. Chaque entrée est un Score (value, rationale, metadata) avec deux champs supplémentaires : status ("success" ou "error") et error. |
run_id | str | None | Identifiant de l'exécution dans Studio. None pour une exécution locale. |
run_url | str | None | Lien vers l'exécution dans Studio. None pour une exécution locale. |
status | str | None | Statut du cycle de vie de l'exécution : "pending", "running", "completed", "failed" ou "cancelled". |
run() attribue le statut "running" à l'exécution pendant son traitement, puis "completed". Si l'exécution lève une exception, elle reçoit le statut "failed" ; si elle est interrompue, "cancelled". Pendant le traitement, le SDK envoie un signal de présence à Studio. Ainsi, une exécution dont le processus s'arrête reçoit le statut "cancelled" au lieu de rester en cours.
| Méthode | Description |
|---|---|
run.show(mode, level) | Affiche les résultats (ne renvoie rien). mode : "text" (par défaut), "json". level : "run" (par défaut), "records", "generations", "scores". |
Project
Un projet regroupe des évaluations liées entre elles. Il fonctionne comme un dossier, par exemple « Tests qualité du chatbot » ou « Pipeline RAG ».
Project(name="My Project") # create or get by name
Project(slug="my-project") # get by slugVous devez fournir au moins l'un des paramètres name ou slug. Un projet sélectionné par son nom est créé s'il n'existe pas ; un projet sélectionné par son slug doit déjà exister.
Dataset
Sélectionne un ensemble de données Studio par slug ou UUID. Le SDK récupère ses enregistrements avant le début de l'exécution. Consultez Utiliser un ensemble de données Studio.
from mistralai.evaluations import Dataset
Dataset(slug="customer-support-golden-set")
Dataset(id="018f879d-20cd-7e9f-a1bc-2f4f08b6f170")Vous devez fournir exactement l'un des paramètres id ou slug, et id doit être un UUID valide. L'ensemble de données doit déjà exister : le sélectionner par son slug ne le crée jamais.
Evaluation
Une évaluation est un test nommé que vous exécutez régulièrement, par exemple « Précision sur les prompts French ». Chaque appel à evaluation.run() crée une nouvelle exécution dans cette évaluation. Vous pouvez ainsi suivre l'évolution des scores d'une exécution à l'autre.
Evaluation(name="My Eval") # create or get by name
Evaluation(slug="my-eval") # get by slugVous devez fournir au moins l'un des paramètres name ou slug. Une évaluation sélectionnée par son nom est créée dans le projet indiqué si elle n'existe pas ; une évaluation sélectionnée par son slug doit déjà exister.
Evaluator
Un évaluateur définit comment attribuer un score à chaque enregistrement. Il associe un nom à une fonction de scoring qui reçoit un ScorerContext et renvoie un score.
Evaluator(
name="accuracy",
scorer=my_scorer,
description="Optional description",
tags=["tag1"],
num_scores=1,
goal=Goal.gte(0.8),
)| Paramètre | Type | Valeur par défaut | Description |
|---|---|---|---|
name | str | obligatoire | Nom unique de l'évaluateur. |
scorer | ScoreFunction | obligatoire | (ctx: ScorerContext) -> value ou Score. |
description | str | None | Description affichée au survol dans Studio. |
tags | list[str] | [] | Étiquettes. |
num_scores | int | 1 | Nombre de calculs de score par génération (les résultats sont moyennés — utile pour les juges LLM aux résultats variables). |
goal | GoalSpec | None | Objectif de réussite ou d'échec par génération (par exemple, Goal.gte(0.8)). |
direction | "maximize" | "minimize" | None | Sens d'amélioration du score. Déduit de l'objectif si ce paramètre n'est pas défini. |
min_value / max_value | float | None | Intervalle de normalisation min-max (définissez les deux bornes ou aucune). |
weight | float | 1.0 | Poids dans l'optimisation ; 0 fait de la métrique une simple contrainte. |
statistics | list[StatisticSpec] | None | Statistiques à exposer pour l'exécution entière. Consultez Configurer les statistiques. |
aggregate_goal | GoalSpec | None | Obsolète — préférez un objectif défini pour une statistique. Objectif de l'exécution entière évalué à partir du score moyen. |
Une fonction de scoring peut renvoyer :
intoufloat— score numérique (statistiques : moyenne, minimum, maximum, écart-type, nombre).stroubool— score catégoriel (statistiques : fréquences et mode, lorsquestatisticsest omis).Score(value=..., rationale=..., metadata=...)— score enrichi d'une explication et de données supplémentaires.
RunEvaluator
Un évaluateur d'exécution intervient sur l'ensemble des résultats une fois tous les enregistrements traités. Utilisez-le pour les métriques agrégées qui ne peuvent pas être calculées par enregistrement, comme le score F1, les critères globaux de réussite ou d'échec, ou l'analyse croisée des enregistrements.
RunEvaluator(
name="accuracy_gate",
scorer=my_run_scorer,
)| Paramètre | Type | Valeur par défaut | Description |
|---|---|---|---|
name | str | obligatoire | Nom unique. |
scorer | RunEvaluatorFunction | obligatoire | (ctx: RunEvaluatorContext) -> value ou Score. |
description | str | None | Description. |
tags | list[str] | [] | Étiquettes. |
goal | GoalSpec | None | Objectif de réussite ou d'échec pour le score de l'exécution entière (par exemple, Goal.gte(0.85)). |
direction | "maximize" | "minimize" | None | Sens d'amélioration du score. Déduit de l'objectif si ce paramètre n'est pas défini. |
min_value / max_value | float | None | Intervalle d'affichage et de normalisation. Définissez les deux bornes ou aucune. |
La fonction de scoring reçoit un RunEvaluatorContext qui donne accès à tous les enregistrements, à leurs scores, aux statistiques agrégées et à la configuration du système. Consultez le guide des évaluateurs d'exécution pour des exemples.
Goal
Fabrique de spécifications d'objectifs. Consultez Définir des objectifs pour le guide complet.
from mistralai.evaluations import Goal
Goal.gte(0.8) # gate: score >= 0.8
Goal.lte(0.1) # gate: score <= 0.1
Goal.between(0.2, 0.8) # gate: 0.2 <= score <= 0.8Un Goal définit uniquement un critère de réussite. Pour indiquer le sens d'amélioration du score, définissez direction="maximize" / "minimize" sur l'évaluateur (ce sens est également déduit d'un objectif gte/lte).
System
Un système décrit la configuration utilisée par votre tâche : nom du modèle, température, prompt système, etc. Stocker ces valeurs sous forme de paramètres plutôt que de les coder en dur les rend visibles dans Studio. Vous pouvez ainsi comparer les exécutions avec différentes configurations. Consultez Configurer les paramètres du système pour en savoir plus.
from mistralai.evaluations import System
system = System(name="small-t0", params={"model": "mistral-small-latest", "temperature": 0})Lorsque system est fourni, les tâches et les fonctions de scoring peuvent y accéder via ctx.system :
async def task(ctx: TaskContext) -> str:
response = await client.chat.complete_async(
model=str(ctx.system.params["model"]),
temperature=float(ctx.system.params["temperature"]),
messages=[{"role": "user", "content": ctx.input_record["prompt"]}],
)
return str(response.choices[0].message.content)| Paramètre | Type | Valeur par défaut | Description |
|---|---|---|---|
name | str | obligatoire | Nom du système (affiché dans Studio). |
params | dict[str, str | int | float | bool] | obligatoire | Configuration non imbriquée sous forme de paires clé-valeur, transmise à la tâche. Les listes et les dictionnaires sont refusés : sérialisez les configurations structurées, comme les définitions d'outils, en une chaîne JSON. |
Consultez Utiliser les objets de contexte pour les références complètes du contexte.