メインコンテンツへスキップ
AutoGen は、AI エージェントやアプリケーションを構築するための Microsoft 製フレームワークです。複雑なマルチエージェントシステムを簡単に構築でき、対話型 AI 向けのコンポーネント (AgentChat) 、マルチエージェントのコア機能 (Core) 、外部サービスとのインテグレーション (Extensions) を提供します。さらに、AutoGen にはノーコードでエージェントをプロトタイピングできる Studio も用意されています。詳しくは、AutoGen 公式ドキュメントをご覧ください。
このガイドは、AutoGen の基本的な理解があることを前提としています。
Weave は AutoGen と統合されており、マルチエージェントアプリケーションの実行をトレースして可視化できます。Weave を初期化すると、autogen_agentchatautogen_coreautogen_ext 内のやり取りが自動的にトラッキングされます。このガイドでは、AutoGen で Weave を設定する方法を説明し、モデルクライアント、ツールを備えたエージェント、グループチャット、メモリ、RAG ワークフロー、エージェントランタイム、逐次ワークフロー、コードエグゼキューターを扱う具体例を紹介します。最後には、AutoGen アプリケーションの詳細なトレースを Weave で取得し、エージェントの動作をデバッグしたり、LLM の使用状況を監視したり、複雑なワークフロー全体でエージェントがどのように相互作用するかを把握したりできるようになります。

前提条件

始める前に、AutoGen と Weave がインストールされている必要があります。また、使用する予定の LLM プロバイダ (たとえば OpenAI または Anthropic) 向けの SDK も必要です。
以降の例で使用する LLM プロバイダにモデルクライアントが認証できるよう、APIキーを環境変数として設定します:

基本設定

トレースの取得を開始するには、スクリプトの先頭で Weave を初期化します。Weave を初期化すると、スクリプト内のそれ以降の AutoGen Call は自動的に計装されます。
このスニペットを実行すると、Weave はトレースを autogen-demo project に送信するように設定され、以降、スクリプト内の AutoGen のアクティビティは Weave によって自動的に取得されます。

モデルクライアントのトレース

以下のセクションでは、単一の call、ストリーミング応答、キャッシュされた応答を含め、Weave が AutoGen 内でモデルクライアントに直接行われる call / calls をどのようにトレースするかを説明します。

クライアントの create Call のトレース

この例では、OpenAIChatCompletionClient に対する Call をトレースする方法を示します。
autogen-simple-client.png

ストリーミングを使用したクライアントの create call のトレース

Weave はストリーミングされる応答のトレースもサポートします。
autogen-streaming-client.png

キャッシュされたクライアント Call のトレース

AutoGen の ChatCompletionCache を使用でき、Weave はこれらのやり取りをトレースして、応答がキャッシュから返されたものか、新しい Call によるものかを表示します。
autogen-cached-client.png

ツールCallを行うエージェントのトレース

このセクションでは、Weave がエージェントとそのツールの使用状況をどのようにトレースし、エージェントがどのようにツールを選択して実行しているかを可視化するのかを示します。以下のExampleでは、天気ツールを定義し、それを AssistantAgent に関連付けます。
autogen-agent-tools.png

ラウンドロビン GroupChat のトレース

Weave は RoundRobinGroupChat などのグループチャット内のやり取りをトレースするため、エージェント間の会話の流れを追跡できます。確認しやすいように、すべてのエージェントのターンを単一の親トレースの下にまとめるには、グループチャット関数を @weave.op でラップします。この手順は任意ですが、推奨されます。
round_robin_group_chat.png

メモリのトレース

Weave は AutoGen のメモリ コンポーネントをトレースできます。@weave.op() を使用すると、メモリ操作を 1 つのトレースにまとめて可読性を高められます。これにより、メモリの追加と取得の呼び出しが、それらを使用するエージェントの run と一緒に表示されます。
autogen-memory.png

RAG ワークフローのトレース

Weave では、ChromaDBVectorMemory のようなメモリシステムを使用したドキュメントのインデックス作成や取得を含む Retrieval Augmented Generation (RAG) ワークフローをトレースできます。インデックス作成、取得、その結果の LLM Call を 1 つのトレースにまとめて表示できるようにフロー全体を可視化するには、RAG プロセスを @weave.op() でデコレートします。
この RAG の例では chromadb が必要です。pip install chromadb でインストールしてください。
autogen-rag.png

エージェントランタイムのトレース

Weave では、SingleThreadedAgentRuntime など、AutoGen のエージェントランタイム内のオペレーションをトレースできます。関連するトレースをグループ化して、ランタイムの実行中に呼び出されるメッセージハンドラーの完全なシーケンスを確認できるようにするには、ランタイムの実行関数を @weave.op() でラップしてください。
autogen-runtime.png

逐次ワークフローのトレース

エージェント間のやり取りの順序を定義する、複雑なエージェントワークフローをトレースできます。@weave.op() を使用すると、ワークフロー全体の高レベルなトレースを提供できます。これにより、各エージェントの寄与は単一の親Callの下にネストされます。次の例では、コンセプト抽出、ライター、整形と校正を行うエージェント、ユーザーエージェントをチェーンして、洗練されたマーケティングコピーを生成します。
autogen-sequential-workflow.png

コードエグゼキュータのトレース

Docker が必要です この例では Docker を使ってコードを実行するため、すべての環境で動作するとは限りません (たとえば、Colab 上で直接実行する場合など) 。この例を試す場合は、ローカルで Docker が実行されていることを確認してください。
Weave は、AutoGen エージェントによるコードの生成と実行をトレースします。アシスタント エージェントが生成したコードと、そのコードの実行時にエグゼキュータ エージェントが返す出力の両方を確認できます。
autogen-codegen.png

詳しくはこちら

Weave のトレースと Ops をよりよく理解するには、以下のガイドをお読みください。 このガイドは、Weave と AutoGen を統合するための出発点です。Weave UI では、エージェントのやり取り、モデルのcall / calls、ツールの使用状況に関する詳細なトレースを確認できます。