目次
「同じことを聞いているのに、言い方を変えると全然違う答えが返ってくる」——LLMを使い込んでいると、この体験は避けられない。
プロンプトエンジニアリングとは、この「言い方の工夫」を体系化したものだ。しかし「なぜ言い方で結果が変わるのか」という問いに答えられる人は多くない。その答えは、LLMの確率的生成という仕組みの中にある。
プロンプトが確率分布を変える
LLMの出力は確率分布からのサンプリングだ。モデルは「与えられた入力の後に続くトークンの確率分布」を計算し、その分布から次のトークンを選ぶ。
プロンプトが変わると、この確率分布そのものが変わる。
数学的に言えば、これは「条件付き確率」の問題だ。P(次のトークン | プロンプト) の「プロンプト」部分が変化すれば、結果の確率分布が変化する。これは自明だが、その影響の大きさは直感に反するほど大きい場合がある。
たとえば「Xを教えて」という質問と「あなたはXの専門家です。Xについて教えて」という質問では、コンテキストとして提供される情報が異なる。後者は「専門家が回答する」というパターンに近い文脈を作り出し、訓練データの中でそのパターンに一致する「専門的な回答」が高確率で続くよう確率分布を変えている。
Few-shotが有効な理由——文脈条件付け
Few-shotとは、質問とともに「こういう形式で答えてほしい」という例(デモンストレーション)を示す手法だ。
なぜこれが有効なのか。LLMは訓練データから「質問と回答のパターン」を無数に学習している。Few-shotの例を提示することで、「今まさにこのパターンの文脈にいる」という強力な条件付けが行われる。
例えば、感情分析の例を示す場合を考えよう。
「この映画は面白かった」→ ポジティブ
「つまらなかった」→ ネガティブ
「最高の一日だった」→
この形式を示すことで、LLMは「このパターンはラベリングタスクである」という文脈を強く条件付けられる。次に来るべきトークンとして「ポジティブ」が高確率になる。
これはLLMが「タスクを理解した」わけではなく、「最も自然にこのパターンを継続するトークンは何か」という計算の結果だ。しかし結果的に、正しい出力が得られる。
ロールプレイ・Chain-of-Thought・構造化の効果
プロンプトエンジニアリングのテクニックは多数あるが、それぞれが確率分布を変える機構は理解しておく価値がある。
**ロールプレイ(役割設定)**は「あなたはXの専門家です」という設定だ。訓練データには「専門家として」という文脈の後に続く、専門的な回答のパターンが大量に存在する。このシグナルを与えることで、専門的な語彙・論理構成・詳細度を持つ出力が確率的に選ばれやすくなる。
**Chain-of-Thought(段階的思考)**は「ステップバイステップで考えてください」という指示だ。これには二重の効果がある。まず、中間思考ステップのトークン列が生成されることで、次のステップの計算の「足場」が作られる。算数の問題でいえば、途中計算を書き出すことで最終答えに到達しやすくなる。もう一つは、「推論の手順を示す」という訓練データのパターンを参照するためだ。
XML・Markdown等の構造化は、入力の構造を明確にする手法だ。<instruction>, <context>, <question> のようにタグで区切ることで、各部分の役割が文脈として明確になる。訓練データにこうした構造化された文書が含まれており、その構造のパターンを参照することで出力の整合性が上がる。
「プロンプトを書いた人の意図」は伝わらない
プロンプトエンジニアリングの限界として、重要な点がある。LLMはプロンプトを「理解」しているのではなく、「確率的に継続」しているだけだ。
人間がプロンプトを書くとき、その背後には「何を達成したいか」という意図がある。しかしLLMには、その意図を「理解する」能力がない。LLMは「このトークン列の後に来るべき最もそれらしいトークン列は何か」を計算するだけだ。
これはプロンプトが曖昧な場合に顕著に現れる。人間なら「あ、これはこういう意味で言っているのだな」と文脈から補えるが、LLMは複数の解釈が可能なとき、その中の一つを確率的に選ぶ。それが意図した解釈とは限らない。
したがって良いプロンプトとは、「LLMの確率的生成が意図した出力を生成しやすい確率分布を作り出す入力」だ。意図を込めるのではなく、確率分布を設計する。この認識の転換がプロンプトエンジニアリングの本質だ。
汎用的な原則
具体的なテクニックを覚えるより、原則を理解する方が応用が利く。
明確さ:曖昧な言葉は確率分布を広げ、予測しにくい出力を生む。具体的な言葉と明確な指示は、分布を絞る。
文脈の豊富さ:より多くの関連する文脈を提供するほど、出力の方向性が絞られる。
形式の明示:「箇条書きで」「3点以内で」「○○の観点から」などの制約は、出力形式の確率分布を制御する。
例示:Few-shotの例は最も強力な条件付けの一つだ。理想の出力形式の例を見せることで、そのパターンが高確率で参照される。
まとめ
プロンプトエンジニアリングの本質は「確率分布の設計」だ。
LLMは入力(プロンプト)を条件として「次のトークンの確率分布」を計算する。プロンプトの変化は条件の変化であり、それは確率分布の変化だ。Few-shotが有効なのも、ロールプレイが効くのも、構造化が精度を上げるのも、すべてこの観点から説明できる。
「上手い言い方があれば魔法のように答えが変わる」という体験は誇張ではない。それはLLMが確率的な存在であることの直接的な証明だ。
免責事項 — 掲載情報は執筆時点のものです。料金・機能は変更される場合があります。最新情報は各公式サイトをご確認ください。