Weave で Claude Agent SDK エージェントをトレースする
- Python
- TypeScript
Weave SDK は Claude Agent SDK for Python に自動的にパッチを適用し、最小限の設定で Claude エージェントのトレースを取得できます。このガイドでは、Weave を初期化し、
query() を通じて MCP ツールを使用するマルチターンの Claude エージェントを実行する方法を説明します。Weave は、会話、モデルの Call、ツール Call をエンドツーエンドで自動的にトレースします。前提条件
- CoreWeave Forge アカウントと、
WANDB_API_KEY環境変数に設定した APIキー。 ANTHROPIC_API_KEY環境変数に設定した Anthropic APIキー。- Python 3.10 以降。
パッケージのインストール
開発環境に以下のパッケージをインストールします。weave パッケージはトレースを取得し、claude-agent-sdk はエージェントのランタイムを提供します。残りのパッケージは、サンプルツールをサポートするためのものです。
コード内でWeaveを初期化する
- Python
- TypeScript
weave.init を project に追加し、CoreWeave Forge のチーム名と project 名を更新してから、通常どおりにエージェントを構築してください。weave.init は Claude Agent SDK からのトレースを 取得する 自動パッチ適用を有効にします。この例では、wikipedia_search MCP ツールを定義し、3 ターンの会話を実行します。各ターンは個別の query() 呼び出しですが、後続のターンでは最初のターンのセッション ID を resume に渡すことで、すべてのターンが Weave Agents ビューで 1 つの会話としてグループ化されます。最初の 2 ターンでは Wikipedia のルックアップを実行し、3 番目のターンでは前の会話のコンテキストを使用して、ツール呼び出しなしで要約を生成します。query() 呼び出しは、invoke_agent ルートスパンを生成します。後続のターンは同じセッションを再開するため、Weave はすべてのスパンに同じ gen_ai.conversation.id を付与し、Agents ビューで 1 つの会話としてまとめます。再利用する ID は ResultMessage.session_id に格納されています。また、最初のターンでは resume に None を指定でき、その場合は新しいセッションが開始されます。resume を指定しない場合、各ターンはそれぞれ独自のセッションを開始し、個別の会話として表示されます。ただし ClaudeSDKClient は例外で、async with ブロックの有効期間中は 1 つのセッションを開いたまま保持するため、同じクライアントから送信したターンは最初からグループ化されます。Weave はどちらの方法にもパッチを適用します。Agents ビューでエージェントのトレースを確認する
スクリプトを実行すると、weave.init() によって project へのリンクが出力されます。Agents ビューを開くと、次の内容を確認できます。
- 会話のターンを含むセッション
invoke_agentスパンとしてレンダリングされた各ターン (子としてchatとexecute_toolがネストされます)- 各ステップの入力、モデル、出力、トークン使用量、ツール結果の全容