複数のLLM呼び出しを直列に連結し、前段の出力を後段の入力として渡すことで、単一プロンプトでは困難な複雑なタスクを段階的に解決する手法。
プロンプトチェイニング(Prompt Chaining)とは、複数のLLM呼び出しを連鎖的に実行し、各ステップの出力を次のステップの入力として渡すことで、複雑なタスクを段階的に解決する手法です。「分割統治法」をLLMに適用した設計パターンであり、1回のプロンプトでは品質が出ない大規模タスクを、管理可能な小さなステップに分解します。
LLMは1回のプロンプトで処理するタスクが複雑になるほど、出力品質が低下する傾向があります。「記事を調査→構成を作成→本文を執筆→校正→フォーマット」のような多段階タスクを1プロンプトで指示すると、各ステップの品質が犠牲になります。
| アプローチ | 品質 | 制御性 | コスト | 適用場面 |
|---|---|---|---|---|
| 単一プロンプト | 中〜低 | 低 | 低 | 単純なタスク |
| プロンプトチェイニング | 高 | 高 | 中 | 複雑な多段階タスク |
| LLMエージェント | 高 | 中 | 高 | 動的判断が必要なタスク |
最もシンプルなパターンで、Step1 → Step2 → Step3 の順に直列実行します。各ステップは前段の出力のみを入力として受け取ります。
例:文書要約チェイン
前段の出力に基づいて後段のプロンプトを動的に選択するパターンです。分類 → 分類結果に応じた専用処理という流れで使用されます。
例:カスタマーサポートチェイン
独立した複数のプロンプトを並列実行し、結果を最終ステップで統合するパターンです。異なる観点からの分析を同時に行い、総合的な結論を導出します。
例:レビュー分析チェイン
出力が品質基準を満たすまで同じプロンプトを繰り返し実行するパターンです。自己改善ループとも呼ばれます。
例:コード生成チェイン
| フレームワーク | チェイン機能 | 特徴 |
|---|---|---|
| LangChain LCEL | chain1 | chain2 | chain3 | パイプ演算子で直感的に連結 |
| LlamaIndex | QueryPipeline | DAG(有向非巡回グラフ)ベース |
| Semantic Kernel | プランナー | 自動的にステップを計画 |
| Haystack | Pipeline | コンポーネントベースの組み立て |
| 自前実装 | 関数チェイン | 最大の柔軟性、ボイラープレート多い |
LangChain の LCEL(LangChain Expression Language)はパイプ演算子 | でチェインを記述でき、最も簡潔な実装を実現します。
各ステップの入出力フォーマットを明確に定義します。JSON Schema やPydantic モデルで出力構造を型付けし、後段が安全にパースできるようにします。構造化出力(Structured Output)の活用が効果的です。
チェインの途中でLLMがパース不能な出力を返した場合のフォールバック処理を設計します。リトライ(最大3回)、代替プロンプトへの切り替え、人間エスカレーションなどの戦略を組み込みます。
各ステップの入出力をログとして保存し、デバッグとパフォーマンス分析に活用します。チェインのどのステップで品質が劣化したかを特定するために不可欠です。
全ステップに最高性能モデル(GPT-4o、Claude Opus)を使う必要はありません。分類・抽出などの単純なステップには軽量モデル(GPT-4o-mini、Claude Haiku)を使い、最終出力生成のみ高性能モデルを使うティアードモデル戦略が有効です。
A1: チェイニングは事前に定義された固定のステップ順序で実行されますが、エージェントはLLM自身が次のアクションを動的に判断します。チェイニングは予測可能性と制御性が高く、エージェントは柔軟性が高い反面、挙動の予測が困難です。
A2: 3-5ステップが実用的な上限です。ステップ数が増えるとレイテンシ・コスト・エラー蓄積リスクが増大します。6ステップ以上必要な場合は、タスクの分解粒度を見直すか、一部のステップを統合することを検討してください。
A3: 並列実行可能なステップの特定が最も効果的です。独立したステップを並列チェインに変換すれば、ウォールタイムは最も遅いステップに律速されます。また、軽量モデルの活用とストリーミング出力の組み合わせで体感レイテンシを大幅に改善できます。