メインコンテンツへスキップ
PromptQuorum人のために設計。 AI向けに構造化。
ホーム/プロンプトエンジニアリング
Techniques

プロンプトチェーンの例とLangChainコード

·9分で読める 著 · PromptQuorum創設者 · オープンウェイト/オープンソースAIの発見エンジン

プロンプトチェーンとは、複雑なタスクを小さなプロンプトの連なりに分け、各モデル呼び出しが前のステップの出力を入力として受け取る手法です。タスクを固定のステップに分けられ、それぞれを確認・テスト・再利用したいときに使います。

重要なポイント

  • プロンプトチェーンはタスクをプロンプトの連なりに分け、各LLM呼び出しが前の呼び出しの出力を処理します。
  • 固定のサブタスクにきれいに分解できるタスク向けです。Anthropicは、各呼び出しを易しくすることでレイテンシと引き換えに精度を高める手法と説明しています。
  • 中間出力を確認したい、またはパイプライン構造を強制したいときは、明示的にチェーンにします。Claudeのプロンプトガイドは、明示的なチェーンの理由としてこの2点を挙げています。
  • チェーンはchain-of-thoughtとは別物です。chain-of-thoughtは1つのプロンプト内で推論を書き出すもので、チェーンは複数の別々の呼び出しです。
  • LangChainでは`init_chat_model`でモデルを読み込み、ステップごとに`invoke`を呼んで結果を次のプロンプトに渡します。分岐やループにはLangGraphを使います。
  • ステップを増やすごとにレイテンシとコストが増え、失敗箇所も増えます。その呼び出しが明らかに易しくなる場合だけ追加してください。
  • 2022年の20人のユーザー調査では、チェーン化によってタスク結果の質と、透明性・制御性の実感が向上しました(Wuら、CHI 2022)。

プロンプトチェーンは、詰め込みすぎた1つのプロンプトを、役割の絞られた短い呼び出しの連なりに変える手法です。このガイドでは定義、例、LangChainのコード例、チェーンにしない方がよい場面を説明します。

プロンプトチェーンの例とLangChainコード

プロンプトチェーンはタスクをつながったプロンプトに分ける

📍 In One Sentence

プロンプトチェーンは大きなタスクを小さなプロンプトに分け、各ステップの出力を次に渡すことで、各呼び出しの役割を確認しやすくします。

💬 In Plain Terms

巨大な1回の依頼ではなく組み立てラインのようなものです。各工程が1つの作業をして次に渡すので、問題が起きたときにどの工程が原因か分かります。

プロンプトチェーンは、タスクをステップの連なりに分解し、各LLM呼び出しが前の呼び出しの出力を処理する手法です。 すべてを一度に頼む代わりに、分析、計画、下書き、レビューのようなステップを順に実行し、各ステップの責務を1つに絞ります。

各ステップには決まった入力、決まった出力形式、1つの役割があります。ステップの間でコードが出力を検証・修正できるため、チェーンは結果を祈るチャットではなく、テストできるパイプラインとして動きます。

プロンプトチェーンの図:複雑なタスクを順番のLLM呼び出しに分け、各ステップの出力が次のステップに渡ります。
プロンプトチェーンの図:複雑なタスクを順番のLLM呼び出しに分け、各ステップの出力が次のステップに渡ります。

チェーンにすると各呼び出しを確認しやすくなる

タスクの層が多く、1つのプロンプトでは確実にこなせない場合に、チェーンが役立ちます。 理解、計画、生成、確認を分けると、各段階で制御できます。

  • 各呼び出しが易しいタスクになります。Anthropicはこれをレイテンシと引き換えに精度を高めることと説明しています。
  • 中間出力を確認・検証できます。Claudeのプロンプトガイドが明示的にチェーンにする理由として挙げる2点のうちの1つです。
  • ステップは再利用できます。「要約」「エンティティ抽出」「翻訳」などを複数のワークフローで共有できます。
  • ステップごとに別のモデルを割り当てられます。例えば抽出には小さく速いモデル、執筆にはより強力なモデルを使います。

プロンプトチェーンのよくある4つのパターン

