メインコンテンツへスキップ
Pi は、ターミナルベースのコーディングエージェントです。Weave は、GenAI semantic conventions に準拠した createOtelExtension インテグレーションを使用して、Pi のセッション、LLM Call、ツール実行を自動的にトレースします。このページでは、Pi アプリケーションで Weave のトレースを有効にして、エージェントの動作を観察し、Runs をデバッグし、トークン使用量とコストを分析する方法を説明します。
このインテグレーションは、Pi のセッションデータを Weave に送信します。このデータには、ユーザーのプロンプト、モデルの応答、ツールの入力と出力、Pi ツールが読み取った file の内容、シェルコマンドとその出力、取得した URL やページの内容が含まれる場合があります。このインテグレーションでは、PII の除去や機密データのマスキングは実装されていません。セキュリティ要件またはコンプライアンス要件のためにこのデータを Weave に送信できない場合は、Pi アプリケーションで Weave のトレースを有効にしないでください。

事前準備

  • Node.js (v18 以降)。
  • W&B アカウントと、WANDB_API_KEY 環境変数として設定された APIキー
Pi は TypeScript と Node.js のフレームワークで、Python に相当するものはありません。Pi では ESM モジュールシステムが必要です。package.json"type": "module" を使用するか、TypeScript を ESM 出力にコンパイルする必要があります。CommonJS プロジェクトではエラーが発生します。ESM project の設定について詳しくは、TypeScript SDK integration を参照してください。

パッケージをインストール

Weave、Pi、Node のタイプ定義を、ローカルの project の依存関係としてインストールします。

Pi のプロンプトと応答をトレースする

以下の例は、単一の Pi のプロンプトと応答をトレースするために必要な最小限のセットアップを示しています。エージェントのセッションを作成する前に weave.init() を呼び出し、拡張機能ファクトリとして createOtelExtension() を渡します。Weave は、会話、各プロンプト/応答サイクル (invoke_agent) 、個々の LLM Call (chat) 、およびツール実行 (execute_tool) を含む、エージェントのライフサイクル全体をトレースします。SessionManager.inMemory() はセッション ID を自動的に生成します。
tsx を使用してスクリプトをコンパイルし、実行します。[FILENAME] は TypeScript file の名に置き換えてください:
コードを実行すると、トレースが Weave プロジェクトの Agents タブ (https://wandb.ai/[YOUR-TEAM]/[YOUR-PROJECT]/weave/agents) に表示されます。Weave は、アプリケーションの各 run について、Pi セッション、LLM Call、およびツール実行を取得します。

次のステップ

この例をマルチターンの会話にするには、プロンプトを追加します。Weave は session.prompt() を呼び出すたびに、それぞれが単一のルート span の下にネストされた個別の invoke_agent span としてトレースします。エージェントはプロンプト間で自動的にコンテキストを保持します。 コードを実行すると、Agents タブに、ネストされた LLM Call、ツール実行、トークン使用量、コストを含む、マルチターンの完全なタイムラインが表示されます。