Skip to main content
このガイドでは、W&B Weave を使用してサブエージェントをトレースし、委譲されたエージェントの invocation が親ターンと同じトレース内のネストされたスパンとして表示されるようにする方法を説明します。サブエージェントをトレースすると、親エージェントが呼び出した専門エージェント、その動作、最終回答への貢献を含め、エージェントの推論の階層全体を確認できます。このガイドは、Weave でマルチエージェントシステムをインストルメントする開発者を対象としています。 サブエージェントは、ターン内で実行される、委譲されたエージェントの invocation です。あるエージェントが別のエージェントに処理を委譲する場合、たとえばスーパーバイザーエージェントが専門エージェントにディスパッチする場合などにサブエージェントを使用します。 Weave でインストルメントすると、サブエージェントは親ターンと同じトレース内に、ネストされた invoke_agent OpenTelemetry (OTel) スパンを生成します。Agents ビューでは、このネスト構造により、サブエージェントの invocation がそれをトリガーしたターンの下にレンダリングされ、その下に固有の LLM Call とツール呼び出しがまとめられます。

サブエージェントのデータモデル

コードをインストルメントする前に、Weave がトレース内でサブエージェントをどのように表現するかを理解しておくと役立ちます。weave.start_subagent スパンは OTel の invoke_agent スパンに対応し、親ターンと同じ操作名を出力します。Weave は、トレース内の親子関係によって両者を区別します。
サブエージェントは現在の会話の conversation_id を継承するため、Agents ビューでは会話の他の部分と同じグループにまとめられます。
weave.start_subagent は invoke_agent スパンを作成します。このスパンは、OTel コンテキストで現在アクティブなスパン (通常は親ターン、または委譲のきっかけとなった LLM Call) の子として自動的に配置されます。親子関係は OTel コンテキストの伝播によって処理されるため、明示的に委譲を行う必要はありません。

単一のサブエージェントをトレースする

次の例では、リクエストを受け取り、回答を検索するために Wikipedia 検索ツールを使用する調査専門のサブエージェントに委譲する、スーパーバイザーエージェントを実行します。 Weave は、会話を weave.start_conversation、続いて conversation.start_turn でラップすることで、階層全体を取得します。次に、専門エージェントの weave.start_subagent ブロックを使用してサブエージェントのトレースを取得し、各 LLM Call とツール実行を子スパンとして記録します。 これらの例では、エージェント間のトレースに焦点を当てるため、ルーティングロジックを意図的に省略しています。
Agents ビューでは、サブエージェントはターン内にネストされた invoke_agent ブロックとして表示され、その配下にサブエージェント自身の LLM Call とツール呼び出しがまとめられます。スーパーバイザーが直接行う LLM Call は、引き続きサブエージェントと同じ階層に表示されます。

複数のサブエージェントをトレースする

次の例では、コンテンツパイプラインのエージェントを実行します。このエージェントは 1 つのリクエストを処理する際、兄弟関係にある 3 つのサブエージェントに順番に処理を委譲します。事実を収集する researcher、投稿の下書きを作成する writer、最終出力を仕上げる reviewer の 3 つです。 Weave は、サブエージェントごとに個別の weave.start_subagent ブロックを開くことで、3 つのサブエージェントすべてを同じターン配下の兄弟として取得します。各サブエージェントは実行中のターンの OTel コンテキストを継承するため、サブエージェント同士が入れ子になることはなく、ターンの下にネストされた対等な invoke_agent スパンとして表示されます。
Agents ビューでは、ターンに兄弟関係にある 3 つのサブエージェントの invocation が含まれ、それぞれの下に個別の LLM Call がネストされています。また、researcher には自身のツール呼び出しも含まれます。サブエージェント同士が親子関係になることはありません。

ネストされたサブエージェントをトレースする

サブエージェントは、さらに別のサブエージェントに処理を委譲できます。各 start_subagent の呼び出しは、OTel コンテキストで現在実行中のスパンの下にネストされます。
この例では、ターンの下に 3 階層のネストが生成されます。
Agents ビューでは、research-coordinator はターンのサブエージェントとして、anthropic-researcher と openai-researcher はコーディネーター配下の兄弟要素として、anthropic-summarizer は anthropic-researcher のサブエージェントとして表示されます。
最終更新日 2026年9月30日