プロンプトチェーンはタスクをつながったプロンプトに分ける
📍 In One Sentence
プロンプトチェーンは大きなタスクを小さなプロンプトに分け、各ステップの出力を次に渡すことで、各呼び出しの役割を確認しやすくします。
💬 In Plain Terms
巨大な1回の依頼ではなく組み立てラインのようなものです。各工程が1つの作業をして次に渡すので、問題が起きたときにどの工程が原因か分かります。
プロンプトチェーンは、タスクをステップの連なりに分解し、各LLM呼び出しが前の呼び出しの出力を処理する手法です。 すべてを一度に頼む代わりに、分析、計画、下書き、レビューのようなステップを順に実行し、各ステップの責務を1つに絞ります。
各ステップには決まった入力、決まった出力形式、1つの役割があります。ステップの間でコードが出力を検証・修正できるため、チェーンは結果を祈るチャットではなく、テストできるパイプラインとして動きます。
チェーンにすると各呼び出しを確認しやすくなる
タスクの層が多く、1つのプロンプトでは確実にこなせない場合に、チェーンが役立ちます。 理解、計画、生成、確認を分けると、各段階で制御できます。
- 各呼び出しが易しいタスクになります。Anthropicはこれをレイテンシと引き換えに精度を高めることと説明しています。
- 中間出力を確認・検証できます。Claudeのプロンプトガイドが明示的にチェーンにする理由として挙げる2点のうちの1つです。
- ステップは再利用できます。「要約」「エンティティ抽出」「翻訳」などを複数のワークフローで共有できます。
- ステップごとに別のモデルを割り当てられます。例えば抽出には小さく速いモデル、執筆にはより強力なモデルを使います。
プロンプトチェーンのよくある4つのパターン
ほとんどのチェーンは、いくつかの繰り返し現れる形を使っています。 タスクに合うものを選び、ステップを調整してください。
- 分析 → 計画 → 下書き → 推敲:記事、レポート、戦略。
- 抽出 → 変換 → 要約:生のドキュメント、ログ、サポートチケット。
- 分類 → 振り分け → 生成:入力を仕分けし、専用のプロンプトへ送る。
- 下書き → レビュー → 改善:文章、コード、デザインの反復的な自己修正。
3ステップのチェーンは長い1つのプロンプトより確認しやすい
長い1つのプロンプトと短いチェーンで同じ作業をすると、効果が分かりやすくなります。 課題は、生のリリースノートから顧客向けの変更履歴を作ることです。
単一のプロンプト
「このリリースノートを読んで、ユーザー向けの親しみやすい変更履歴を書いてください。」
プロンプトチェーン
ステップ1、抽出:「リリースノートからユーザーに見えるすべての変更を抽出し、機能領域ごとに箇条書きでまとめてください。」
ステップ2、分類:「各項目をバグ修正、改善、新機能のいずれかに分類し、重要な理由を1行で添えてください。」
ステップ3、執筆:「分類した一覧を使い、導入文と3〜6項目の短い変更履歴メールを書いてください。内部の詳細ではなくメリットに焦点を当ててください。」
各プロンプトが単純になり、単独でテストでき、他のワークフローでも再利用できます。
よくある作業でのプロンプトチェーンの例
これらの例は、詰め込みすぎたプロンプトをチェーンで置き換える場面を示します。 最初の2つはAnthropicによるパターンの説明に基づき、レビューのチェーンはClaudeのプロンプトガイドにある自己修正パターンです。
用途 | チェーンのステップ | チェーンにする理由 |
|---|---|---|
| マーケティング文 | 文を書く → 翻訳 | 翻訳前に文を確認できる |
| 文書作成 | 構成 → 確認 → 執筆 | 下書き前に構成を検証できる |
| サポートの仕分け | 分類 → 振り分け → 返信 | カテゴリごとに専用プロンプト |
| コード・文章のレビュー | 下書き → レビュー → 改善 | 執筆と批評を別の呼び出しにする |
| ログ分析 | 抽出 → グループ化 → 要約 | 各呼び出しを小さく保てる |
PythonでのLangChainプロンプトチェーンの例
LangChainでプロンプトをチェーンにするには、`init_chat_model`でチャットモデルを読み込み、ステップごとに`invoke`を呼んで、各ステップのテキストを次のプロンプトに渡します。 次のコードは上の変更履歴チェーンを実行します。`langchain`、利用するプロバイダーの連携パッケージ、APIキーが設定済みであることが前提です。
高度な要件については、LangChainは決定的なワークフローとエージェント型のワークフローを組み合わせる低レベルのオーケストレーション基盤としてLangGraphを案内しています(たとえば分岐やループ)。エージェントは`create_agent`で作成します。
from langchain.chat_models import init_chat_model
model = init_chat_model("claude-sonnet-4-6") # any supported chat model
def run(prompt: str) -> str:
return model.invoke(prompt).text
notes = "..." # raw release notes
changes = run(f"List every user-visible change as bullets:\n{notes}")
labeled = run(f"Label each bullet as bug fix, improvement or new feature:\n{changes}")
email = run(f"Write a short user-facing changelog email from this list:\n{labeled}")
print(email)固定の工程にはチェーン、小さなタスクには単一プロンプト
タスクが、個別に失敗したり変化したりしうる固定の工程に分かれるなら、プロンプトチェーンを使います。 「もし〜なら」の条件だらけの非常に長いプロンプトは、チェーンが必要なサインであることが多いです。
- チェーンを使う場面:コンテンツ制作(調査 → 構成 → 下書き → 編集)、データ処理(取り込み → クレンジング → 抽出 → 要約)、意思決定支援(事実 → 選択肢 → トレードオフ → 提案)。
- 単一プロンプトを使う場面:中間結果を確認する必要がない、小さな単発のタスク。
- エージェントを検討する場面:手順を事前に固定できない自由度の高い課題(Anthropicは固定ワークフローとエージェントを区別しています)。
プロンプトチェーン、単一プロンプト、chain-of-thoughtの比較
3つの方法は、作業が行われる場所が異なります。 チェーンは作業を複数の呼び出しに分け、chain-of-thoughtは1つの回答の中に収めます。
観点 | 単一プロンプト | プロンプトチェーン | Chain-of-thought |
|---|---|---|---|
| モデル呼び出し | 1回 | ステップごとに1回 | 1回 |
| 推論が行われる場所 | 1つの回答内 | ステップ間(コード側) | 1つの回答内に記述 |
| 途中の確認 | できない | できる(各ステップ後) | テキストを読む場合のみ |
| コストとレイテンシ | 最小 | 大きい(ステップ数分) | やや大きい(出力が長い) |
| 向いている用途 | 単純なタスク | 固定の工程があるタスク | 論理的な単発の問い |
フレームワークはチェーンを自動化するが考え方は同じ
単純なAPI呼び出しで手作業でチェーンにすることも、オーケストレーション用のフレームワークを使うこともできます。 概念は同じで、フレームワークはトレース、リトライ、構造を加えます。
- LangChain:モデルには`init_chat_model`、エージェントには`create_agent`、低レベルのオーケストレーションにはLangGraph。
- DSPy(Khattabら):宣言的な言語モデル呼び出しを、自己改善するパイプラインへコンパイルします。
- Anthropic、Building effective agents:プロンプトチェーンなどのワークフローパターンと、使い分けの指針。
- Claudeのプロンプトガイド「Chain complex prompts」:明示的なチェーンは「is still useful when you need to inspect intermediate outputs or enforce a specific pipeline structure」とされています。
5ステップでプロンプトチェーンを作る方法
- 1タスクを、それぞれ1つの役割を持つ工程に分けます。 ブログ記事なら、構成、セクションの下書き、事実確認、整形です。
- 2各ステップの出力形式を決めます。 ステップ2がJSONを期待するなら、ステップ1にそのJSONを出力させます。
- 3つなぐ前に各ステップを単独でテストします。 ステップ1を実際の入力10件で実行し、直してからステップ2を作ります。
- 4ステップの間に確認を入れます。 コストの高いステップの後にプログラムによるチェックや人のレビューを入れると、誤りの連鎖を防げます。
- 5中間出力を記録して改善を繰り返します。 結果が誤っているとき、ログからどのステップを直すべきか分かります。
避けたいプロンプトチェーンの4つの失敗
❌ ステップが多すぎる
Why it hurts: ステップごとにレイテンシが増え、モデルが誤る機会も増えます。
Fix: 各呼び出しが単純になる最小限のステップから始め、結果を変えないステップは統合します。
❌ 受け渡し形式が曖昧
Why it hurts: ステップ2は、ステップ1の「アイデアの一覧」を当てにできません。
Fix: JSONのキーなど正確な形式を指定し、出力例を示します。
❌ ステップ間の確認がない
Why it hurts: 悪い構成は悪い下書きになり、さらに悪い最終文になります。
Fix: 誤りのコストが高いステップの出力は検証またはレビューします。
❌ チェーン全体だけをテストする
Why it hurts: 最終出力が誤っていても、どのステップが失敗したか分かりません。
Fix: まず各ステップを単独でテストし、その後チェーン全体を通しでテストします。
誤りはステップをまたいで積み重なる
各ステップは、モデルが誤りうる地点がもう1つ増えることを意味します。 実測ではなく説明のための計算ですが、5つのステップが各95%正しく、誤りが独立なら、チェーン全体が正しい確率は約77%です(0.95の5乗)。
そのため、ステップを増やすより、短いチェーン、ステップごとのテスト、ステップ間の確認が重要です。
PromptQuorumでチェーンの1ステップをモデル間で比較する
PromptQuorumは1つのプロンプトを複数のモデルに送り、回答を並べて表示します。 チェーンでは、1つのステップを複数のモデルで実行し、どれが最もうまくこなすかを確認してから、そのステップのモデルを決められます。
よくある質問
プロンプトチェーンとは何ですか?
プロンプトチェーンは、タスクをステップの連なりに分解し、各LLM呼び出しが前の呼び出しの出力を処理する手法です。各ステップの役割は限定されており、ステップの間で結果を確認・修正できます。
プロンプトチェーンは何から成りますか?
大きなタスクを、つながった小さなプロンプトに分けることから成ります。最初のプロンプトが決めた形式で出力を作り、その出力が2番目のプロンプトの一部になり、最後のステップで必要な結果が得られるまで続きます。
プロンプトチェーンとchain-of-thoughtの違いは何ですか?
chain-of-thoughtは、1つのプロンプトと1つの回答の中でモデルに推論を書き出させます。プロンプトチェーンは複数の別々の呼び出しを使い、コードが結果を受け渡します。両者は併用でき、チェーンの1ステップの中でchain-of-thoughtを使えます。
LangChainでプロンプトチェーンを作るには?
`init_chat_model`でモデルを読み込み、最初のプロンプトで`invoke`を呼び、応答のテキストを読み取って2番目のプロンプトに挿入し、繰り返します。高度な要件については、LangChainは決定的なワークフローとエージェント型のワークフローを組み合わせる低レベルのオーケストレーション基盤としてLangGraphを案内しています(たとえば分岐やループ)。
プロンプトチェーンを使わない方がよいのはいつですか?
1つのプロンプトで済む小さな単発のタスクや、中間結果を確認する必要がない場合は不要です。手順を事前に固定できない自由度の高い課題では、Anthropicは固定ワークフローよりエージェントを提案しています。
プロンプトチェーンは何ステップが適切ですか?
決まった数はありません。各呼び出しが単純になる最小限のステップを使ってください。ステップごとにレイテンシとコストが増え、誤りの機会も増えるためです。外しても出力が変わらないステップは統合します。
プロンプトチェーンはファインチューニングと同じですか?
違います。チェーンは複数のプロンプトを順に使い、モデルの呼び出し方を変えます。ファインチューニングは例で学習させてモデル自体を変えます。併用もでき、プロンプトエンジニアリングとファインチューニングの比較で使い分けを説明しています。
プロンプトチェーンの簡単な例は?
Anthropicの例です。1回目の呼び出しでマーケティング文を生成し、2回目の呼び出しで別の言語に翻訳します。2つの呼び出しの間で、翻訳前に文を確認できます。
出典と参考資料
- Anthropic「Building effective agents」 — プロンプトチェーンの定義、使いどころ、例。
- Claudeのプロンプトガイド「Chain complex prompts」 — 明示的なチェーンが有効な場合と、下書き・レビュー・改善のパターン。
- Wu、Terry、Cai(2022)「AI Chains: Transparent and Controllable Human-AI Interaction by Chaining Large Language Model Prompts」CHI 2022、arXiv:2110.01691 — チェーン化に関する20人のユーザー調査。
- LangChainドキュメント — `init_chat_model`、`create_agent`、LangGraph。
- Khattabら(2023)「DSPy: Compiling Declarative Language Model Calls into Self-Improving Pipelines」arXiv:2310.03714 — プログラムによるプロンプトパイプライン。
