EvaluationLogger pour enregistrer des prédictions et des scores depuis votre code Python ou TypeScript existant, afin d’évaluer les performances du modèle dans Weave sans devoir d’abord définir un Dataset complet et une suite d’évaluateurs. Utilisez cette approche lorsque votre jeu de données ou vos évaluateurs ne sont pas définis à l’avance, ou lorsque vous devez journaliser les données d’évaluation de façon incrémentielle pendant l’exécution de votre flux de travail.
Contrairement à l’objet Evaluation standard, qui nécessite un Dataset prédéfini et une liste d’objets Scorer, EvaluationLogger vous permet de journaliser des prédictions individuelles et les scores associés de façon incrémentielle, à mesure qu’ils deviennent disponibles.
Vous préférez une évaluation plus structurée ?Si vous préférez un framework d’évaluation plus prescriptif avec des jeux de données et des évaluateurs prédéfinis, Voir le framework
Evaluation standard.EvaluationLogger offre de la flexibilité, tandis que le framework standard apporte structure et orientation.Flux de travail de base
- Initialisez le logger : Créez une instance de
EvaluationLogger, en fournissant éventuellement des métadonnées sur lemodèleet lejeu de données. Weave utilise les valeurs par défaut si vous les omettez.Pour capturer l’utilisation des jetons et le coût des appels LLM (par exemple, OpenAI), initialisezEvaluationLoggeravant toute invocation de LLM. Si vous appelez d’abord votre LLM, puis journalisez les prédictions ensuite, Weave ne capture pas les données de jeton et de coût. - Journalisez les prédictions : Appelez
log_prediction()pour chaque paire d’entrée et de sortie de votre système. - Journalisez les scores : Utilisez le
ScoreLoggerrenvoyé pour appelerlog_score()pour la prédiction. Plusieurs scores par prédiction sont pris en charge. - Terminez la prédiction : Appelez toujours
finish()après avoir journalisé les scores d’une prédiction afin de la finaliser. - Journalisez la synthèse : Une fois toutes les prédictions traitées, appelez
log_summary()pour agréger les scores et ajouter des métriques personnalisées facultatives.
log_example().
Exemple de base
EvaluationLogger pour journaliser les prédictions et les scores directement dans votre code existant. Remplacez [YOUR-TEAM]/[YOUR-PROJECT] par votre entité et votre projet W&B.
- Python
- TypeScript
La fonction
user_model est définie puis appliquée à une liste d’entrées. Pour chaque exemple :- L’entrée et la sortie sont enregistrées à l’aide de
log_prediction. - Un score de correction (
correctness_score) est enregistré vialog_score. finish()finalise l’enregistrement pour cette prédiction.
log_summary enregistre les métriques agrégées et déclenche la synthèse automatique des scores dans Weave.Journalisation simplifiée avec log_example()
log_example() pour journaliser des entrées, une sortie et des scores en un seul appel. Cette méthode pratique combine log_prediction(), log_score() et finish() en une seule étape. Elle est utile lorsque vous disposez déjà des entrées, des sorties du modèle et des scores à journaliser, par exemple lors d’évaluations par lot ou hors ligne.
log_example() équivaut à :
log_example() n’est pas disponible pour le SDK TypeScript de Weave. Les utilisateurs de TypeScript doivent utiliser l’approche logPrediction() et logScore() présentée dans l’exemple de base.Utilisation avancée
EvaluationLogger offre des modes d’utilisation flexibles au-delà du flux de travail de base pour répondre à des scénarios d’évaluation plus complexes. Les sections suivantes décrivent des techniques avancées, notamment comment utiliser des gestionnaires de contexte pour la gestion automatique des ressources, lier les traces d’agent aux lignes d’évaluation, séparer l’exécution du modèle de la journalisation, utiliser des données de médias enrichis et comparer côte à côte plusieurs évaluations de modèles.
Utiliser des gestionnaires de contexte
EvaluationLogger prend en charge les gestionnaires de contexte (instructions with) pour les prédictions comme pour les scores. Cela permet d’obtenir un code plus propre, un nettoyage automatique des ressources et un meilleur suivi des opérations imbriquées, comme les appels à un juge LLM.
L’utilisation des instructions with dans ce contexte offre les avantages suivants :
- Appels automatiques à
finish()à la sortie du contexte. - Meilleur suivi des jetons et des coûts pour les appels LLM imbriqués.
- Définition de la sortie après l’exécution du modèle dans le contexte de prédiction.
- Python
- TypeScript
Lier les traces d’agent aux évaluations
log_prediction(). EvaluationLogger ajoute aux spans créés dans ce contexte les métadonnées du run d’évaluation, de l’exemple et du trial, que Weave utilise pour associer la trace à son résultat d’évaluation.
L’association automatique des évaluations aux spans d’agent est disponible uniquement en Python. Ni
EvaluationLogger en TypeScript ni Evaluation.evaluate() ne créent de portée d’évaluation active permettant d’associer les spans d’agent. En TypeScript, vous pouvez associer un span uniquement en définissant directement les attributs OTel décrits dans cette section, et seulement lorsque les deux ID d’appel sont déjà disponibles.[YOUR-TEAM]/[YOUR-PROJECT] par votre entité et votre projet W&B.
- Python
- TypeScript
log_prediction() et qu’une intégration Weave le trace, comme dans l’exemple de code précédent. Sinon, vous devez définir vous-même les deux ID d’association sur les spans d’agent. La procédure dépend de l’emplacement où les spans sont créés :
- Même processus, instrumentation personnalisée : définissez les attributs directement sur chaque span.
- Service distinct : envoyez les deux ID à ce service, puis définissez-les sur les spans qu’il crée.
Lier les spans que vous instrumentez vous-même
log_prediction(), EvaluationLogger définit automatiquement tous les attributs. En revanche, si vous envoyez des spans à l’aide de votre propre instrumentation OpenTelemetry (OTel), vous devez définir directement les attributs sur chaque span à lier. Vous pouvez définir les attributs suivants pour les évaluations :
Envoyez le span au même projet Weave que l’évaluation via le point de terminaison
/agents/otel/v1/traces. Les attributs de span OTel ne se propagent pas des spans parents aux spans enfants ; définissez donc les attributs sur chaque span à lier.
Pour plus d’informations sur le point de terminaison :
- Pour envoyer des spans depuis un pipeline OTel existant, consultez Envoyer des spans OpenTelemetry vers la vue Agents.
- Pour la spécification du point de terminaison, consultez Exporter une trace GenAI.
weave.eval.run_id et weave.eval.predict_and_score_call_id établissent les liens avec l’évaluation et le résultat. Le digest de ligne, l’ID d’exemple, l’index de trial, la catégorie et le nom de l’évaluation ajoutent du contexte et permettent le filtrage, mais ne créent pas de lien à eux seuls. Utilisez des ID d’appel Weave pour les deux attributs de liaison, et non des ID de trace ou de span OTel.
Vous pouvez obtenir les deux ID à partir de l’API de requête des résultats d’évaluation. Chaque évaluation de la réponse possède un evaluation_call_id, et chaque trial possède un predict_and_score_call_id.
Les exemples suivants supposent que span est le span OTel de l’opération de l’agent. Remplacez chaque valeur entre crochets par les métadonnées du run d’évaluation et du résultat auxquels appartient le span.
L’exemple TypeScript fonctionne car il définit directement les attributs OTel au lieu de s’appuyer sur un contexte de prédiction. Utilisez-le uniquement lorsque les deux ID d’appel sont déjà disponibles.
- Python
- TypeScript
Lier un agent exécuté dans un service distinct
EvaluationLogger distribué est uniquement disponible en Python.
- Python
- TypeScript
L’entrée dans le contexte Dans le service de l’agent, copiez les attributs reçus sur chaque span de l’agent que vous souhaitez associer au résultat. La fonction suivante illustre la partie réception avec un span OTel brut. Configurez le service pour exporter les spans vers le même Le span d’encapsulation de cet exemple est lié au résultat d’évaluation. Si le framework de l’agent crée des spans supplémentaires, copiez également
log_prediction() crée l’appel Evaluation.predict_and_score avant l’exécution du corps du contexte. Le contexte génère un ScoreLogger (associé à prediction dans l’exemple suivant) qui expose les deux ID d’appel. Gardez le contexte ouvert jusqu’au retour du service afin de pouvoir journaliser sa sortie et ses scores sur le même résultat d’évaluation.Dans le processus d’évaluation, remplacez [AGENT-SERVICE-URL] par le point de terminaison qui exécute votre agent, ainsi que [YOUR-TEAM]/[YOUR-PROJECT] :[YOUR-TEAM]/[YOUR-PROJECT] que l’évaluation.eval_context sur ces spans. OTel n’hérite pas des attributs de span du span d’encapsulation.Afficher les spans d’agent liés à vos évaluations
- Accédez à wandb.ai.
- Dans le menu latéral de Weave, cliquez sur Evals.
- Sélectionnez votre run d’évaluation.
- Dans le panneau de détails de l’évaluation qui s’ouvre, sous l’onglet Evaluation, cliquez sur Voir les spans. La page Agents s’ouvre, avec l’onglet Spans filtré sur cette évaluation.
Lier à un jeu de données existant
inputs à log_prediction, Weave réimporte les données à chaque run d’évaluation. Cela stocke des données en double, ce qui peut gaspiller de l’espace si le jeu de données est volumineux ou si de nombreuses évaluations le réutilisent.
Pour éviter cette duplication, publiez votre jeu de données vers Weave avant d’exécuter des évaluations, puis passez les lignes du jeu de données publié comme inputs. Weave résout les références aux lignes publiées à l’aide de références internes au lieu de réimporter les données. Cette technique vous offre la même expérience de liaison que le framework Evaluation standard, où chaque prédiction renvoie à une ligne précise du jeu de données dans l’interface Weave.
L’exemple suivant publie un jeu de données, y crée un lien dans EvaluationLogger, puis le récupère et le parcourt comme n’importe quel autre jeu de données.
- Python
- TypeScript
Obtenir les sorties avant la journalisation
- Python
- TypeScript
Journaliser des médias enrichis
log_prediction ou log_score.
- Python
- TypeScript
Journaliser et comparer plusieurs évaluations
EvaluationLogger, vous pouvez journaliser et comparer plusieurs évaluations côte à côte dans l’interface Weave. Cela est utile pour évaluer les performances de différents modèles sur le même jeu de données.
- Exécutez l’exemple de code suivant.
- Dans l’interface Weave, ouvrez l’onglet Evals.
- Sélectionnez les évaluations que vous souhaitez comparer.
- Cliquez sur Compare. Dans la vue de comparaison, vous pouvez :
- Choisir quelles évaluations ajouter ou supprimer.
- Choisir quelles métriques afficher ou masquer.
- Parcourir des exemples précis pour voir comment différents modèles se sont comportés pour la même entrée dans un jeu de données donné.
- Python
- TypeScript


Conseils d’utilisation
EvaluationLogger :
- Python
- TypeScript
- Appelez
finish()rapidement après chaque prédiction. - Utilisez
log_summarypour enregistrer des métriques qui ne sont pas liées à une prédiction individuelle (par exemple, la latence globale). - La journalisation des médias enrichis est utile pour l’analyse qualitative.