Skip to main content
Le SDK CoreWeave Forge vous permet de tracer des agents conçus avec des SDK populaires ou des harness personnalisés. Ce guide de démarrage rapide explique comment intégrer manuellement CoreWeave Agent Lens à un agent personnalisé fonctionnant sur plusieurs tours de conversation, afin d’émettre et de capturer des spans OpenTelemetry. Pour découvrir les concepts d’Agent Lens appliqués aux agents, consultez Tracer vos agents. Si vous souhaitez plutôt intégrer Agent Lens à des SDK ou à des harness tels que le Claude Agent SDK ou Codex, consultez Choisir une intégration d’agent. Agent Lens s’intègre automatiquement, par patch, à 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 Agent Lens. Vous comprendrez également comment Agent Lens 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 en Python ou en TypeScript capable de consulter Wikipédia. Il pose trois questions (trois tours de conversation) et laisse le LLM choisir quand effectuer une recherche sur Wikipédia pour trouver une réponse. Agent Lens enregistre chaque étape (la conversation, chaque question, chaque réponse de l’IA et chaque recherche sur Wikipédia) afin que vous puissiez voir ce qui s’est passé dans l’onglet Conversations d’Agent Lens. Ce guide vous montre comment :
  • Initialiser Agent Lens pour le traçage d’agents avec tracing.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 que le nombre de jetons et le coût s’affichent.
  • Afficher la conversation, les tours de conversation et les appels d’outil qui en résultent dans l’onglet Conversations.

Fonctionnement du SDK Agent Lens avec les agents

Le SDK Agent Lens intègre un système générique d’ingestion OTel pour les agents : Agent Lens peut donc capturer les informations de n’importe quel span OTel dans le code de votre agent. Toutefois, Agent Lens nécessite une gestion particulière des spans suivants pour effectuer le rendu des traces de votre agent dans l’onglet Conversations de l’interface Agent Lens. En Python, les quatre fonctions s’utilisent comme gestionnaires de contexte (with tracing.start_*(...) as obj:). À la sortie, elles terminent le span et vident les 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, et encapsulez chaque run de l’agent dans tracing.runIsolated() afin que des runs simultanés ne partagent pas la même conversation. D’autres attributs des conventions sémantiques GenAI, tels que gen_ai.usage.* et gen_ai.agent.name, enrichissent le rendu, mais ils sont facultatifs.

Prérequis

  • Un compte CoreWeave Forge et une clé API.
  • Une clé API OpenAI.
  • Python 3.9 ou version ultérieure (pour les exemples Python).
  • Node.js 18 ou version ultérieure et un exécuteur TypeScript tel que tsx (les exemples TypeScript nécessitent la fonction fetch intégrée et ne sont pas du JavaScript pur).

Installer les packages

Installez les packages suivants dans votre environnement de développement :
Enregistrez les exemples TypeScript dans des fichiers .mts, puis exécutez-les avec npx tsx [FILENAME].mts.

Initialiser Agent Lens

tracing.init() s’authentifie à l’aide de votre clé API et configure l’exporteur OTel qui envoie les spans d’agent à Agent Lens. Le nom du projet doit inclure votre équipe. Le SDK lit la clé API dans la variable d’environnement WANDB_API_KEY, mais vous pouvez aussi la transmettre avec l’argument api_key / apiKey.

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 l’utiliser.

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

Une fois l’outil et l’initialisation d’Agent Lens 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. L’exemple suivant exécute trois tours de conversation au sein d’une même conversation. À chaque tour, l’agent :
  1. Ouvre un span chat et laisse le LLM décider s’il doit appeler l’outil.
  2. Si le LLM demande un 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.
Le SDK Agent Lens trace automatiquement les appels effectués avec les bibliothèques clientes OpenAI, Anthropic et Google Gen AI. Ce démarrage rapide enregistre manuellement chaque appel LLM avec start_llm() afin de montrer comment les spans s’articulent entre eux ; il transmet donc autopatch_integrations=False à init(). Sans cet argument, chaque appel serait enregistré deux fois : une fois par votre span start_llm() et une fois par l’intégration automatique. Transmettez cet argument dès votre premier appel à init(), car un appel ultérieur avec autopatch_integrations=False ne supprime pas les patchs appliqués par un appel précédent. Dans votre propre code, laissez le patching automatique enregistrer vos appels LLM, ou bien désactivez-le et enregistrez-les vous-même.

Enregistrer l’utilisation des jetons et le coût

Chaque span chat contient l’utilisation des jetons et un ID du modèle. Agent Lens 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 si 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 à l’entrée totale, jetons mis en cache compris. Agent Lens facture les lectures et les écritures de 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 du modèle tarifable. Transmettez l’ID précis renvoyé par la réponse (resp.model) en tant que response_model. Le coût est déterminé à partir du modèle. Agent Lens privilégie response_model (le modèle exact servi par le fournisseur) et, à défaut, utilise le model que vous avez transmis à start_llm. Un alias tel que opus ou sonnet n’est pas tarifable et affiche Cost -.
OpenAI inclut les jetons mis en cache dans prompt_tokens : l’exemple ci-dessus s’applique donc 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 Agent Lens calcule le prix :

Afficher les traces de votre agent dans l’onglet Conversations

Ouvrez votre projet dans Agent Lens et sélectionnez Conversations. Vous y trouverez :
  • Une conversation pour research-bot comportant trois tours de conversation.
  • Pour chaque tour de conversation (invoke_agent), deux spans chat et un span execute_tool imbriqués.
  • Pour chaque chat, le nombre de jetons, la latence, le modèle et l’échange de messages complet.
Sélectionnez la conversation pour examiner les entrées, les sorties, les arguments et les résultats des outils dans les onglets Thread et Spans. Pour créer un lien profond (deep link) depuis votre propre interface vers une conversation dans Agent Lens, vous avez besoin de l’ID de la conversation. start_conversation / startConversation l’expose via conversation_id / conversationId. Vous pouvez ainsi le journaliser ou le stocker avec votre propre ID de requête, puis ouvrir la conversation plus tard depuis l’onglet Conversations.

Étapes suivantes

Dernière modification le 30 septembre 2026