Strands Agentsで学ぶマルチエージェント設計 - パターン選択の判断基準

Strands Agentsで学ぶマルチエージェント設計 - パターン選択の判断基準

2026.01.29

こんにちは。サービス開発室の武田です。

最近、Strands Agentsというエージェントフレームワークを勉強しています。このフレームワークにはマルチエージェントシステムを構築するためのパターンがいくつか用意されています。複数あるパターンの中から「どのパターンを選べばいいのか」を理解するために整理してみました。

今回は、Strands Agentsの全体像と パターン選択の判断基準 についてまとめます。

Strands Agentsとは

Strands Agentsは、Python製のオープンソースエージェントフレームワークです。

https://github.com/strands-agents/sdk-python

主な特徴は次のとおりです。

  • Amazon Bedrock、Anthropic API、OpenAI、Llamaなどさまざまなモデルに対応
  • 複数のオーケストレーションパターンを提供
  • Bedrock AgentCore Runtimeによりローカル開発からAWS本番環境へシームレスに移行可能

基本的な使い方

もっともシンプルなエージェントは、数行のコードで作成できます。

https://github.com/TAKEDA-Takashi/study-for-strands-agents/blob/main/00-basic/01_simple_agent.py#L8-L24

Bedrockモデルを指定してAgentを作成し、文字列を渡すだけで動作します。

なぜマルチエージェントが必要なのか

単一のエージェントでも多くのタスクをこなせますが、いくつか難しい場面があります。

たとえば長大なコンテキストでは精度が低下しやすいですし、1つのシステムプロンプトで複数の専門性を持たせるのは困難です。また、条件分岐やループを含む複雑なワークフローを単一エージェントで実現するのも難しいですね。

マルチエージェント構成にすると、翻訳・要約・分析などそれぞれに特化したエージェントを用意できます。条件分岐やループを含むワークフローも定義しやすくなりますし、状況に応じてエージェント間で動的に引き継ぐこともできます。

マルチエージェントパターン

Strands Agentsでは、公式ドキュメントで 3つの主要パターン (Graph、Swarm、Workflow)が解説されています。本記事ではこれらに加え、Agents as ToolsとA2Aも含めた5つのアプローチを紹介します。

パターン 一言説明 実行制御 ループ 並列 エラー処理
Agents as Tools エージェントをツールとして呼び出す 明示的呼び出し - - -
Graph 有向グラフでフロー定義 構造化された条件判定 開発者が明示的に定義
Swarm 自律的なhandoffで協調 自律ハンドオフ - エージェント依存
Workflow 決定論的DAGでタスク管理 事前定義のDAG × ダウンストリーム全体が停止
A2A HTTPプロトコルで通信 リモート呼び出し - - -

それぞれのパターンの概要を見ていきましょう。

Agents as Tools

エージェントを@toolデコレーターでラップし、別のエージェント(オーケストレーター)から呼び出す階層構造です。

strands-agents-multi-agent-design-patterns_1.png

もっともシンプルなパターンで、専門家エージェントに処理を委譲するだけの場合に適しています。

Graph

開発者が定義した有向グラフにしたがってエージェントを実行します。条件関数によるルーティングとループ(サイクル)に対応しています。

strands-agents-multi-agent-design-patterns_2.png

公式ドキュメントでは「決定論的有向グラフベースのエージェント編成」と説明されています。グラフ構造に基づいた予測可能な流れで実行され、ノード間でデータを受け渡せます。フィードバックループや反復的なワークフローにも対応しています。

Swarm

複数のエージェントが自律的に協調するパターンです。エージェント自身が文脈を理解して、次の引き継ぎ先を判断します。

strands-agents-multi-agent-design-patterns_3.png

公式ドキュメントでは「創発的知能」というコンセプトで説明されています。すべてのエージェントが過去の履歴にアクセスでき、専門性に基づいて引き継ぎ先を自律的に判断します。状況に応じて柔軟に協調できるのも特徴ですね。

Workflow

決定論的なDAG(有向非循環グラフ)でタスクを管理します。依存関係に基づいて並列実行が最適化されます。

strands-agents-multi-agent-design-patterns_4.png

公式ドキュメントでは「再利用可能なツールとしてカプセル化すべき、繰り返し可能で複雑な操作」に適していると説明されています。Graphとの違いは、DAGなのでループができないこと、そしてワークフロー全体を1つのツールとして扱える点です。データパイプラインのような固定フローを再利用したい場合に向いています。

A2A (Agent-to-Agent)

HTTPプロトコルでエージェント間通信するパターンです。エージェントをサーバーとして公開し、異なるシステム間での連携を実現します。

strands-agents-multi-agent-design-patterns_5.png

マイクロサービスアーキテクチャとの親和性が高く、プラットフォームを跨いだ連携に適しています。

パターン選択の判断基準

どのパターンを選ぶべきかは、公式ドキュメントでも言及されているとおり、実行パスがどう決定されるか がポイントです。

"The critical distinction is how execution paths are determined"
— Strands Agents公式ドキュメント

次のフローチャートを参考にしてください。

strands-agents-multi-agent-design-patterns_6.png

フローチャートの分岐ポイントを補足です。

  • 動的な判断が必要か?(Graph / Swarmの分岐)
    • ルーティングを誰が決めるかという違い
    • Swarm: LLMが会話の文脈を理解して、次のエージェントを判断する
    • Graph: 開発者がコードで条件を定義し、予測可能なルーティングを実現する
  • ループが必要か?固定フローをツールとして再利用したいか?(Graph / Workflowの分岐)
    • GraphとWorkflowはどちらも有向グラフでフローを定義しますが、用途が異なる
    • Graph: ループ(サイクル)を許容。レビュー→修正→再レビューのような反復処理が可能
    • Workflow: DAG(有向非循環グラフ)でループ不可。固定フローを再利用可能なツールとしてカプセル化したい場合に最適

ユースケース別の推奨パターン

ユースケース 推奨パターン 理由
翻訳・要約・分類 Agents as Tools 専門タスクへの単純な委譲
コードレビュー→修正サイクル Graph ループが必要
カスタマーサポート Swarm 問い合わせ内容で動的に振り分け
データパイプライン Workflow 固定フローを再利用可能なツールとして定義
マイクロサービス連携 A2A 異なるシステム間の通信

まとめ

Strands Agentsは複数のマルチエージェントパターンを提供しており、それぞれ異なる特性を持っています。Agents as Toolsは専門家への単純な委譲、Graph/Swarm/Workflowは公式の主要パターンで、A2Aはプラットフォーム間通信に使います。

パターン選択のポイントは「実行パスがどう決定されるか」です。条件分岐やループが必要ならGraph、LLMに判断を任せたいならSwarm、固定フローを再利用可能なツールとして定義したいならWorkflowがよさそうですね。

各パターンの詳細な実装例については、別記事で紹介予定です。参考になれば幸いです。

参考リンク

この記事をシェアする

FacebookHatena blogX

関連記事