パターン選定ガイド
エージェントシステムの失敗の多くは、必要以上に複雑なアーキテクチャを最初から選ぶことから始まります。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則:ゴールの不確実さと予算
ゴールや解決パスが不確実なタスクほど自律性の高いパターン(ReAct、Orchestrator-Workers)が適するが、不確実さは実行コストの分散も大きくする。自律性を上げるほど、Budget Guard による上限と Checkpoint & Resume による途中状態の保全を厚くする。
2段階開発ステップ
複雑さを後から足すための実践的な進め方です。
- 決定論的ツールの適用 — まずタスクを純粋なツール呼出(API呼出)の組み合わせとして定義し、ワークフローまたは単一エージェントで動かす。
- 必要時のみ検証ループを追加 — 運用で特定の失敗モードが観測され、かつそれを機械的に検証できる外部ソースが存在する場合に限り、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
各パターンのページ末尾「関連パターン」が、組み合わせの起点になります。