Ce que vous allez apprendre
Ce guide vous montre comment :- Tracer un agent sous la forme d’une conversation composée de tours de conversation et d’appels d’outils.
- Évaluer chaque run à l’aide d’un juge LLM.
- Comparer deux versions d’un agent côte à côte.
- Évaluer un tour de conversation au sein d’une conversation sur plusieurs tours.
- Transformer un score unique en grille d’évaluation.
Dans ce tutoriel, l’agent s’exécute sur Claude Sonnet et le juge sur Claude Opus. Confier la notation à un modèle différent et plus performant que celui que vous évaluez est une bonne pratique d’évaluation.
Prérequis
Pour suivre ce tutoriel, vous avez besoin des éléments suivants :- Un compte CoreWeave Forge.
- Python 3.10 ou version ultérieure.
- Les paquets requis, installés avec :
pip install weave anthropic. - Une clé API Anthropic définie dans la variable d’environnement
ANTHROPIC_API_KEY.
Créer et tracer l’agent
Dans cet exemple, l’agent utilise deux outils,lookup_order et issue_refund, pour examiner les demandes de remboursement et y répondre conformément à une politique qui n’autorise les remboursements que dans un délai de 30 jours. L’agent complet, avec les définitions des outils, la boucle du modèle et la conversion des messages, figure dans le notebook associé. Cette section porte sur la partie propre à Weave.
Commencez par initialiser Weave avec votre équipe et votre projet CoreWeave Forge. Remplacez [YOUR-TEAM] et [YOUR-PROJECT] par vos propres valeurs :
implicitly_patch_integrations) activé, vos conversations seront tracées deux fois : une fois en tant que span Conversation et une fois en tant qu’op tracé.
Tracez l’agent à l’aide de weave.conversation. Une conversation contient des tours de conversation, et chaque tour contient l’appel de modèle ainsi que les éventuels appels d’outil :
convo_idetnew_id(): un ID unique pour chaque conversation, par exemple un UUID.user_message: l’entrée de l’utilisateur pour le tour de conversation.anthropic_client: un client Anthropic initialisé.response_tool_callsetrun_tool(): les appels d’outil demandés par le modèle et votre fonction qui les exécute.run_agent_turn(): la boucle complète de l’agent ; renvoie la réponse finale ainsi qu’une transcription en texte brut de la trajectoire (tours de conversation, appels d’outil, résultats), destinée au juge.judge_task_completion(): le juge LLM, présenté dans la section suivante.
Noter l’agent avec un juge LLM
À l’aide d’un modèle juge, l’évaluateur évalue dans quelle mesure l’agent a accompli la tâche, sur la base des critères de réussite de celle-ci, en récompensant le bon résultat plutôt qu’une réponse qui se contente d’être polie. Dans cet exemple, le score correspond à la réalisation de la tâche, autrement dit : l’agent a-t-il atteint l’objectif ? Dans cette section, nous allons définir quelques tâches, écrire le juge, puis exécuter l’évaluation sur ces tâches. Définissez une petite suite de tâches :transcript (la trajectoire en texte brut renvoyée par run_agent_turn) au regard des success_criteria de la tâche, puis renvoie un dict {"passed", "reason"} :
EvaluationLogger. Exécutez l’agent dans log_prediction(...) afin que la conversation tracée soit associée à la ligne d’évaluation :
passed qui indique le verdict du juge, et l’onglet Évaluation comporte un bouton Voir les spans qui ouvre la page Agents avec les spans tracés liés à cette évaluation.
Organiser et comparer les évaluations
Pour améliorer un agent, vous modifiez son application, puis vous vérifiez si la modification a porté ses fruits. Le prompt système, les outils, le flux de contrôle et le LLM sous-jacent font tous partie de la version du modèle. Pour comparer deux versions, exécutez de nouveau l’évaluation sur l’agent modifié, en l’étiquetant comme une nouvelle version. Relancez l’évaluation avec une étiquettemodel différente :
Évaluer une conversation sur plusieurs tours
Dans la réalité, une conversation s’étend sur plusieurs tours de conversation, et un agent performant conserve le contexte d’un tour à l’autre. Il ne devrait pas redemander un numéro de commande que l’utilisateur a déjà fourni. Pour tester ce comportement hors ligne, initialisez l’agent avec un historique de conversation fixe, envoyez le message utilisateur suivant, puis évaluez la manière dont il traite ce tour en tenant compte du contexte. Chaque ligne de jeu de données correspond à un scénario de ce type : les tours précédents, suivis du message auquel l’agent doit répondre. Dans l’exemple ci-dessous, le numéro de commande n’apparaît que dans l’historique ; un bon agent le réutilise donc au lieu de le redemander :Cette approche évalue le tour de conversation suivant à partir d’un historique figé, ce qui constitue la méthode hors ligne la plus pratique. Mesurer de bout en bout une tâche complète sur plusieurs tours de conversation, dans laquelle l’agent pilote l’ensemble de la session, nécessite des tests A/B en conditions réelles, en production, et dépasse le cadre de ce tutoriel.
Étendre vos évaluateurs
Pour évaluer des agents réels, il faut un ensemble de scores couvrant deux dimensions :- Fonctionnelle : exactitude des appels d’outils, respect des instructions et reprise après des erreurs d’outils.
- Non fonctionnelle : sécurité et comportement de refus, latence, coût et utilisation hallucinée d’outils.
pred.log_score(...) supplémentaire dans la même étape. Pour découvrir les types d’évaluateurs fournis par Weave, notamment les évaluateurs prêts à l’emploi et ceux basés sur des classes, ainsi que des conseils pour écrire les vôtres, consultez Aperçu de l’évaluation.
Étapes suivantes
Vous avez tracé un agent sous forme de conversation, évalué la réalisation de la tâche pour des interactions à un seul tour et sur plusieurs tours de conversation, et comparé des versions, le tout lié aux transcriptions de l’agent.- Exécutez la version complète de ce tutoriel dans le notebook associé.
- Découvrez d’autres façons de lier les traces d’un agent à ses résultats d’évaluation, y compris pour les agents qui s’exécutent dans un service distinct ou qui utilisent leur propre instrumentation OTel, dans Lier les traces d’agent aux évaluations.