フューショットプロンプト(Few-Shot Prompting)とは、大規模言語モデルに対して、指示文の中に少数の「入力と出力の具体例」を含めて提示するプロンプトエンジニアリング手法です。解かせたいタスクのパターンやフォーマットを事前に例示することで、追加のファインチューニングを行うことなく、生成される回答の精度や出力形式を劇的に向上させることができます。
フューショットプロンプトとは
フューショットプロンプトとは、大規模言語モデルに指示を出す際、タスクの期待される「入力と出力の具体例」を数個プロンプト内に含めることで、モデルにタスクのルールや出力形式を学習・模倣させるプロンプトエンジニアリングの基本手法です。
詳しく解説
大規模言語モデルは膨大なデータで事前学習されていますが、指示の書き方によって出力の質が大きく変わります。フューショットプロンプトは、モデルが持つ「コンテキスト内学習」能力を利用しています。ユーザーが「問いと答え」のペアをいくつか提示することで、モデルはパラメータを更新するファインチューニングを行うことなく、その文脈の中だけで動的にタスクを理解し、同様のパターンで回答を出力します。これにより、複雑な分類タスク、特定のフォーマットでの出力固定、独自の翻訳ルール適用などを容易に実現できるようになります。
具体例・使われ方
例えば、感情分析(ポジティブ/ネガティブ)を大規模言語モデルに行わせたい場合、以下のようにプロンプトを構成します。「入力: この商品は本当に素晴らしいです。 -> 出力: ポジティブ」「入力: 配送が遅くて残念でした。 -> 出力: ネガティブ」「入力: デザインは良いが、サイズが合いません。 -> 出力: 」このように数件の具体例を提示してから最後の入力を渡すことで、モデルは「出力: ネガティブ」や「出力: ニュートラル」といった指定した通りの短い形式で正確に回答しやすくなります。
似た用語との違い
関連する概念として「ゼロショットプロンプト」と「ファインチューニング」があります。ゼロショットプロンプトは、具体例を一切与えずに指示だけでタスクを実行させる手法です。タスクが単純な場合は有効ですが、複雑なルールや特定のフォーマット指定がある場合は精度が下がります。一方、ファインチューニングは、モデル自体のパラメータを数千〜数万の訓練データで直接書き換えて最適化する手法であり、フューショットプロンプトのように一時的な文脈内でのみ模倣させるアプローチとは根本的に異なります。
注意点
注意点として、具体例を多く含めるほどプロンプトの入力トークンが増加し、APIの利用料金が高くなったり、処理速度が低下したりする点が挙げられます。また、提示する具体例の品質や順序、偏りによって、モデルの回答が特定の出力に引きずられる「少数データへの過剰適合」が発生することがあります。そのため、例の選定と配置には注意が必要です。