Utiliser des objets de contexte

Les tâches, les fonctions de scoring et les callbacks de métadonnées reçoivent leurs entrées via des objets de contexte : des modèles Pydantic typés qui regroupent toutes les données disponibles dans un seul paramètre. Cette page sert de référence pour chaque type de contexte.

TaskContext

TaskContext

Une fonction de tâche reçoit un TaskContext avec l’enregistrement d’entrée, la configuration système et les métadonnées d’exécution :

from mistralai.evaluations import TaskContext

async def task(ctx: TaskContext) -> str:
    response = await client.chat.complete_async(
        model=str(ctx.system.params["model"]),
        messages=[{"role": "user", "content": ctx.input_record["prompt"]}],
    )
    return str(response.choices[0].message.content)
ChampTypeDescription
input_recorddict[str, Any]L’enregistrement actuel de l’ensemble de données
systemSystem | NoneConfiguration système provenant de evaluation.run(system=...)
metadatadict[str, Any] | NoneMétadonnées d’exécution provenant de evaluation.run(metadata=...)
ScorerContext

ScorerContext

Une fonction de scoring reçoit un ScorerContext avec l’enregistrement d’entrée et la sortie de la tâche :

from mistralai.evaluations import ScorerContext

def accuracy_scorer(ctx: ScorerContext) -> int:
    return 1 if ctx.input_record["expected"].lower() in str(ctx.output).lower() else 0
ChampTypeDescription
input_recorddict[str, Any]L’enregistrement actuel de l’ensemble de données
outputAnyLa sortie de la tâche pour cette génération
systemSystem | NoneConfiguration système provenant de evaluation.run(system=...)
metadatadict[str, Any] | NoneMétadonnées d’exécution provenant de evaluation.run(metadata=...)
RunEvaluatorContext

RunEvaluatorContext

Les évaluateurs d’exécution reçoivent tous les enregistrements et les statistiques agrégées une fois l’exécution terminée :

from mistralai.evaluations import RunEvaluatorContext

def accuracy_gate(ctx: RunEvaluatorContext):
    return ctx.statistics["accuracy"].avg >= 0.8
ChampTypeDescription
recordslist[RunEvaluatorRecord]Tous les enregistrements traités avec leurs scores
statisticsdict[str, EvaluatorStatistics]Statistiques agrégées par évaluateur
metadatadict[str, JsonValue]Métadonnées d’exécution
systemSystem | NoneConfiguration système provenant de evaluation.run(system=...)

Utilisez get_score(record, "evaluator_name") pour accéder au score d’un évaluateur spécifique pour un enregistrement donné.

RecordMetadataContext

RecordMetadataContext

Un callback record_metadata reçoit un RecordMetadataContext une fois que la tâche et les fonctions de scoring d’un enregistrement sont terminées. Le dictionnaire renvoyé est stocké dans les métadonnées de l’enregistrement dans Studio :

from mistralai.evaluations import RecordMetadataContext

def record_metadata(ctx: RecordMetadataContext) -> dict:
    return {"output_len": len(str(ctx.record.generations[0].output))}
ChampTypeDescription
input_recorddict[str, Any]L’enregistrement actuel de l’ensemble de données
recordEvaluationRunRecordL’enregistrement traité, avec ses générations et ses scores
systemSystem | NoneConfiguration système provenant de evaluation.run(system=...)
metadatadict[str, JsonValue]Métadonnées d’exécution
RunMetadataContext

RunMetadataContext

Un callback metadata (lorsqu’une fonction est passée au lieu d’un dictionnaire) reçoit un RunMetadataContext une fois tous les enregistrements scorés. Le dictionnaire renvoyé est fusionné avec les métadonnées d’exécution :

from mistralai.evaluations import RunMetadataContext

def run_metadata(ctx: RunMetadataContext) -> dict:
    return {"num_records": len(ctx.records)}
ChampTypeDescription
recordslist[RunEvaluatorRecord]Tous les enregistrements traités avec leurs scores
statisticsdict[str, EvaluatorStatistics]Statistiques agrégées par évaluateur
run_scoresdict[str, Score]Scores des évaluateurs au niveau de l’exécution
metadatadict[str, JsonValue]Métadonnées d’exécution
systemSystem | NoneConfiguration système provenant de `evaluation.run(system=...)