Référence API du plugin d'évaluation de workflow

Référence de evaluation.run(), son résultat et les imports du plugin. Le plugin réutilise les types du SDK : consultez la référence API du SDK pour Project, Evaluation, Evaluator, RunEvaluator, Goal et System. Pour les autres méthodes, consultez Décorateurs, Optimisation, Rescoring et Blocs de construction.

evaluation.run()

evaluation.run()

Exécute une évaluation depuis un workflow. Appelez-le depuis un @workflow.entrypoint.

from mistralai.workflows.plugins.evaluations import evaluation

result = await evaluation.run(
    dataset=...,
    task=...,
    evaluators=...,
    # optional parameters below
)
ParamètreTypeValeur par défautDescription
datasetSequence[Mapping[str, Any]]obligatoireListe d'enregistrements en entrée.
taskfonction, classe ou strobligatoireFonction @evaluation.task, classe @workflow.define ou nom du workflow. Voir Modes de tâche.
evaluatorslist[Evaluator]obligatoireÉvaluateurs par enregistrement. Leurs scorers doivent être décorés avec @evaluation.scorer. Passez [] pour une exécution sans évaluateurs.
run_evaluatorslist[RunEvaluator] | NoneNoneÉvaluateurs au niveau de l'exécution. Leurs scorers doivent être décorés avec @evaluation.run_scorer.
projectProject | NoneNoneProjet dans lequel enregistrer (créé s'il n'existe pas).
evaluationEvaluation | NoneNoneÉvaluation dans laquelle enregistrer (créée si elle n'existe pas).
namestr | NoneNoneNom de l'exécution.
descriptionstr | NoneNoneDescription de l'exécution.
tagslist[str] | NoneNoneTags pour le filtrage dans Studio.
metadatadict | NoneNoneMétadonnées statiques de l'exécution, ou un callback @evaluation.run_metadata.
record_metadatafonction | NoneNoneCallback @evaluation.record_metadata, exécuté une fois par enregistrement.
systemSystem | NoneNoneConfiguration système transmise à la tâche et aux scorers via les objets de contexte.
num_generationsint1Exécutions de la tâche par enregistrement, de 1 à 100.
localboolFalseSi True, ignore tout appel à Studio.

La concurrence, les délais d'attente et les tentatives se définissent sur les décorateurs, pas sur run().

La fonction renvoie un EvalResult :

ChampTypeDescription
run_idstrIdentifiant de l'exécution, ou "local" en mode local.
run_urlstr | NoneLien vers l'exécution dans Studio. None en mode local.
statisticsdict[str, EvaluatorStatistics]Statistiques agrégées par évaluateur.
run_scoresdict[str, Score]Scores des évaluateurs au niveau de l'exécution, par nom d'évaluateur.
potentially_stale_run_evaluatorslist[str]Défini uniquement par rescore(). Voir Rescoring.

EvalResult est un modèle Pydantic : renvoyez result.model_dump() depuis votre workflow pour l'exposer en sortie du workflow.

Flux d'exécution

Flux d'exécution

  1. Initialisation : crée le projet, l'évaluation et l'exécution dans Studio, et marque l'exécution comme en cours.
  2. Fan-out : démarre un workflow enfant par enregistrement.
  3. Par enregistrement : télécharge l'enregistrement en entrée, exécute la tâche et ses scorers pour chaque génération, exécute le callback record_metadata, puis télécharge l'enregistrement en sortie.
  4. Statistiques : agrège les scores par évaluateur.
  5. Évaluateurs d'exécution : exécute les évaluateurs au niveau de l'exécution et télécharge leurs scores.
  6. Métadonnées d'exécution : exécute le callback run_metadata et met à jour l'exécution.
  7. Fin : marque l'exécution comme terminée ou échouée.

Pendant l'exécution, le workflow envoie un signal de vie à Studio. Si le worker s'arrête, ou si le workflow est annulé ou interrompu, Studio marque l'exécution comme annulée au lieu de la laisser en cours.

Une tâche ou un scorer en échec est enregistré comme erreur sur son enregistrement ; les autres enregistrements continuent.

Imports

Imports

Importez les types depuis mistralai.workflows.plugins.evaluations.types. Ce module réexporte uniquement des types du SDK : vous pouvez donc l'importer sans risque depuis du code de workflow s'exécutant dans la sandbox Temporal :

from mistralai.workflows.plugins.evaluations.types import (
    Evaluation,             # Evaluation identifier (name or slug)
    Evaluator,              # Per-record evaluator
    Goal,                   # Pass/fail gate: gte, lte, between
    Project,                # Project identifier (name or slug)
    RecordMetadataContext,  # Context for @evaluation.record_metadata
    RunEvaluator,           # Run-level evaluator
    RunEvaluatorContext,    # Context for @evaluation.run_scorer
    RunMetadataContext,     # Context for @evaluation.run_metadata
    Score,                  # Scorer return type
    ScorerContext,          # Context for @evaluation.scorer
    Statistic,              # Run-level statistic factories
    System,                 # System config (name + params)
    TaskContext,            # Context for @evaluation.task
    Tunable,                # Optimizable parameter slot
    TunableSystem,          # Search space for optimization
)

L'espace de noms evaluation et les types d'optimisation proviennent de la racine du package :

from mistralai.workflows.plugins.evaluations import (
    evaluation,         # run, rescore, optimize, building blocks, and decorators
    EvalResult,         # Result of run() and rescore()
    GEPA,               # Pareto-based reflective optimizer
    SimpleOptimizer,    # Greedy hill-climb optimizer
    OptimizeResult,     # Result of optimize()
    OptimizeCandidate,  # One candidate in the trajectory
    OptimizeVariant,    # Baseline, winner, or best attempt
    MutatorRequest,     # Input of a custom mutator
    MutatorProposal,    # Output of a custom mutator
)
evaluation.optimize()

evaluation.optimize()

Mêmes paramètres que la fonction client.evaluation.optimize() du SDK, hormis ceux qui ne s'appliquent pas dans un workflow. Consultez Optimiser les prompts et les paramètres pour les paramètres et algorithmes partagés, et Optimisation pour les spécificités du workflow.

ParamètreTypeValeur par défautDescription
systemTunableSystemobligatoireL'espace de recherche. Doit contenir au moins un slot Tunable.
datasetlist[dict[str, Any]]obligatoireEnregistrements en entrée.
taskfonction, classe ou strobligatoireIdentique à run().
evaluatorslist[Evaluator]obligatoireÉvaluateurs par enregistrement. Ils définissent l'objectif et les seuils.
algoSimpleOptimizer | GEPAobligatoireLa stratégie de recherche.
run_evaluatorslist[RunEvaluator] | NoneNoneEnregistrés sur l'exécution de chaque candidat. Ils n'influencent pas la sélection.
projectProject | NoneNoneProjet dans lequel enregistrer.
evaluationEvaluation | NoneNoneÉvaluation dans laquelle enregistrer.
steerstr | NoneNoneObjectif formulé en langage naturel pour le mutateur, jusqu'à 4 000 caractères.
namestr | NoneNoneNom de l'optimisation. Généré à partir de steer en cas d'omission.
descriptionstr | NoneNoneDescription de l'optimisation. Générée à partir de steer en cas d'omission.
tagslist[str] | NoneNoneTags pour le filtrage dans Studio.
metadatadict[str, Any] | NoneNoneMétadonnées attachées à l'exécution de chaque candidat.
localboolFalseNon pris en charge : lève une ValueError.