Passer au contenu principal
Weave for Agents est en préversion publique. Les fonctionnalités, les API et l’interface utilisateur de la vue Agents peuvent encore évoluer avant la disponibilité générale.
Pi est un agent de codage en ligne de commande. Weave trace automatiquement les sessions Pi, les appels LLM et les exécutions d’outils à l’aide de l’intégration createOtelExtension, qui est conforme aux conventions sémantiques GenAI. Cette page vous montre comment activer le tracing Weave dans une application Pi afin que vous puissiez observer le comportement de l’agent, déboguer les runs et analyser l’utilisation et le coût des jetons.
Cette intégration envoie les données de session Pi vers Weave. Ces données peuvent inclure les prompts des utilisateurs, les réponses du modèle, les entrées et sorties des outils, le contenu des fichiers lus par les outils Pi, les commandes shell et leur sortie, ainsi que les URL récupérées et le contenu des pages.L’intégration n’implémente pas le nettoyage des PII ni le masquage des données sensibles. Si vous ne pouvez pas envoyer ces données à Weave au regard de vos exigences de sécurité ou de conformité, n’activez pas le tracing Weave dans votre application Pi.

Prérequis

  • Node.js (v18 ou version ultérieure).
  • Un compte W&B et une clé API définie comme variable d’environnement WANDB_API_KEY.
Pi est un framework TypeScript et Node.js sans équivalent en Python. Pi nécessite le système de modules ESM. Votre projet doit utiliser "type": "module" dans package.json, ou compiler TypeScript en sortie ESM. Les projets CommonJS génèrent une erreur. Pour plus d’informations sur la configuration d’un projet ESM, voir l’intégration du SDK TypeScript.

Installer les paquets

Installez Weave, Pi et les définitions de types pour Node comme dépendances locales du project :
npm install weave @earendil-works/pi-coding-agent
npm install --save-dev @types/node tsx typescript

Tracer un prompt et une réponse dans Pi

L’exemple suivant montre la configuration minimale nécessaire pour tracer un seul prompt et une seule réponse dans Pi. Appelez weave.init() avant de créer votre session d’agent, puis transmettez createOtelExtension() en tant que fabrique d’extensions. Weave trace l’intégralité du cycle de vie de l’agent : la session, chaque cycle prompt/réponse (invoke_agent), les appels LLM individuels (chat) et les exécutions d’outils (execute_tool). SessionManager.inMemory() génère automatiquement l’ID de session.
import {, } from 'weave';

import {
  ,
  ,
  ,
  ,
} from '@earendil-works/pi-coding-agent';

async function () {
  // 1. Initialiser Weave. Configure le TracerProvider OTEL pointant vers votre
  //    projet Weave. Tous les spans créés par createOtelExtension() sont
  //    automatiquement exportés ici.
  await ('[YOUR-TEAM]/[YOUR-PROJECT]');

  // 2. Créer un chargeur de ressources et injecter l'extension OTEL de Weave.
  //    Le chargeur de ressources fournit l'environnement d'exécution Pi et
  //    le cycle de vie des extensions utilisé pour tracer l'activité de l'agent.
  const  = new ({
    : .(),
    : (),
    : [({})],
  });

  await .reload();

  // 3. Démarrer la session de l'agent
  const {} = await ({
    ,
    : .inMemory(),
  });

  // 4. Lier les extensions. Déclenche l'événement session_start afin que l'adaptateur OTEL
  //    crée le span de session racine et capture l'identifiant de conversation.
  await .bindExtensions({});

  // 5. Diffuser la sortie de l'assistant vers stdout
  .subscribe( => {
    if (
      .type === 'message_update' &&
      .assistantMessageEvent.type === 'text_delta'
    ) {
      ..(.assistantMessageEvent.delta);
    }
  });

  // 6. Envoyer un prompt et attendre la réponse complète
  await .prompt('What files are in the current directory?');
  .();
}

();
Compilez et exécutez le script avec tsx, en remplaçant [FILENAME] par le nom de votre fichier TypeScript :
npx tsx [FILENAME].ts
Lorsque vous exécutez votre code, vos traces apparaissent dans l’onglet Agents de votre projet Weave à l’adresse https://wandb.ai/[YOUR-TEAM]/[YOUR-PROJECT]/weave/agents. Weave capture les sessions Pi, les appels LLM et les exécutions d’outils à chaque run de votre application.

Étapes suivantes

Pour transformer cet exemple en session sur plusieurs tours de conversation, ajoutez d’autres prompts. Weave trace chaque appel à session.prompt() sous la forme d’un span invoke_agent distinct, tous imbriqués sous un seul span racine. L’agent conserve automatiquement le contexte d’un prompt à l’autre. Après avoir exécuté le code, l’onglet Agents affiche la chronologie complète de la session sur plusieurs tours, avec les appels LLM imbriqués, les exécutions d’outils, l’utilisation des jetons et le coût.