Skip to main content
Essayer dans Colab · Source sur GitHub Le SDK Weave vous permet de tracer des agents conçus avec des SDK populaires ou des harness personnalisés. Ce guide de démarrage rapide vous montre comment intégrer manuellement Weave à un agent personnalisé fonctionnant sur plusieurs tours de conversation, afin d’émettre et de capturer des spans OpenTelemetry. Pour découvrir les concepts de Weave appliqués aux agents, consultez Tracer vos agents. Si vous souhaitez intégrer Weave à des SDK ou à des harness tels que le Claude Agent SDK ou Codex, consultez Choisir une intégration d’agent. Weave patche automatiquement plusieurs SDK de création d’agents et harness d’agents, ce qui permet 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 au code de votre agent, afin d’appliquer le même modèle à vos propres agents personnalisés. Le code de ce guide met en place un petit agent de recherche capable de consulter Wikipédia. Il pose trois questions (trois tours de conversation) et s’appuie sur le LLM pour choisir à quel moment lancer 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 consultation de Wikipédia) pour que vous puissiez retracer le déroulement dans la vue Weave Agents. Ce guide vous montre comment :
  • Initialiser Weave pour le traçage d’agents 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’outils avec start_tool / startTool et enregistrer les résultats.
  • Enregistrer l’utilisation complète des jetons et un modèle tarifable afin d’afficher le nombre de jetons et le coût.
  • 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 comprend un système générique d’ingestion OTel pour les agents : Weave peut ainsi capturer des informations à partir de n’importe quel span OTel du code de votre agent. Toutefois, pour effectuer le rendu des traces de votre agent dans la vue Agents de l’interface utilisateur de Weights & Biases, Weave nécessite une gestion particulière des spans suivants. En Python, les quatre fonctions s’utilisent comme gestionnaires de contexte (with weave.start_*(...) as obj:). À la sortie, elles terminent 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 des conventions sémantiques GenAI, tels que gen_ai.usage.* et gen_ai.agent.name, permettent un rendu plus complet, mais ils sont facultatifs.

Prérequis

  • Un compte CoreWeave Forge et une clé API.
  • Une clé API OpenAI.
  • Python 3.10 ou version ultérieure (pour les exemples Python).
  • Node.js 18 ou version ultérieure (les exemples TypeScript nécessitent la fonction native fetch).

Installer les packages

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

Initialiser Weave

weave.init() s’authentifie auprès de W&B et configure l’exportateur OTel qui envoie les spans d’agent vers la vue Agents. Si le projet n’existe pas encore dans votre équipe, Weave le crée lors de la première écriture.

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 réunir dans une boucle d’agent complète. Cette boucle montre comment les conversations, les tours de conversation, les appels LLM et les appels d’outil s’imbriquent les uns dans les autres. L’exemple suivant exécute trois tours de conversation au sein d’une même conversation. À chaque tour :
  1. Un span chat est ouvert, et le LLM choisit s’il doit appeler l’outil.
  2. Si le LLM demande un outil, un span execute_tool est ouvert autour de l’appel, et le résultat est renvoyé au LLM.
  3. Un second span chat est ouvert pour produire la réponse finale.

Enregistrer l’utilisation des jetons et le coût

Chaque span chat contient l’utilisation des jetons et un ID de 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. Une valeur incomplète ou impossible à tarifer affiche donc 0 in / 0 out jetons 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 appliqués. Deux conditions doivent être remplies pour que le coût s’affiche :
  • Une utilisation complète. input_tokens correspond au nombre total de jetons d’entrée, y compris les jetons mis en cache. Weave facture les lectures et les écritures en cache à leurs propres tarifs et les soustrait du total d’entrée. cache_read_input_tokens et cache_creation_input_tokens doivent donc être indiqués en plus d’un total input_tokens qui les inclut. Chez les fournisseurs proposant la mise en cache des prompts (par exemple, Anthropic), les jetons mis en cache représentent souvent l’essentiel de l’entrée : si vous les omettez, l’utilisation et le coût affichés seront quasi nuls.
  • Un ID de modèle tarifable. Le coût est déterminé à partir du modèle. Weave privilégie response_model (le modèle exact servi par le fournisseur) et, à défaut, utilise le model transmis à start_llm. Un alias tel que opus ou sonnet n’est pas tarifable et affiche Cost - : transmettez donc comme response_model l’ID concret renvoyé par la réponse (resp.model).
OpenAI comptabilise les jetons mis en cache dans prompt_tokens, si bien que l’exemple ci-dessus s’applique tel quel. Anthropic indique les jetons mis en cache séparément de input_tokens : réintégrez-les donc dans le total sur lequel Weave calcule le coût :

Voir vos traces d’agent dans la vue Agents

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

Étapes suivantes

Dernière modification le 30 septembre 2026