メインコンテンツへスキップ

Swarmモードとは?

Swarmモードは、複数の永続的な自律Agentを並列にデプロイし、複雑なタスクを協力して解決します。標準的なDAGやSupervisor Workflowでは各Agentが一度実行して結果を返すのに対し、Swarm Agentは反復的な推論-行動ループを実行します。メールボックスを確認し、ツールを呼び出し、チームメイトと発見を共有し、独立して収束します。 Swarmスーパーバイザーが実行を監視し、Agentが支援を要請した場合にヘルパーAgentを動的に生成できます。

仕組み

ShannonのSwarm Workflowは4つのフェーズのライフサイクルに従います:

フェーズ1: タスク分解

スーパーバイザーがクエリを受け取り、他のWorkflowと同じ分解エンジンでサブタスクに分割します。各サブタスクが1つのAgentの担当になります。
Query: "Compare AI chip markets across US, Japan, and South Korea"

Subtasks:
├── Agent 1: "Research US AI chip market landscape"
├── Agent 2: "Research Japan AI chip market landscape"
└── Agent 3: "Research South Korea AI chip market landscape"

フェーズ2: Agentの生成

各サブタスクに対して、スーパーバイザーがAgentLoop子Workflowを生成します。各Agentは以下を受け取ります:
  • 一意の名前(日本の駅名に基づく決定論的な命名)
  • サブタスクの説明
  • すべてのAgentとその担当を一覧するチームロスター
  • 共有ワークスペースへのアクセス

フェーズ3: 並列実行

すべてのAgentが同時に作業します。各Agentは最大25回(設定可能)の推論-行動サイクルを実行します:
  1. メールボックスを確認して他のAgentからのメッセージを受信
  2. 共有ワークスペースを読み取り、チームメイトが公開した発見を確認
  3. LLMを呼び出して次のアクションを決定
  4. アクションを実行(ツール呼び出し、データ公開、メッセージ送信、ヘルプ要請、完了)
  5. 収束を確認(Agentは行き詰まっていないか、完了したか?)

フェーズ4: 統合

すべてのAgentが完了すると、スーパーバイザーが結果を収集し、統一されたレスポンスを生成します。Agent結果が1つだけの場合は直接返します。複数の結果がある場合、LLM統合ステップで発見を一貫した回答にマージします。

Agentアクション

各イテレーションで、Agentは1つのアクションを選択します:
アクション説明
tool_callツールを実行(Web検索、ファイル読み取りなど)
publish_dataワークスペースを通じてチームに発見を共有
send_message特定のチームメイトにダイレクトメッセージを送信
request_helpスーパーバイザーに新しいヘルパーAgentの生成を要請
done最終レスポンスを返して終了

Agent間通信

Swarm Agentは2つのメカニズムで協調します:

P2Pメッセージング

AgentはRedisベースのメールボックスを通じて特定のチームメイトにダイレクトメッセージを送信します。メッセージタイプにはrequestofferacceptdelegationinfoがあります。 各LLM呼び出し前に、Agentのメールボックスで新しいメッセージがチェックされます。受信メッセージはAgentのプロンプトコンテキストに表示されます。

共有ワークスペース

Agentはトピックベースのワークスペースリストに発見を公開します。各イテレーション前に、すべてのAgentがすべてのトピックから最新のワークスペースエントリを取得し、チーム全体が集合的な進捗を把握します。
Shared Workspace:
├── Topic: "findings"
│   ├── Agent-Takao: "NVIDIA dominates US with 80% market share..."
│   └── Agent-Mitaka: "Japan focuses on edge AI chips..."
└── Topic: "sources"
    └── Agent-Kichijoji: "Samsung foundry plans announced..."

動的Agent生成

Agentが単独で処理できないサブタスクに遭遇した場合、スーパーバイザーにヘルプを要請できます:
  1. Agentが説明と必要なスキルを含むrequest_helpアクションを送信
  2. スーパーバイザーがメールボックスで要請を受信(3秒ごとにポーリング)
  3. スーパーバイザーがヘルパータスク用の新しいAgentLoopを生成
  4. スーパーバイザーが要請元Agentに新しいAgentのIDを通知
安全制限: 各Agentは最大1つのヘルパーを生成でき、Agent総数は設定された上限(デフォルト:10)に制限されます。

収束検出

3つのメカニズムでAgentが無期限に実行されることを防止します:
Agentが3回連続でツールを使用せず(メッセージングまたは公開のみ)イテレーションを行った場合、収束と見なされ、部分的な発見を返します。
3回連続で永続的なツールエラーが発生した場合(レートリミットなどの一時的エラーを除く)、Agentは中止し、失敗を報告します。
最後のイテレーションでAgentがdoneを呼び出していない場合、Workflowが強制完了し、直近のイテレーションからサマリーを構築します。
一時的なエラー(レートリミット、タイムアウト、503)は自動リトライをトリガーし、バックオフが段階的に増加します(5秒刻み、最大30秒)。これらは中止しきい値にカウントされません。

Swarmと他のWorkflowの使い分け

シナリオ推奨Workflow
シンプルなQ&A、単一ステップのタスクSimple / DAG
引用付きのマルチステップリサーチResearch Workflow
Agent間のリアルタイム協調が必要なタスクSwarm
Agentが中間的な発見を共有する必要があるタスクSwarm
動的なサブタスク発見を伴う長時間の探索Swarm
ツールの反復(検索、分析、改善)が必要なタスクSwarm
Swarmモードは各Agentが複数のLLMイテレーションを実行するため、標準Workflowよりも多くのトークンを消費します。永続的で協調的なマルチAgent実行から本当に恩恵を受けるタスクに使用してください。

設定

Swarmの動作はconfig/features.yamlで制御されます:
パラメータデフォルト説明
swarm.enabledtrueSwarm Workflowの有効/無効
swarm.max_agents10Agent総数の上限(初期 + 動的)
swarm.max_iterations_per_agent25Agentごとの推論-行動ループの最大回数
swarm.agent_timeout_seconds600Agentごとのタイムアウト(10分)
swarm.max_messages_per_agent20AgentごとのP2Pメッセージ上限
swarm.workspace_snippet_chars800プロンプト内のワークスペースエントリの最大文字数
swarm.workspace_max_entries5各Agentに表示される最近のエントリ数

ストリーミングイベント

Swarm Workflowはリアルタイム監視用のSSEイベントを発行します:
イベントタイプAgent IDタイミング
WORKFLOW_STARTEDswarm-supervisorWorkflow開始時
PROGRESSswarm-supervisor計画、生成、監視、統合
AGENT_STARTEDAgent名Agentが最初のイテレーションを開始
AGENT_COMPLETEDAgent名Agentが完了
WORKFLOW_COMPLETEDswarm-supervisor最終統合完了

次のステップ