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

Swarmモードとは?

Swarmモードは、複数の永続的な自律Agentを並列にデプロイし、複雑なタスクを協力して解決します。LLMを搭載したLead Agentがチームを動的に調整します。タスクの計画、Agentの生成、作業の再割り当て、リアルタイムイベントに基づく意思決定を行います。 タスクが事前に分解されて変更されない静的なオーケストレーションとは異なり、Lead Agentは進捗を継続的に監視し、状況の変化に応じて新しいタスクの作成、冗長な作業のキャンセル、アイドルAgentの再割り当てを行います。

仕組み

ShannonのSwarm Workflowはイベント駆動のLead Agentループで動作します:

Lead Agentイベントループ

Lead Agentは特定のイベントで起動し、次のアクションを決定します:
各起動時に、Leadはチーム全体のステータス(Agent、タスク、予算)を受け取り、1つ以上のアクションを選択します。

ライフサイクルの概要

  1. 初期計画 — Leadがユーザーのクエリを受け取り、オプションで依存チェーンを持つ初期タスクセットを作成
  2. Agent生成 — Leadが依存順序を尊重してAgentを生成し、タスクを割り当て
  3. イベント駆動の調整 — Agentが作業を完了したり、アイドルを報告したり、チェックポイントに到達した際に、Leadが動的にタスクを再割り当て、計画を修正、または新しいAgentを生成
  4. 統合 — すべてのタスクが完了すると、Leadは専用の統合Agentを生成するか、doneを宣言して最終レスポンスを生成

タスク依存関係 (DAG)

タスクは他のタスクへの依存関係を宣言でき、有向非巡回グラフ(DAG)を形成します:
システムは依存順序を強制します。task-4は3つのリサーチタスクがすべて完了するまで割り当てられません。Leadはrevise_planを通じて新しい依存チェーンを動的に作成できます。

Lead Agentアクション

Leadが起動するたびに、1つ以上のアクションを選択します:

Agentアクション

各イテレーションで、Agentは1つのアクションを選択します:
Agentは自分自身を終了できません。Agentがdoneを返すと、自動的にidleステータスに変換されます。shutdown_agentでAgentを終了できるのはLead Agentのみです。これにより、Leadがチーム構成の完全な制御を維持します。

Agent間通信

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

P2Pメッセージング

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

共有ワークスペース

Agentはトピックベースのワークスペースリストに発見を公開します。各イテレーション前に、すべてのAgentがすべてのトピックから最新のワークスペースエントリを取得し、チーム全体が集合的な進捗を把握します。

知識重複排除

Shannonは3層の重複排除メカニズムでAgent間の冗長な作業を防止します:
各AgentはすでにフェッチしたURLをキャッシュします。同じAgentループ内で同じURLが再度リクエストされた場合、ネットワーク呼び出しなしでキャッシュされたコンテンツが返されます。
URLメタデータ(タイトル、要約、主要な事実)はチーム内のすべてのAgent間で共有されます。Agent BがAgent Aがすでに処理したURLをフェッチしようとすると、再フェッチではなくキャッシュされたメタデータを受け取ります。これにより時間とトークンの両方を節約できます。
全Agent間で発見された検索結果URLを追跡します。新しい検索で返されたURLの70%以上が他のAgentにより既に発見されている場合、システムは新しいアングルを探すよう警告を注入します。さらに、検索飽和検出器がJaccard単語レベル類似度(しきい値0.7、3クエリのウィンドウ)を使用して最近のクエリを比較し、重複検索をフラグします。

収束検出

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

グローバル予算制御

Swarmの実行は3層の予算制約でコストの暴走を防止します: Lead Agentはコンテキストで予算情報(残りの呼び出し回数、トークン、時間)を受け取り、コスト意識の高い意思決定を行います。例えば、予算が厳しい場合に低優先度のAgentをシャットダウンしたり、オプションのタスクをスキップしたりします。

Swarmと他のWorkflowの使い分け

Swarmモードは各Agentが複数のLLMイテレーションを実行し、Lead Agentの調整決定もトークンを消費するため、標準Workflowよりも多くのトークンを消費します。永続的で協調的なマルチAgent実行から本当に恩恵を受けるタスクに使用してください。

設定

Swarmの動作はconfig/features.yamlで制御されます:

ストリーミングイベント

Swarm Workflowはリアルタイム監視用のSSEイベントを発行します:

次のステップ

Swarmチュートリアル

Swarm Workflowのステップバイステップガイド

WorkflowとPattern

他のWorkflowタイプと認知パターン

ストリーミング

リアルタイムイベントストリーミング

コスト管理

マルチAgentタスクの予算管理