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"を含めます。
- Docker Compose: 認証はデフォルトで無効(
クイックスタート
送信 + ストリーミングを一回で
フロントエンドアプリケーションでは、送信とストリーミングを統合するエンドポイントを使用します: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にヘルプを要請します:設定
features.yaml
設定パラメータ
実際のユースケース
コラボレーティブコーディング
Agentが協調してコードレビュー、実装、テストを実行。サンドボックス実行対応。
金融分析
ブル/ベアアナリスト、センチメントAgent、ポートフォリオマネージャーが投資インサイトを統合。
データ処理
サンドボックスPython実行、JSONクエリ、統計分析による並列データパイプライン。
競合インテリジェンス
競合のWebサイト、価格、SNSを同時監視し、発見を自動的にクロス共有。
例: コラボレーティブコードレビュー
developerロールのAgentを割り当て、すべてのレビュー完了に依存する最終統合タスクを作成します。
例: マルチサイト価格モニタリング
レスポンスメタデータの理解
Swarm Workflowはモデルごとの実行内訳とトークン使用量を含むメタデータを返します:ヒントとベストプラクティス
- はじめに
- パフォーマンス
- 予算制御
- Swarmを使うべきでない場合
context.force_swarm: trueを設定してSwarmWorkflowにルーティング- デフォルト設定から始め、結果に基づいて調整
- SSEイベントでLead Agentの決定とAgentの動作を監視
- セッション(
session_id)を使用してマルチターンのSwarm会話を実現 LEAD_DECISIONイベントに注目して調整ロジックを理解
トラブルシューティング
フォールバック動作
Swarm Workflowが失敗した場合(計画エラー、すべてのAgentが失敗など)、Shannonは標準のDAG/Supervisor Workflowルーティングに自動的にフォールバックします。再帰的な失敗を防ぐため、force_swarmフラグはコンテキストから除去されます。
次のステップ
Swarmコンセプト
Swarmアーキテクチャの詳細
ディープリサーチ
引用付きのマルチステージリサーチ
APIリファレンス
完全なAPIドキュメント