「マルチエージェントシステム」設計パターン8選 Googleが解説「マイクロサービスアーキテクチャのAI版」で信頼性向上に寄与

Googleは、マルチAIエージェントシステムにおける8つの基本的なデザインパターンを公式ブログで解説した。

» 2026年01月27日 13時00分 公開
[@IT]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

 Googleは2025年12月16日(米国時間)に公式ブログで、マルチAI(人工知能)エージェントの8つの基本的なデザインパターンを解説した。

 Googleは「モノリシックアプリケーションがスケーラブルではないように、単一のAIエージェントは『器用貧乏』に陥る」とし、マルチエージェントシステムを利用する利点は、「マイクロサービスアーキテクチャのAI版を構築することで、分散化と専門化による信頼性を実現できること」を挙げている。

 「パーサ(解析器)、クリティック(批評家)、ディスパッチャー(差配者)といった特定の役割を個々のエージェントに割り当てることで、本質的にモジュール化され、検証可能で信頼性の高いシステムを構築できる」(Google)

 Googleは、8つのマルチエージェントデザインパターンについて、オープンソースのAIエージェント開発/デプロイフレームワーク「Agent Development Kit」(ADK)とPythonを用いた疑似コードと併せて次のように紹介している。

1. シーケンシャルパイプラインパターン(組み立てライン)

 エージェントワークフローの基本中の基本であり、データ処理パイプラインの定番アーキテクチャだ。

 古典的な組み立てラインのように、エージェントAがタスクを完了し、そのバトンをエージェントBに直接渡す。直線的で決定論的であり、データの出どころが常に明確なため、非常にデバッグがしやすい。

 以下の例は、生のドキュメントの処理フローを示している。「Parser」(解析)エージェントがPDFをテキストに変換し、「Extractor」(抽出)エージェントが構造化データを抽出し、「Summarizer」(要約)エージェントが最終的な要約を生成する。

シーケンシャルパイプラインエージェントパターン(提供:Google) シーケンシャルパイプラインエージェントパターン(提供:Google)
# ADK Pseudocode
# Step 1: Parse the PDF
parser = LlmAgent(
    name="ParserAgent",
    instruction="Parse raw PDF and extract text.",
    tools=[PDFParser],
    output_key="raw_text" 
)
# Step 2: Extract structured data
extractor = LlmAgent(
    name="ExtractorAgent",
    instruction="Extract structured data from {raw_text}.",
    tools=[RegexExtractor],
    output_key="structured_data"
)
# Step 3: Summarize
summarizer = LlmAgent(
    name="SummarizerAgent",
    instruction="Generate summary from {structured_data}.",
    tools=[SummaryEngine]
)
# Orchestrate the Assembly Line
pipeline = SequentialAgent(
    name="PDFProcessingPipeline",
    sub_agents=[parser, extractor, summarizer]
)

2. コーディネーター/ディスパッチャーパターン(コンシェルジュ)

 チェーン(連鎖)ではなく、意思決定者が必要な場合もある。このパターンでは、中央のインテリジェントエージェントがディスパッチャー(差配者)として機能する。

 ユーザーの意図を分析し、指示されたタスクに最適な専門エージェントにリクエストを振り分ける。

 これは、下の図のように、請求書に関する問題なら「Billing」(請求)専門エージェントへ、トラブルシューティングなら「Tech Support」(テクニカルサポート)専門エージェントへ、ユーザーを誘導する必要があるような、複雑な顧客サービスに適しているという。

コーディネーター/ディスパッチャーエージェントパターン(提供:Google) コーディネーター/ディスパッチャーエージェントパターン(提供:Google)
# ADK Pseudocode
billing_specialist = LlmAgent(
    name="BillingSpecialist", 
    description="Handles billing inquiries and invoices.",
    tools=[BillingSystemDB]
)
tech_support = LlmAgent(
    name="TechSupportSpecialist", 
    description="Troubleshoots technical issues.",
    tools=[DiagnosticTool]
)
# The Coordinator (Dispatcher)
coordinator = LlmAgent(
    name="CoordinatorAgent",
    # The instructions guide the routing logic
    instruction="Analyze user intent. Route billing issues to BillingSpecialist and bugs to TechSupportSpecialist.",
    sub_agents=[billing_specialist, tech_support]
)

