Skip to content

パターン選定ガイド

エージェントシステムの失敗の多くは、必要以上に複雑なアーキテクチャを最初から選ぶことから始まります。Anthropic も Microsoft も同じ原則を掲げています——要件を満たせる最小の複雑度から始め、複雑さは効果が実証されたときだけ足す。このガイドはその原則を実行するための道具です。

複雑度の階段

パターンを選ぶ前に、そもそもエージェントが必要かを確認します。

レベル構成十分な場合
0単発のLLM呼出(+ RAG・few-shot)分類・要約・翻訳など1パスで完了するタスク
1ワークフロー(事前定義パス)タスクを固定のサブタスクに分解できる
2単一エージェント + ツール経路は動的だが、単一ドメインで完結する
3マルチエージェント複数ドメインの専門性、独立した権限境界が必要

多くの業務ユースケースはレベル0〜1で解決します。レベルを1つ上げるたびに、レイテンシ・コスト・障害モード・デバッグ難度が増えることを忘れないでください。

意思決定ツリー

ツリーで決まるのは開始点です。本番運用に進む際は、次の横断チェックを重ねてください。

  • 自律ループ(ReAct / Orchestrator-Workers / Evaluator-Optimizer)を含む → Budget Guard を必ず併用
  • 長時間タスク・中断リスクがある → Checkpoint & Resume
  • 不可逆アクション(送金、設定変更、外部送信)の権限を持つ → Approval Gate を必ず併用
  • 外部入力・外部コンテンツを扱う → Layered Guardrails
  • 大規模データ・長文書を参照する → Context Triage(入口で絞る)+ Context Compaction(蓄積を畳む)
  • セッションをまたぐ一貫性・パーソナライズが要る → Memory
  • 副作用を伴う多段実行(インフラ・移行・複数API)→ Self-Heal Loop。単一呼出の失敗は Retry with Feedback
  • 誤りが敵対的に悪用されうる高リスク成果物 → Adversarial Review

5つの経験則

環境的な制約からパターンを絞り込むための経験則です。意思決定ツリーの結果と矛盾する場合は、経験則を優先してください。

第1則:時間圧力と並列化

処理時間の予算が秒単位のドメイン(障害の一次トリアージ等)では、反復的な省察ループや動的なオーケストレーションを採用してはならない。入力を事前に並列化して同時実行し、結果をプログラムで合成する(Parallelization)。反復は時間予算を食い潰す。

第2則:非対称な障害コストと省察

誤った出力の損害が著しく大きいドメイン(融資判断、法務レビュー等)では、単一エージェントの出力をそのまま使ってはならない。生成と評価をシステムとして分離する(Evaluator-Optimizer)。同一エージェント内の自己批評(Reflection)だけでは、生成時と同じバイアスで見逃す。

第3則:行動権限と制御境界

エージェントが不可逆アクションの実行権限を持つ場合、自律ループのみで設計してはならない。アクションのトリガー直前に決定論的な承認関門(Approval Gate)を置き、影響範囲(blast radius)を制限する。「エージェントが賢いから大丈夫」は制御境界にならない。

第4則:情報量と初期トリアージ

アクセス可能なデータがコンテキストウィンドウに対して大きい場合、全量をループに流し込んではならない。検索・要約・選別による初期トリアージを決定論的な前段として置き、ループには絞り込んだコンテキストだけを渡す。長いループでは文脈が蓄積するため、Context Compaction で閾値到達時に圧縮する。コンテキストの膨張は品質劣化とコスト暴騰の主因になる。

第5則:ゴールの不確実さと予算

ゴールや解決パスが不確実なタスクほど自律性の高いパターン(ReActOrchestrator-Workers)が適するが、不確実さは実行コストの分散も大きくする。自律性を上げるほど、Budget Guard による上限と Checkpoint & Resume による途中状態の保全を厚くする。

2段階開発ステップ

複雑さを後から足すための実践的な進め方です。

  1. 決定論的ツールの適用 — まずタスクを純粋なツール呼出(API呼出)の組み合わせとして定義し、ワークフローまたは単一エージェントで動かす。
  2. 必要時のみ検証ループを追加 — 運用で特定の失敗モードが観測され、かつそれを機械的に検証できる外部ソースが存在する場合に限り、Reflection や Evaluator-Optimizer のループを局所的に追加する。

「いつか必要になるかもしれない」でループやマルチエージェントを足すのは、コストと障害モードを先払いするだけの投機です。失敗モードが観測されてから、その失敗モードに対して足してください。

パターンは組み合わせて使う

実システムは単一パターンでは完結しません。典型的な合成例:

  • 調査エージェント = Orchestrator-Workers + Parallelization + Context Triage(大規模ソースの選別) + Budget Guard
  • コーディングエージェント = ReAct + Evaluator-Optimizer(テストが評価器) + Retry with Feedback(ビルド・型エラーの是正) + Checkpoint & Resume
  • 顧客対応エージェント = Routing + ReAct + Memory(顧客履歴の想起) + Approval Gate(返金等の実行前) + Layered Guardrails
  • インフラ自動化エージェント = ReAct + Self-Heal Loop(補償付き回復) + Approval Gate + Checkpoint & Resume

各パターンのページ末尾「関連パターン」が、組み合わせの起点になります。

本文: CC BY 4.0 / コード片: MIT。GitHub で寄稿を受け付けています。