> ## Documentation Index
> Fetch the complete documentation index at: https://docs.coreweave.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Extension Pi

> Tracez les sessions agentiques, les appels LLM et les exécutions d’outils de Pi dans Agent Lens.

[Pi](https://pi.dev/) est un agent de développement qui s’exécute dans le terminal. CoreWeave Agent Lens trace automatiquement les sessions, les appels LLM et les exécutions d’outils de Pi grâce à l’intégration `createOtelExtension` du SDK Weave de Weights & Biases (`weave`), conforme aux [conventions sémantiques GenAI](https://opentelemetry.io/docs/specs/semconv/gen-ai/). Cette page explique comment activer le traçage Agent Lens dans une application Pi afin d’observer le comportement de l’agent, de déboguer les runs et d’analyser l’utilisation des jetons et les coûts.

<Note>
  Le SDK CoreWeave Forge ne propose pas encore d’intégration Pi ; cette page utilise donc le SDK Weave. Les traces envoyées avec Weave apparaissent dans Agent Lens, car les deux produits partagent les mêmes données de trace.
</Note>

<Warning>
  Cette intégration envoie les données de session Pi à Agent Lens. 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’effectue aucune suppression des données personnelles (PII) ni aucun masquage des données sensibles. Si vos exigences de sécurité ou de conformité ne vous permettent pas d’envoyer ces données à Agent Lens, n’activez pas le traçage Agent Lens dans votre application Pi.
</Warning>

<h2 id="prerequisites">
  Prérequis
</h2>

* [Node.js](https://nodejs.org/) (v22.19 ou version ultérieure). Avec Node 20, `npm` installe une version antérieure de Pi qui prend encore en charge cette version de Node.
* Un compte CoreWeave Forge et une [clé API](https://forge.coreweave.com/settings#apikeys) définie dans la variable d’environnement `WANDB_API_KEY`.

<Note>
  Pi est un framework TypeScript et Node.js qui n’a pas d’équivalent Python. Pi nécessite le système de modules ESM. Votre projet doit utiliser `"type": "module"` dans `package.json`, ou compiler le TypeScript en ESM. Les projets CommonJS provoquent une erreur. Pour plus d’informations sur la configuration d’un projet ESM, voir [Intégration du SDK TypeScript](/fr/products/wandb/weave/guides/integrations/js#set-up-an-esm-project).
</Note>

<h2 id="install-packages">
  Installer les paquets
</h2>

Installez Agent Lens, Pi et les définitions de types Node en tant que dépendances locales du projet :

```bash lines theme={"system"}
npm install weave @earendil-works/pi-coding-agent
npm install --save-dev @types/node tsx typescript
```

<h2 id="trace-a-pi-prompt-and-response">
  Tracer un prompt et une réponse Pi
</h2>

L’exemple suivant présente la configuration minimale requise pour tracer un seul prompt et sa réponse Pi. Appelez `init()` depuis le paquet `weave` avant de créer votre session d’agent, puis passez `createOtelExtension()` comme fabrique d’extension. Agent Lens trace l’intégralité du cycle de vie de l’agent : la conversation, chaque cycle prompt-réponse (`invoke_agent`), chaque appel LLM (`chat`) et chaque exécution d’outil (`execute_tool`). `SessionManager.inMemory()` génère automatiquement l’ID de session.

```typescript lines twoslash theme={"system"}
// @noErrors
import {init, createOtelExtension} from 'weave';

import {
  createAgentSession,
  DefaultResourceLoader,
  SessionManager,
  getAgentDir,
} from '@earendil-works/pi-coding-agent';

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

  // 2. Créer un chargeur de ressources et y injecter l’extension OTEL de Weave.
  //    Le chargeur de ressources fournit l’environnement d’exécution Pi et le
  //    cycle de vie des extensions qui servent au traçage de l’activité de l’agent.
  const resourceLoader = new DefaultResourceLoader({
    cwd: process.cwd(),
    agentDir: getAgentDir(),
    extensionFactories: [createOtelExtension({})],
  });

  await resourceLoader.reload();

  // 3. Démarrer la session de l’agent
  const {session} = await createAgentSession({
    resourceLoader,
    sessionManager: SessionManager.inMemory(),
  });

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

  // 5. Diffuser en streaming la sortie de l’assistant vers stdout
  session.subscribe(event => {
    if (
      event.type === 'message_update' &&
      event.assistantMessageEvent.type === 'text_delta'
    ) {
      process.stdout.write(event.assistantMessageEvent.delta);
    }
  });

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

main();
```

Compilez et exécutez le script avec `tsx`, en remplaçant `[FILENAME]` par le nom de votre fichier TypeScript :

```bash theme={"system"}
npx tsx [FILENAME].ts
```

Lorsque vous exécutez votre code, vos traces apparaissent dans l’onglet **Conversations** de votre projet Agent Lens, à l’adresse `https://forge.coreweave.com/agent-lens/[YOUR-TEAM]/[YOUR-PROJECT]`. Agent Lens capture les sessions Pi, les appels LLM et les exécutions d’outils à chaque run de votre application.

<h3 id="next-steps">
  Étapes suivantes
</h3>

Pour transformer cet exemple en conversation sur plusieurs tours, ajoutez d’autres prompts. Agent Lens trace chaque appel à `session.prompt()` sous la forme d’un span `invoke_agent` distinct, tous imbriqués dans un même span racine. L’agent conserve automatiquement le contexte d’un prompt à l’autre.

Une fois le code exécuté, l’onglet **Conversations** affiche la chronologie complète sur plusieurs tours de conversation, avec les appels LLM imbriqués, les exécutions d’outils, l’utilisation des jetons et le coût.
