Prompt Chaining
プロンプトチェイニングは、タスクを一連のモデル呼び出しに分割し、前の出力をもとに各プロンプトを作成します。各ステップの間にコードでチェックを行います。
プロンプトチェーンでは、タスクを大規模言語モデル(LLM)または別のモデルへの一連の呼び出しに分割し、各プロンプトを前の呼び出しの出力から構築します。サポートメールを読み、注文番号を見つけ、注文を確認し、返信を作成する長いプロンプトを1つ使う代わりに、チェーンでは各ステップに個別の簡潔なプロンプトを実行します。通常のコードが結果を次のステップに渡し、その間に結果を確認します。各中間出力は個別に検査、テスト、修正できます。Tongshuang Wu、Michael Terry、Carrie Caiは、CHI 2022で発表したAI Chainsでこの手法を研究しました。20人を対象としたユーザー調査では、チェーンによって結果の品質が向上し、参加者が感じる透明性と制御性も高まりました。
プロンプトチェーンの仕組み#
チェーンは固定されたプログラムです。開発者がステップ、その順序、各ステップのプロンプトテンプレートを決定し、コードがステップ間でデータを移動します。多くの場合、解析可能であることを構造化出力スキーマが保証するJSON形式でデータを渡します。AnthropicのガイドBuilding Effective Agentsでは、プロンプトチェーンをワークフロー、つまりコードで経路が決まるシステムとして分類し、処理が順調に進んでいることを確認するため、ステップ間にゲートと呼ばれるプログラムによるチェックを設ける方法を説明しています。例として、マーケティング文を作成してから翻訳する手順や、アウトラインを作成して基準に照らして確認してから文書を執筆する手順が挙げられています。精度と引き換えにレイテンシが増加します。各呼び出しで正しい結果を得やすくなりますが、ステップごとに往復処理が追加されます。
エラーが積み重なるため、ゲートが重要です。最初のステップで誤って抽出された値が、3番目のステップでは確信を伴う事実として扱われる可能性があります。そのため、チェーンでは通常、次に渡す前に形式、範囲、必須フィールドを検証します。長いチェーンでは、上記のようなループを追加し、失敗メッセージをプロンプトに含めてステップを再試行したり、最初の呼び出しでリクエストにラベルを付け、コードが適切なプロンプトを選択するルーティングステップを追加したりします。LangChainなどのフレームワークはチェーンを組み立てるための部品を提供しますが、本番環境のチェーンの多くは、通常のPythonによる数回の関数呼び出しで構成されています。
実際のアプリケーション#
- コード生成: AlphaCodiumは、問題分析、テスト生成、解答の作成、テスト駆動の修正をチェーン化します。CodeContestsの検証問題におけるGPT-4のpass@5を、単一の直接プロンプトでの19%から44%に向上させました。
- ドキュメント処理: 請求書や契約書のパイプラインでは、1回の呼び出しでフィールドを抽出し、コードで検証した後、別の呼び出しで検証済みフィールドから要約やメールを生成します。
- 検索拡張生成(RAG): 最初の呼び出しでユーザーの質問を検索クエリに書き換え、コードでベクトルデータベースを検索し、2回目の呼び出しで取得した箇所に基づいて回答します。
- ナンバープレート認識: YOLOモデルがビデオフレーム内のナンバープレートを検出し、切り出した各プレートをGPT-4o miniに渡して文字をテキストとして読み取ります。そのため、言語モデルが処理するのはプレートだけです。
Ultralytics Platform Agentsでは、この種のチェーンをビジュアルキャンバス上で構築できます。YOLO → VLM Monitorテンプレートは画像に対してYOLO26を実行し、検出結果をGateブロックに渡します。Gateブロックは少なくとも1人が見つかった場合にのみ処理を続行し、上流の結果と画像をLLMブロック内のビジョン言語モデルに送信します。2つ目のリンクに対するプロンプトまでをPythonで記述すると、同じチェーンは次のようになります。
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
# Link 1: detect objects and list their class names
results = model("https://ultralytics.com/images/bus.jpg")
result = results[0]
names = [result.names[int(c)] for c in result.boxes.cls]
# Gate: call the language model only when a person is present
if "person" in names:
# Link 2: build the next prompt from link 1's output
prompt = f"Objects detected: {', '.join(names)}. In one sentence, describe what the people are doing."
print(prompt)出力されるプロンプトは物体検出の結果を次の呼び出しに引き継ぎ、人が写っていない画像は次の呼び出しに到達しません。
プロンプトチェーンと関連概念#
- Chain-of-thoughtプロンプティング: 1回のモデル呼び出しで推論ステップを書き出すよう求めます。プロンプトチェーンでは、コードを間に挟んで複数の呼び出しにステップを分散させます。
- AIエージェントとReActプロンプティング: モデルが次のアクションを選択し、いつ終了するかを判断します。チェーンでは、開発者が事前にステップを固定するため、テストしやすく、コストも予測しやすくなります。
- エージェント型ワークフロー: 複数のステップとツールで構成されるLLMシステムの広範な分類で、チェーンのほか、ルーティング、並列呼び出し、オーケストレーターとワーカーの構成も含みます。
- プロンプトエンジニアリング: 個々のプロンプトを作成する技術です。チェーン化は、プロンプトの数と、プロンプト間でのデータの流れを決める設計上の選択です。










