🎼

オーケストレーションパターン — モデル呼び出しを組み合わせる方法

一回の呼び出しで足りなければ、複数回をどう組み合わせるか

「LLMに聞けば答えが出る」— 簡単な質問ならこれで十分。だが「このリポのバグを直して」は一回では無理だ。ファイルを読み、問題を分析し、パッチを作り、テストを回し、失敗したら再修正する。この全体フローを設計するのがオーケストレーションだ。

主要パターン

チェイニング — 最初の呼び出しの出力が次の呼び出しの入力になる直列構造。最もシンプルだが効果的。例:コード生成 → コードレビュー → 修正。各ステップで異なるプロンプトを使える。

ルーティング — 入力を分析して適切な処理経路に送る。「この質問はコード関連だからコーディングエージェントへ」「これはドキュメント関連だから検索エージェントへ」のような分岐。分類モデルがルーター役を果たす。

並列化 — 独立したタスクを同時実行。10ファイルの分析は順番にやるより並列の方が速い。fan-out → 処理 → fan-in構造。

エージェントループ — 目標達成まで反復し続ける。「テスト通過までコード修正」が典型例。whileループ内でモデルを呼び続ける構造。エージェンティックAIカテゴリのAgent Loop参照。

パイプライン — チェイニングの拡張。複数段階が決まった順序で実行され、各段階で異なるツールとモデルを使える。CI/CDと似た概念。

パターン選択基準

シンプルなQ&A → 単一呼び出しで十分。

品質が重要な生成タスク → チェイニング(生成 → 検証 → 修正)。

多様な入力タイプ → ルーティング。

独立した大量処理 → 並列化。

不確実な結果、反復改善が必要 → エージェントループ。

複雑な多段階処理 → パイプライン。

実際にはこれらのパターンを組み合わせて使う。Claude Codeはエージェントループ内でチェイニングと並列化を両方使っている。

動作フロー

1

チェイニング — Aの出力がBの入力になる直列構造(生成 → 検証 → 修正)

2

ルーティング — 入力を分類して適切な処理経路に分岐

3

並列化 — 独立したタスクを同時実行(fan-out → 処理 → fan-in)

4

エージェントループ — 目標達成まで反復(while + モデル呼び出し + ツール使用)

5

パイプライン — 決まった順序の多段階処理、各段階で異なるツール/モデルを使用

ユースケース

Claude Code — エージェントループ(反復)+ チェイニング(探索→パッチ→テスト)+ 並列化(サブエージェント) 顧客サポートシステム — ルーティング(質問分類)+ チェイニング(回答生成→トーン検証) ドキュメント処理パイプライン — OCR→構造化→分析→要約の固定順序パイプライン