メインコンテンツへスキップ
これはインタラクティブなノートブックです。ローカルで実行するか、以下のリンクを使用してください:

マルチエージェントシステムのための構造化出力

OpenAIはリリースしましたStructured Outputsを使用することで、強い言葉遣いのプロンプトなしでも、モデルが常にユーザーが提供したJSONスキーマに準拠した応答を生成することを保証できます。Structured Outputsを使用すれば、不正な形式の応答を検証したり再試行したりする必要はありません。 新しいパラメータstrict: trueを使用することで、応答が提供されたスキーマに従うことを保証できます。 マルチエージェントシステムにおける構造化出力の使用は、エージェント間の一貫性のある、簡単に処理できるデータを確保することでコミュニケーションを強化します。また、明示的な拒否を可能にすることで安全性を向上させ、再試行や検証の必要性を排除することでパフォーマンスを向上させます。これにより、相互作用が簡素化され、システム全体の効率が向上します。 このチュートリアルでは、マルチエージェントシステムで構造化出力を活用し、それらをWeaveでトレースする方法を示します。
ソース:このクックブックはOpenAIの構造化出力のサンプルコードに基づいており、Weaveを使用した視覚化を改善するためにいくつかの修正が加えられています。

依存関係のインストール

このチュートリアルには以下のライブラリが必要です:
  • OpenAIマルチエージェントシステムを作成するため。
  • WeaveLLMワークフローを追跡し、プロンプト戦略を評価するため。
環境にWANDB_API_KEYを設定して、wandb.login()で簡単にログインできるようにします(これはcolabにシークレットとして与えられるべきです)。 ログを記録したいW&Bのプロジェクトをname_of_wandb_projectに設定します。 注意:name_of_wandb_project{team_name}/{project_name}の形式でも指定でき、トレースをログに記録するチームを指定できます。 その後、weave.init()を呼び出してweaveクライアントを取得します 私たちはOpenAI APIを使用するので、OpenAI APIキーも必要になります。サインアップしてOpenAIプラットフォームで独自のAPIキーを取得できます。(これもcolabにシークレットとして与えられるべきです。)

エージェントのセットアップ

取り組むユースケースはデータ分析タスクです。 まず、4つのエージェントシステムをセットアップしましょう:
  • トリアージエージェント:どのエージェントを呼び出すかを決定します
  • データ前処理エージェント:データをクリーニングするなど、分析のためにデータを準備します
  • データ分析エージェント:データの分析を実行します
  • データ可視化エージェント:分析の出力を視覚化して洞察を抽出します まず、これらの各エージェントのシステムプロンプトを定義します。
次に、各エージェントのツールを定義します。 トリアージエージェント以外の各エージェントには、それぞれの役割に特化したツールが装備されます: データ前処理エージェント:1. データのクリーニング、2. データの変換、3. データの集計 データ分析エージェント:1. 統計分析、2. 相関分析、3. 回帰分析 データ可視化エージェント:1. 棒グラフの作成、2. 折れ線グラフの作成、3. 円グラフの作成

Weaveを使用したマルチエージェントの追跡を有効にする

以下のコードロジックを記述する必要があります:
  • ユーザークエリをマルチエージェントシステムに渡す処理
  • マルチエージェントシステムの内部動作の処理
  • ツール呼び出しの実行
ユーザークエリから、必要なツールはclean_datastart_analysisおよびuse_line_chartであることがわかります。 まず、ツール呼び出しの実行を担当する実行関数を定義します。 Pythonの関数を@weave.op()でデコレートすることで、言語モデルの入力、出力、およびトレースをログに記録してデバッグできます。 マルチエージェントシステムを作成する際には多くの関数が登場しますが、単に@weave.op()をその上に追加するだけで十分です。
次に、各サブエージェントのツールハンドラを作成します。これらには、モデルに渡される固有のプロンプトとツールセットがあります。出力は、ツール呼び出しを実行する実行関数に渡されます。
最後に、ユーザークエリの処理を扱う包括的なツールを作成します。この関数はユーザークエリを受け取り、モデルから応答を取得し、それを他のエージェントに渡して実行を処理します。

マルチエージェントシステムの実行とWeaveでの可視化

最後に、ユーザーの入力を使用してプライマリhandle_user_message関数を実行し、結果を観察します。
Weaveのリンクをクリックすると、実行が以下のようにトレースされていることがわかります。Tracesページでは、入力と出力を確認できます。わかりやすくするために、各出力をクリックしたときに表示される結果のスクリーンショットが図に追加されています。WeaveはOpenAIのAPIと統合されており、コストが自動的に計算されます。そのため、コストとレイテンシも右端に表示されていることが確認できます。1-1.png 行をクリックすると、マルチエージェントシステム内で実行された中間プロセスを確認できます。例えば、analysis_agentの入力と出力を見ると、それが構造化出力形式であることがわかります。OpenAIの構造化出力はエージェント間のコラボレーションを容易にしますが、システムが複雑になるほど、これらの相互作用が行われる形式を把握することが難しくなります。Weaveを使用することで、これらの中間プロセスとその入出力を手に取るように理解することができます。 3.png Weaveでのトレースの扱い方をぜひ詳しくご覧ください!

結論

このチュートリアルでは、OpenAIが提供する構造化出力とWeaveを使用して、入力、最終出力、および中間出力形式を追跡するマルチエージェントシステムを便利に開発する方法を学びました。