コンテンツにスキップ

Panacea マルチエージェントオーケストレーション

このレシピは、Panaceaのエージェントオーケストレーションアーキテクチャについて説明します:オーケストレーターがタスクを割り当て、エージェントを選択し、逐次的および階層的なワークフローをサポートする方法です。

学べること

  • システムの脳としてのオーケストレーターの役割
  • Panaceaがタスクを専門のエージェントにルーティングする方法
  • 逐次的ワークフローと階層的ワークフローの違い
  • エージェントのクルーが共有の目標に向かって協力する方法
  • エージェントが新しい機能を使用できるようにするツール登録の仕組み

なぜこれが重要か

Panaceaでは、オーケストレーターはランダムではありません。能力の説明、タスクのコンテキスト、およびワークフローの状態に基づいて最適なエージェントを選択します。これにより、システムは予測可能で拡張可能になります。

主要な概念

  • オーケストレーター — 次に実行するエージェントを決定する中央コーディネーター
  • エージェントDocumentRetrievalAgentGeneralKnowledgeAgent、またはChatHistoryAgentなど、定義された目的を持つ自律ユニット
  • クルー — 共通の目標に向かって一緒に働くエージェントのグループ
  • ワークフロー — 協力スタイル;次のように分類できます:
  • 逐次的:一つのステップが次のステップに続く
  • 階層的:オーケストレーターが専門家にサブタスクを委任する指揮系統
  • ツール — エージェントが検索、アップロード、またはコードを実行するなどのアクションを実行するために呼び出すことができる関数

主要なPanaceaファイル

ファイル 重要性
Panacea/backend/agents/multi_agent_system.py オーケストレーターとワークフローのルーティングロジック
Panacea/backend/agents/autonomous_agent.py ツール登録とエージェントライフサイクル
Panacea/backend/agents/routing.py タスクルーティングヘルパーロジック
Panacea/backend/agents/reactive_agent.py マルチエージェントシステムを初期化し、チャットフローに接続します

仕組み

  1. ユーザーがタスクまたはクエリを提出します。
  2. オーケストレーターエージェントが入力をレビューし、能力とタスク要件に基づいて次のエージェントを選択します。
  3. 専門のエージェントがパイプラインの一部を実行し、中間結果を返すことがあります。
  4. オーケストレーターは逐次的に続行するか、階層的なパターンでサブタスクを委任し続けることができます。
  5. 最終結果が組み立てられ、ユーザーに返されます。

逐次的ワークフロー

逐次的ワークフローは、固定されたパイプラインに役立ちます。例えば:

  • ドキュメントチャンクを取得 → 要約 → ユーザーに回答
  • コードコンテキストを収集 → コードを分析 → レビュー提案を返す

各ステップは順番に実行され、次のステップは前のステップの出力を使用します。

階層的ワークフロー

階層的ワークフローは、オーケストレーターが専門家を管理する複雑なタスクに役立ちます:

  • オーケストレーターがデータを収集するために1つのエージェントを割り当てます
  • 別のエージェントがデータを検証します
  • 3番目のエージェントが最終応答を生成します

これは指揮系統に似ています:オーケストレーターは制御を維持し、専門家エージェントに作業を委任します。

ツール登録

Panaceaは動的なツール登録をサポートしています。エージェントが新しい機能を必要とする場合、backend/agents/autonomous_agent.pyからregister_tool(...)を呼び出すことができます。

つまり、クックブックは既存のツールの使用方法だけでなく、システムに新しいツールを追加する方法も文書化できます。

フィードバックループ

ユーザーフィードバックはエージェント選択の改善に不可欠です。PanaceaはドキュメントQ&Aやタスク結果からフィードバックを記録し、オーケストレーターがどのエージェントとツールが最良の結果を生むかを学習できるようにします。

クックブックへのノート

このレシピは手動説明の強力な候補です。オーケストレーターが決定を下す理由を示す図やステップバイステップのフロー例を含めるべきです。エージェント選択を偶然に任せるのではなく。