ほとんどのチェーンは、いくつかの繰り返し現れる形を使っています。 タスクに合うものを選び、ステップを調整してください。

  • 分析 → 計画 → 下書き → 推敲:記事、レポート、戦略。
  • 抽出 → 変換 → 要約:生のドキュメント、ログ、サポートチケット。
  • 分類 → 振り分け → 生成:入力を仕分けし、専用のプロンプトへ送る。
  • 下書き → レビュー → 改善:文章、コード、デザインの反復的な自己修正。
代表的なプロンプトチェーンのパターン:順次型、分岐型、マップリデュース型のワークフロー。
代表的なプロンプトチェーンのパターン:順次型、分岐型、マップリデュース型のワークフロー。

3ステップのチェーンは長い1つのプロンプトより確認しやすい

長い1つのプロンプトと短いチェーンで同じ作業をすると、効果が分かりやすくなります。 課題は、生のリリースノートから顧客向けの変更履歴を作ることです。

単一のプロンプト

「このリリースノートを読んで、ユーザー向けの親しみやすい変更履歴を書いてください。」

プロンプトチェーン

ステップ1、抽出:「リリースノートからユーザーに見えるすべての変更を抽出し、機能領域ごとに箇条書きでまとめてください。」

ステップ2、分類:「各項目をバグ修正、改善、新機能のいずれかに分類し、重要な理由を1行で添えてください。」

ステップ3、執筆:「分類した一覧を使い、導入文と3〜6項目の短い変更履歴メールを書いてください。内部の詳細ではなくメリットに焦点を当ててください。」

各プロンプトが単純になり、単独でテストでき、他のワークフローでも再利用できます。

具体例:変更の抽出、分類、変更履歴の執筆を3つのLLMステップで行います。
具体例:変更の抽出、分類、変更履歴の執筆を3つのLLMステップで行います。

よくある作業でのプロンプトチェーンの例

これらの例は、詰め込みすぎたプロンプトをチェーンで置き換える場面を示します。 最初の2つはAnthropicによるパターンの説明に基づき、レビューのチェーンはClaudeのプロンプトガイドにある自己修正パターンです。

用途
チェーンのステップ
チェーンにする理由
マーケティング文文を書く → 翻訳翻訳前に文を確認できる
文書作成構成 → 確認 → 執筆下書き前に構成を検証できる
サポートの仕分け分類 → 振り分け → 返信カテゴリごとに専用プロンプト
コード・文章のレビュー下書き → レビュー → 改善執筆と批評を別の呼び出しにする
ログ分析抽出 → グループ化 → 要約各呼び出しを小さく保てる

PythonでのLangChainプロンプトチェーンの例

LangChainでプロンプトをチェーンにするには、`init_chat_model`でチャットモデルを読み込み、ステップごとに`invoke`を呼んで、各ステップのテキストを次のプロンプトに渡します。 次のコードは上の変更履歴チェーンを実行します。`langchain`、利用するプロバイダーの連携パッケージ、APIキーが設定済みであることが前提です。

高度な要件については、LangChainは決定的なワークフローとエージェント型のワークフローを組み合わせる低レベルのオーケストレーション基盤としてLangGraphを案内しています(たとえば分岐やループ)。エージェントは`create_agent`で作成します。

python
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
    タスクを、それぞれ1つの役割を持つ工程に分けます。 ブログ記事なら、構成、セクションの下書き、事実確認、整形です。
  2. 2
    各ステップの出力形式を決めます。 ステップ2がJSONを期待するなら、ステップ1にそのJSONを出力させます。
  3. 3
    つなぐ前に各ステップを単独でテストします。 ステップ1を実際の入力10件で実行し、直してからステップ2を作ります。
  4. 4
    ステップの間に確認を入れます。 コストの高いステップの後にプログラムによるチェックや人のレビューを入れると、誤りの連鎖を防げます。
  5. 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つの呼び出しの間で、翻訳前に文を確認できます。

出典と参考資料

これらのテクニックをローカルLLMまたは独自のAPIキーで適用しましょう — PromptQuorumはあらゆるバックエンドに対応します。

PromptQuorumを無料で試す →

← プロンプトエンジニアリングに戻る

MCP