Skip to main content
Essayer dans Colab · Code source GitHub Le SDK Weave vous permet de tracer des agents créés avec des SDK populaires ou des harnesses personnalisés. Ce Démarrage rapide vous montre comment intégrer manuellement Weave dans un agent personnalisé sur plusieurs tours de conversation afin d’émettre et de capturer des spans OpenTelemetry. Pour une compréhension conceptuelle de Weave pour les agents, voir Tracer vos agents. Si vous souhaitez intégrer Weave à des SDK ou à des harnesses comme Claude Agent SDK ou Codex, voir Choisir une intégration d’agent. Weave applique automatiquement des patchs à plusieurs SDK de création d’agents et harness d’agents pour une intégration rapide.

Ce que vous allez apprendre

À la fin de ce démarrage rapide, vous disposerez d’un agent fonctionnel sur plusieurs tours de conversation qui émet des spans OTel compatibles avec Weave. Vous comprendrez également comment Weave fait correspondre les conversations, les tours de conversation, les appels LLM et les appels d’outil à votre code d’agent, afin de pouvoir appliquer le même modèle à vos propres agents personnalisés. Le code de ce guide configure un petit agent de recherche capable d’interroger Wikipédia. Il pose trois questions (trois tours de conversation) et utilise le LLM pour choisir quand effectuer une recherche sur Wikipédia afin de trouver une réponse. Weave enregistre chaque étape (la conversation, chaque question, chaque réponse de l’IA et chaque recherche sur Wikipédia) pour que vous puissiez voir ce qui s’est passé dans la vue Agents de Weave. Ce guide vous montre comment :
  • Initialiser Weave pour le traçage d’agent avec weave.init().
  • Ouvrir une conversation et un tour de conversation avec start_conversation / startConversation et start_turn / startTurn.
  • Encapsuler les appels LLM avec start_llm / startLLM et enregistrer l’utilisation.
  • Encapsuler les exécutions d’outil avec start_tool / startTool et enregistrer les résultats.
  • Enregistrer l’utilisation complète des jetons et un modèle avec tarification afin que le nombre de jetons et le coût soient affichés.
  • Afficher la conversation, les tours de conversation et les appels d’outil obtenus dans la vue Agents.

Fonctionnement du SDK Weave avec les agents

Le SDK Weave inclut un système d’ingestion OTel générique pour les agents, ce qui signifie que Weave peut capturer des informations à partir de n’importe quel span OTel dans le code de votre agent. Cependant, Weave nécessite un traitement particulier des spans suivants pour afficher les traces de votre agent dans la vue Agents de l’interface Weave. En Python, les quatre fonctions s’utilisent comme des gestionnaires de contexte (with weave.start_*(...) as obj:). À la fin du contexte, elles ferment le span et effectuent le vidage des attributs, y compris en cas d’exception. En TypeScript, appelez .end() sur chaque objet renvoyé. Utilisez try { ... } finally { obj.end(); } pour garantir le nettoyage en cas d’exception. D’autres attributs de conventions sémantiques GenAI, tels que gen_ai.usage.* et gen_ai.agent.name, permettent un rendu supplémentaire, mais ils sont facultatifs.

Prérequis

  • Un compte W&B et une clé API.
  • Une clé API OpenAI.
  • Python 3.10+ (pour les exemples en Python).
  • Node.js 18+ (les exemples TypeScript nécessitent la fonction fetch intégrée).

Installer les paquets

Installez les paquets suivants dans votre environnement de développement :

Initialiser Weave

weave.init() s’authentifie auprès de W&B et configure l’exporteur OTel qui envoie les spans d’agent vers la vue Agents. Si le projet n’existe pas dans votre équipe, Weave le crée lors du premier envoi de données.

Définir un outil

Le code suivant définit l’outil de recherche Wikipédia de l’agent, ainsi qu’un schéma d’outil OpenAI qui indique quand et comment utiliser cet outil.

Exécuter un agent tracé sur plusieurs tours de conversation

Une fois l’outil et l’initialisation de Weave en place, l’étape suivante consiste à les intégrer dans une boucle d’exécution complète de l’agent. Cette boucle montre comment les conversations, les tours de conversation, les appels LLM et les appels d’outil s’imbriquent. L’exemple suivant exécute trois tours de conversation dans une seule conversation. Chaque tour de conversation :
  1. Ouvre un span chat et laisse le LLM choisir s’il doit appeler l’outil.
  2. Si le LLM demande à utiliser l’outil, ouvre un span execute_tool autour de l’appel et renvoie le résultat au LLM.
  3. Ouvre un second span chat pour produire la réponse finale.

Enregistrer l’utilisation des jetons et le coût

Chaque span de chat inclut une utilisation des jetons et un ID du modèle. Weave affiche le nombre de jetons à partir de l’utilisation et calcule le coût à partir de l’utilisation et de l’ID du modèle. Ainsi, une valeur incomplète ou non tarifable affiche 0 in / 0 out tokens ou Cost -, même lorsque le reste de la trace semble correct. record(...) définit ces champs (ainsi que output_messages, response_id, reasoning, etc.) en un seul appel. Seuls les champs que vous transmettez sont pris en compte. Deux éléments doivent être corrects pour que le coût s’affiche :
  • Utilisation complète. input_tokens correspond au total des jetons en entrée, y compris ceux mis en cache. Weave facture les lectures et les écritures du cache à leurs propres tarifs et les soustrait du total d’entrée. cache_read_input_tokens et cache_creation_input_tokens doivent donc être signalés en plus d’un total input_tokens qui les inclut. Pour les providers avec mise en cache des prompts (par exemple, Anthropic), les jetons mis en cache représentent souvent la majeure partie de l’entrée. Les omettre fait donc apparaître l’utilisation et le coût comme quasiment nuls.
  • Un ID du modèle tarifable. Le coût repose sur une recherche basée sur le modèle. Weave privilégie response_model (le modèle exact servi par le provider) et se rabat sur le model que vous avez transmis à start_llm. Un alias tel que opus ou sonnet n’est pas tarifable et affiche Cost - ; transmettez donc l’ID exact renvoyé dans la réponse (resp.model) comme response_model.
OpenAI comptabilise les jetons mis en cache dans prompt_tokens, donc l’exemple ci-dessus s’applique directement. Anthropic signale les jetons mis en cache séparément de input_tokens ; ajoutez-les donc au total sur lequel Weave applique la tarification :

Voir les traces de votre agent dans la vue Agents

Lorsque weave.init() s’exécute, il affiche un lien vers votre project dans lequel vous pouvez voir :
  • Une ligne dans l’onglet Agents pour research-bot.
  • Une conversation contenant trois tours de conversation.
  • Chaque tour de conversation (invoke_agent) avec deux spans chat et un span execute_tool imbriqué.
  • Le nombre de jetons, la latence, le modèle et l’échange complet de messages pour chaque chat.
Cliquez sur n’importe quel tour de conversation pour inspecter les entrées, les sorties, les arguments de l’outil et les résultats de l’outil. Pour créer un lien direct depuis votre propre interface utilisateur vers une conversation dans la vue Weave Agents, construisez l’URL à partir de votre entité, de votre projet et de l’ID de la conversation. weave.init() renvoie un client qui contient entity et project, et start_conversation expose conversation_id.

Prochaines étapes