3. 並行分岐/集約パターン(タコ足)

 互いに依存しない複数のタスクがある場合、それらを一つずつ実行する必要はない。このパターンでは、複数のエージェントがタスクを同時に実行し、レイテンシ(遅延)を短縮したり、多様な視点を得たりする。その後、「Synthesizer」(合成)エージェントが出力を集約する。

 これは、自動コードレビューなどに理想的だ。順番にチェックを行うのではなく、「Security Auditor」(セキュリティ監査)、「Style Enforcer」(スタイル準拠)、「Performance Analyst」(パフォーマンス分析)の各エージェントを同時に起動し、プルリクエストをレビューさせることができる。全エージェントがレビューを完了したら、「Synthesizer」(合成)エージェントがそれらのフィードバックをまとめて、1つのレビューコメントを作成する。

並行分岐エージェントパターン(提供:Google) 並行分岐エージェントパターン(提供:Google)
# ADK Pseudocode
# Define parallel workers
security_scanner = LlmAgent(
    name="SecurityAuditor", 
    instruction="Check for vulnerabilities like injection attacks.",
    output_key="security_report"
)
style_checker = LlmAgent(
    name="StyleEnforcer", 
    instruction="Check for PEP8 compliance and formatting issues.",
    output_key="style_report"
)
complexity_analyzer = LlmAgent(
    name="PerformanceAnalyst", 
    instruction="Analyze time complexity and resource usage.",
    output_key="performance_report"
)
# Fan-out (The Swarm)
parallel_reviews = ParallelAgent(
    name="CodeReviewSwarm",
    sub_agents=[security_scanner, style_checker, complexity_analyzer]
)
# Gather/Synthesize
pr_summarizer = LlmAgent(
    name="PRSummarizer",
    instruction="Create a consolidated Pull Request review using {security_report}, {style_report}, and {performance_report}."
)
# Wrap in a sequence
workflow = SequentialAgent(sub_agents=[parallel_reviews, pr_summarizer])

4. 階層的分解(マトリョーシカ)

 タスクが大きすぎて、1つのエージェントのコンテキストウィンドウに収まらないことがある。上位エージェントは、複雑な目標をサブタスクに分解し、それらを委任できる。振り分けパターンとは異なり、親エージェントはタスクの一部だけを委任し、その結果を待ってから自身の推論を継続する場合がある。

 下の図の「ReportWriter」(レポート作成者)は、自身ではリサーチを行わない。「ResearchAssistant」(リサーチアシスタント)に委任し、さらにResearchAssistantは、「WebSearch」(Web検索)および「Summarizer」(要約)ツールを管理している。

階層的タスク分解エージェントパターン(提供:Google) 階層的タスク分解エージェントパターン(提供:Google)
# ADK Pseudocode
# Level 3: Tool Agents
web_searcher = LlmAgent(name="WebSearchAgent", description="Searches web for facts.")
summarizer = LlmAgent(name="SummarizerAgent", description="Condenses text.")
# Level 2: Coordinator Agent
research_assistant = LlmAgent(
    name="ResearchAssistant",
    description="Finds and summarizes info.",
    # Coordinator manages the tool agents
    sub_agents=[web_searcher, summarizer] 
)
# Level 1: Top-Level Agent
report_writer = LlmAgent(
    name="ReportWriter",
    instruction="Write a comprehensive report on AI trends. Use the ResearchAssistant to gather info.",
    # Wrap the sub-agent hierarchy as a tool for the parent
    tools=[AgentTool(research_assistant)] 
)

5. 生成者と批評家(編集デスク)

 高品質で信頼性の高い出力を生成するには、多くの場合、第三者の目が必要だ。このパターンでは、コンテンツの作成と検証を分離する。一方のエージェントが「Generator」(生成者)としてドラフト(下書き)を作成し、もう一方が「Critic」(批評家)として、ハードコードされた基準や論理チェックに基づいてそれをレビューする。

 このアーキテクチャの特徴は、条件付きループにある。レビューに合格すれば、ループを抜け、コンテンツが確定する。合格しなかった場合は、具体的なフィードバックがGeneratorに戻され、Generatorは基準を満たすドラフトを生成する。これは、構文チェックが必要なコード生成や、コンプライアンスレビューが必要なコンテンツ作成に非常に有用だ。

