Rescorer les exécutions persistées d'un workflow

evaluation.rescore() évalue les sorties déjà persistées dans Studio sans réexécuter la tâche, vos scorers s'exécutant en tant qu'activités. Produisez une exécution de tâche coûteuse une seule fois, puis itérez sur vos scorers autant de fois que nécessaire.

La sémantique est identique à celle de client.evaluation.rescore() du SDK. Consultez Rescore persisted runs pour le modèle complet. L'exécution persistée dans Studio est la source de vérité, pas l'historique du workflow.

Exécutions de tâche seules

Exécutions de tâche seules

Pour persister les sorties de tâche sans les évaluer, passez une liste d'évaluateurs vide. evaluators reste obligatoire, donc la liste vide est un opt-in explicite :

result = await evaluation.run(
    project=Project(name="Support agent"),
    evaluation=Evaluation(name="Agent rollouts"),
    dataset=dataset,
    task=run_agent,
    evaluators=[],
)

Les run_evaluators fonctionnent toujours sans évaluateurs : un run evaluator peut agréger les sorties, les erreurs, la latence ou le coût.

Rescorer une exécution

Rescorer une exécution

result = await evaluation.rescore(
    run_id=run_id,
    evaluators=[Evaluator(name="accuracy", scorer=accuracy_v2)],
    run_evaluators=[RunEvaluator(name="pass_rate", scorer=pass_rate)],
)

rescore() :

  1. Charge l'exécution persistée et ses enregistrements : les entrées et les sorties de tâche.
  2. Exécute les scorers sur les sorties persistées, en tant qu'activités.
  3. Persiste les nouveaux scores, puis recalcule les statistiques et les objectifs.
  4. Exécute les run evaluators sur les enregistrements mis à jour.

Les scorers et les run evaluators doivent être décorés avec @evaluation.scorer et @evaluation.run_scorer, comme dans run(). Passez au moins un evaluator ou un run evaluator.

Ajouter et remplacer

Ajouter et remplacer

rescore() ne modifie que les évaluateurs que vous passez. Un évaluateur portant un nouveau nom est ajouté ; un évaluateur portant un nom existant est remplacé, définition et scores. Le téléchargement des scores est idempotent, donc les retries d'activité ne dupliquent jamais les scores.

Si les scores de génération changent alors qu'un run evaluator persisté n'est pas recalculé dans le même appel, son nom est journalisé et renvoyé dans result.potentially_stale_run_evaluators. Passez ces run evaluators à run_evaluators pour les recalculer.

Référence API

Référence API

ParamètreTypeValeur par défautDescription
run_idstrobligatoireID d'une exécution persistée
evaluatorslist[Evaluator] | NoneNoneÉvaluateurs à ajouter ou remplacer
run_evaluatorslist[RunEvaluator] | NoneNoneRun evaluators à ajouter, remplacer ou recalculer
max_concurrencyint10Nombre maximal de générations évaluées simultanément

Renvoie un EvalResult, avec potentially_stale_run_evaluators défini le cas échéant.