Skip to main content

Swarmマルチエージェントワークフロー

このチュートリアルでは、ShannonのSwarmWorkflowを使用して、LLMを搭載したLead Agentが調整する永続的で協調するAgentをデプロイする方法を紹介します。Agentは並列で作業し、Agent間メッセージング、共有ワークスペース、動的タスク再割り当てをサポートします。

学べること

  • APIとPython SDKでSwarmタスクを送信する方法
  • Lead Agentがイベントを通じてAgentを調整する仕組み
  • SSEストリーミングでAgentの進捗を監視する方法
  • Swarmパラメータと予算制御の設定方法
  • 実際のユースケースとベストプラクティス

前提条件

  • Shannonスタックが稼働中(Docker Compose)
  • http://localhost:8080でゲートウェイにアクセス可能
  • config/features.yamlでSwarmが有効(デフォルトで有効)
  • 認証のデフォルト:
    • Docker Compose: 認証はデフォルトで無効(GATEWAY_SKIP_AUTH=1)。
    • ローカルビルド: 認証はデフォルトで有効。認証を無効にするにはGATEWAY_SKIP_AUTH=1を設定するか、APIキーヘッダー-H "X-API-Key: $API_KEY"を含めます。

クイックスタート

送信 + ストリーミングを一回で

フロントエンドアプリケーションでは、送信とストリーミングを統合するエンドポイントを使用します:
レスポンス:
ストリームURLに接続してリアルタイムイベントを取得します:

Python SDK

基本的な使用方法

ストリーミング付き

カスタムコンテキスト

Agentの協調方法

Lead Agentによる調整

Lead Agentはイベント駆動のコーディネーターとして機能します。タスクを直接実行するのではなく、イベントに基づいて計画、割り当て、作業の再割り当てを行います:
  • Agentがidleになると、Leadは依存関係が満たされた保留中のタスクを確認し、次のタスクを割り当て
  • Agentが完了すると、Leadは再割り当て、シャットダウン、または計画の修正を評価
  • 定期的なチェックポイント(120秒ごと)で、Leadは全体の進捗をレビューし、計画を調整可能
  • アイドルAgentがなく、アクション可能な保留タスクもない場合、Leadは不要なLLM呼び出しをスキップ

チームロスター

各AgentはすべてのAgentとその担当を示すチームロスターを受け取ります。これにより、特定の情報について誰に連絡すべきかを把握できます:

発見の公開

Agentは共有ワークスペースを通じて発見を共有します。これらはすべてのAgentのプロンプトコンテキストに表示されます:

ダイレクトメッセージの送信

Agentは特定のチームメイトにダイレクトメッセージを送信できます:

ヘルプの要請

Agentが追加サポートを必要とする場合、Lead Agentにヘルプを要請します:
Lead Agentはリクエストを評価し、新しいAgentを生成するか、既存のアイドルAgentを再割り当てするか、サブタスクを保留タスクキューに追加します。

設定

features.yaml

設定パラメータ

実際のユースケース

コラボレーティブコーディング

Agentが協調してコードレビュー、実装、テストを実行。サンドボックス実行対応。

金融分析

ブル/ベアアナリスト、センチメントAgent、ポートフォリオマネージャーが投資インサイトを統合。

データ処理

サンドボックスPython実行、JSONクエリ、統計分析による並列データパイプライン。

競合インテリジェンス

競合のWebサイト、価格、SNSを同時監視し、発見を自動的にクロス共有。

例: コラボレーティブコードレビュー

Lead Agentは各関心事(セキュリティ監査、コード品質、テストカバレッジ)のタスクを作成し、developerロールのAgentを割り当て、すべてのレビュー完了に依存する最終統合タスクを作成します。

例: マルチサイト価格モニタリング

レスポンスメタデータの理解

Swarm Workflowはモデルごとの実行内訳とトークン使用量を含むメタデータを返します:

ヒントとベストプラクティス

  • context.force_swarm: trueを設定してSwarmWorkflowにルーティング
  • デフォルト設定から始め、結果に基づいて調整
  • SSEイベントでLead Agentの決定とAgentの動作を監視
  • セッション(session_id)を使用してマルチターンのSwarm会話を実現
  • LEAD_DECISIONイベントに注目して調整ロジックを理解

トラブルシューティング

一般的な問題:
  • Swarmがトリガーされない: force_swarm: truecontextオブジェクト内にあること、features.yamlでSwarmが有効であることを確認
  • Agentがタイムアウト: 複雑なタスクではagent_timeout_secondsを増やす(デフォルトは1800秒 / 30分)
  • Agentが多すぎる: クエリを簡略化してサブタスク数を減らすか、max_agentsを下げる
  • トークン使用量が高い: max_iterations_per_agentを下げるか、model_tier: "small"を使用するか、max_total_tokensを減らす
  • Agentがループに陥る: 収束検出(連続3回のツール未使用イテレーション)が自動的に検出する
  • 予算超過: max_total_llm_callsmax_total_tokensの設定を確認。Leadは予算が厳しくなるとグレースフルシャットダウンを試みる
  • 冗長な検索: 知識重複排除がこれを処理するはず。継続する場合、Agentが共有ワークスペースにアクセスできるか確認

フォールバック動作

Swarm Workflowが失敗した場合(計画エラー、すべてのAgentが失敗など)、Shannonは標準のDAG/Supervisor Workflowルーティングに自動的にフォールバックします。再帰的な失敗を防ぐため、force_swarmフラグはコンテキストから除去されます。

次のステップ

Swarmコンセプト

Swarmアーキテクチャの詳細

ディープリサーチ

引用付きのマルチステージリサーチ

APIリファレンス

完全なAPIドキュメント