オーケストレーションパターン — モデル呼び出しを組み合わせる方法
一回の呼び出しで足りなければ、複数回をどう組み合わせるか
「LLMに聞けば答えが出る」— 簡単な質問ならこれで十分。だが「このリポのバグを直して」は一回では無理だ。ファイルを読み、問題を分析し、パッチを作り、テストを回し、失敗したら再修正する。この全体フローを設計するのがオーケストレーションだ。
主要パターン
チェイニング — 最初の呼び出しの出力が次の呼び出しの入力になる直列構造。最もシンプルだが効果的。例:コード生成 → コードレビュー → 修正。各ステップで異なるプロンプトを使える。
ルーティング — 入力を分析して適切な処理経路に送る。「この質問はコード関連だからコーディングエージェントへ」「これはドキュメント関連だから検索エージェントへ」のような分岐。分類モデルがルーター役を果たす。
並列化 — 独立したタスクを同時実行。10ファイルの分析は順番にやるより並列の方が速い。fan-out → 処理 → fan-in構造。
エージェントループ — 目標達成まで反復し続ける。「テスト通過までコード修正」が典型例。whileループ内でモデルを呼び続ける構造。エージェンティックAIカテゴリのAgent Loop参照。
パイプライン — チェイニングの拡張。複数段階が決まった順序で実行され、各段階で異なるツールとモデルを使える。CI/CDと似た概念。
パターン選択基準
シンプルなQ&A → 単一呼び出しで十分。
品質が重要な生成タスク → チェイニング(生成 → 検証 → 修正)。
多様な入力タイプ → ルーティング。
独立した大量処理 → 並列化。
不確実な結果、反復改善が必要 → エージェントループ。
複雑な多段階処理 → パイプライン。
実際にはこれらのパターンを組み合わせて使う。Claude Codeはエージェントループ内でチェイニングと並列化を両方使っている。
動作フロー
チェイニング — Aの出力がBの入力になる直列構造(生成 → 検証 → 修正)
ルーティング — 入力を分類して適切な処理経路に分岐
並列化 — 独立したタスクを同時実行(fan-out → 処理 → fan-in)
エージェントループ — 目標達成まで反復(while + モデル呼び出し + ツール使用)
パイプライン — 決まった順序の多段階処理、各段階で異なるツール/モデルを使用