大規模言語モデル(LLM)は、一度に多くのことを求められると躓いてしまいます。50ページのPDFをチャットウィンドウに放り込み、構造化された分析、リスク評価、エグゼクティブ・サマリーを同時に要求してみてください。その結果は、内容が薄かったり、混乱していたり、あるいは完全に間違っていたりすることがほとんどです。より良いアプローチは、機械的なものです。作業を個別のステージに分割します。第1ステージの出力を直接第2ステージに投入し、といった具合に順次進めていくのです。Anthropicはこのパターンを「プロンプト・チェイニング(prompt chaining)」と呼び、Googleは「シーケンシャル・パイプライン(sequential pipeline)」と呼んでいます。どちらの名前も同じものを指しています。つまり、各ステーションが特定の変換を一つずつ処理する「組立ライン」のことです。
実践における具体的なイメージ
一つの巨大なプロンプトを作る代わりに、小さく焦点を絞った一連のステップを構築します。ベンダーのセキュリティ評価を処理するコンプライアンス・チームを想像してみてください。ステップ1では、スキャンされたPDFから生のテキストを抽出します。ステップ2では、暗号化規格やアクセス制御に関する記述をすべて特定します。ステップ3では、それらの結果を内部のチェックリストと照らし合わせます。ステップ4では、セキュリティ責任者向けの短いメモを作成します。あるエージェントがPDFをテキストに変換し、次のエージェントがそのテキストから特定のデータを抽出し、最後のエージェントがそのデータに基づいて要約を書きます。これらのステップに華やかさはなく、マルチタスクも行いません。各パーツが、一つの仕事を完璧にこなすのです。
これが、組立ラインの比喩が適切である理由です。工場では、一人の作業員が車を丸ごと組み立てることはありません。専門化することで品質を高く保ち、失敗のパターンを限定的なものにします。同じ論理が言語モデルにも当てはまります。JSON抽出のみを求めるプロンプトは、同じリクエストで意見やフォーマットまで求めるプロンプトよりも、ハルシネーションを起こす可能性が低くなります。
推測ではなく「ゲート」を構築する
いかなるチェーンにおいても、最も脆弱な点は「受け渡し(handoff)」です。モデルが丁寧な拒絶を返したり、JSONの代わりにMarkdownの塊を返したり、あるいは回答が途切れたりすることがあります。もしそのような「ゴミ」がステップ2に流れ込めば、チェーン全体が崩壊します。その解決策が「ゲート(gate)」です。
ゲートはモデルの呼び出しではありません。単純なコードです。ステップの間に実行される短いスクリプトを記述します。出力の長さをチェックして空でないことを確認したり、JSONスキーマのバリデーションを実行してキーがステップ3の期待するものと一致するか確認したりします。正規表現(regex)によるチェックを行えば、次のプロンプトを構築する前に、メールアドレスや日付フィールドが実際に存在するかどうかを検証できます。これにより、不適切な出力にコストを浪費する前にエラーを食い止めることができます。ゲートにかかる計算コストはマイクロ秒単位です。一方、下流でのLLM呼び出しの失敗は、トークン、レイテンシ、そしてあなたの精神的な消耗を招きます。
工場のフロアにある品質チェックポイントだと考えてください。部品の数を数えるのにAIは必要ありません。必要なのは定規です。
チェイニングすべき時、止めるべき時
プロンプト・チェイニングは、あらゆる問題に適しているわけではありません。作業が固定され、繰り返可能なステップである場合に活用してください。月次の財務報告、標準化された契約書レビュー、ログ分析パイプラインなどが良い例です。手順をチェックリストとして書けるのであれば、おそらくチェイニングが可能です。また、複雑な作業に対して高い精度が必要な場合にもチェイニングを用いるべきです。問題をステージに分割することで、モデルは一度に一つの論理レイヤーのみを処理することを強制されます。最後に、チェーンはモノリシックなプロンプトよりもデバッグが容易です。要約が間違っていれば、抽出プロセスを調査します。抽出が間違っていれば、ソーステキストを調査します。検証すべき中間成果物が存在するからです。
手順が事前に分からない場合は、プロンプト・チェイニングを避けてください。探索的なリサーチ、自由なブレインストーミング、あるいは調査タスクは、一直線には進みません。また、スピードが唯一の優先事項である場合も避けてください。チェーンは直列です。ステップ1が終わるまでステップ2を開始することはできません。もしステップ同士が互いに依存していないのであれば、代わりに並列で実行してください。同じ文書の3つの独立した翻訳をチェイニングする理由はありません。
硬直性の罠
このような構造化の代償は、硬直性(rigidity)です。固定されたチェーンは、新しい状況に適応できません。ベンダーが6つのフィールドを持つフォームを送り、スキーマバリデーションのゲートが5つを期待している場合、ラインは停止します。ユーザーがPDFの代わりにWord文書をアップロードした場合、最初のステップが壊れ、残りのチェーンは処理すべきものがなくなります。
さらに悪いことに、エラーは伝播します。初期段階で発生したミスは、チェーン全体に流れ込みます。もしPDF抽出器が財務数値からマイナス記号を落としてしまったら、それ以降のすべてのステップはその誤った数値を