生成者と批評家エージェントパターン(提供:Google) 生成者と批評家エージェントパターン(提供:Google)
# ADK Pseudocode
# The Generator 
generator = LlmAgent(
    name="Generator",
    instruction="Generate a SQL query. If you receive {feedback}, fix the errors and generate again.",
    output_key="draft"
)
# The Critic 
critic = LlmAgent(
    name="Critic",
    instruction="Check if {draft} is valid SQL. If correct, output 'PASS'. If not, output error details.",
    output_key="feedback"
)
# The Loop 
loop = LoopAgent(
    name="ValidationLoop",
    sub_agents=[generator, critic],
    condition_key="feedback",
    exit_condition="PASS" 
)

6. 反復的改良(彫刻家)

 ドラフトを1回作っただけで、優れた成果物が完成することはまれだ。人間の作家が原稿を推敲(すいこう)し、磨き上げ、編集するように、エージェントも、答えを正確にするために数回の試行が必要な場合がある。このパターンでは、出力が特定の品質基準に達するまで、生成、批評、改良のサイクルを繰り返す。

 生成者と批評家パターンが正誤(合格/不合格)に焦点を当てるのに対し、このパターンは質的な改善に焦点を当てる。

 「Generator」(生成者)エージェントが粗いドラフトを作成し、「Critique」(批評家)エージェントが最適化のための指摘を行い、「Refinement」(改良)エージェントがそれらの指摘に基づいて出力を磨き上げる。

反復的改良エージェントパターン(提供:Google) 反復的改良エージェントパターン(提供:Google)
# ADK Pseudocode
# Generator
generator = LlmAgent(
    name="Generator",
    instruction="Generate an initial rough draft.",
    output_key="current_draft"
)
# Critique Agent 
critic = LlmAgent(
    name="Critic",
    instruction="Review {current_draft}. List ways to optimize it for performance.",
    output_key="critique_notes"
)
# Refiner Agent 
refiner = LlmAgent(
    name="Refiner",
    instruction="Read {current_draft} and {critique_notes}. Rewrite the draft to be more efficient.",
    output_key="current_draft" # Overwrites the draft with better version
)
# The Loop (Critique -> Refine)
loop = LoopAgent(
    name="RefinementLoop",
    max_iterations=3, 
    sub_agents=[critic, refiner]
)
# Complete Workflow
workflow = SequentialAgent(sub_agents=[generator, loop])

7. ヒューマンインザループ(人間のセーフティーネット)

 AIエージェントは強力だが、重要な意思決定には人間が介入しなければならない。このパターンでは、エージェントが基礎的な作業を行うが、重大な行動(特に、不可逆的な行動や、重大な結果を伴う行動)については、人間が承認する必要がある。安全性と説明責任を確保するためだ。これらの行動には、金融取引の実行、本番環境へのコードデプロイ、機密データに基づく行動などが含まれる。

 下の図は、「Transaction」(トランザクション)エージェントが日常業務を処理する様子を示す。重大なチェックが必要になると、「ApprovalTool」(承認ツール)エージェントを呼び出し、実行を一時停止して、人間のレビュー担当者が是非を判断するのを待つ。

ヒューマンインザループエージェントパターン(提供:Google) ヒューマンインザループエージェントパターン(提供:Google)
# ADK Pseudocode
transaction_agent = LlmAgent(
    name="TransactionAgent",
    instruction="Handle routine processing. If high stakes, call ApprovalTool.",
    tools=[ApprovalTool] 
)
approval_agent = LlmAgent(
    name="ApprovalToolAgent",
    instruction="Pause execution and request human input."
)
workflow = SequentialAgent(sub_agents=[transaction_agent, approval_agent])

8. 複合パターン(さまざまなパターンの組み合わせ)

 本番グレードのアプリケーションを構築するには、これらのパターンを組み合わせる必要があるだろう。

 例えば、下の堅牢(けんろう)な顧客サポートシステムでは、リクエストの振り分けに「Coordinator」(コーディネーター)を使用する。

 ユーザーが技術的な問題を抱えている場合、「Docs Search」(文書検索)と「User History」(ユーザー履歴)の各エージェントが同時に起動され、同時並行で処理を行う。最終的な回答は、ユーザーに送信される前に、トーンの一貫性を確保するために、「Generator」(生成者)と「Critic」(批評家)のループを通過する可能性がある。

複合エージェントパターン(提供:Google) 複合エージェントパターン(提供:Google)

Copyright © ITmedia, Inc. All Rights Reserved.

アイティメディアからのお知らせ

スポンサーからのお知らせPR

注目のテーマ

Microsoft & Windows最前線2026
人に頼れない今こそ、本音で語るセキュリティ「モダナイズ」
4AI by @IT - AIを作り、動かし、守り、生かす
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。