Few-shot Prompting:例示でLLMの出力を制御する実践テクニック
入出力の例示をプロンプトに含めてLLMの応答精度を高めるFew-shot Promptingの原理、最適な例示数、実践パターンと限界を解説します。
Few-shot Prompting とは
Few-shot Prompting は、プロンプトに数個の入出力例(デモンストレーション)を含めることで、モデルにタスクのパターンを「文脈内学習(In-Context Learning)」させる手法です。Brown et al.(2020)のGPT-3論文で体系的に研究され、プロンプトエンジニアリングの中核技術として定着しました。
Zero-shotが「何をすべきか」だけを伝えるのに対し、Few-shotは「こういう入力に対してこういう出力を返してほしい」という具体的なパターンを示します。これにより、モデルは指示の意図をより正確に把握し、一貫性のある出力を生成できます。
具体的なプロンプト例
例1:カスタム分類タスク
以下のカスタマーレビューを「機能」「価格」「サポート」「UX」に分類してください。
レビュー: 「検索フィルターが使いにくくて、欲しい商品が見つからない」
カテゴリ: UX
レビュー: 「月額5,000円は競合と比べて割高だと思う」
カテゴリ: 価格
レビュー: 「問い合わせから3日経っても返信がない」
カテゴリ: サポート
レビュー: 「CSVエクスポート機能があれば、もっと便利になるのに」
カテゴリ:
出力例:機能
独自の分類体系を使う場合、ゼロショットではモデルが分類基準を推測しきれません。Few-shotで各カテゴリの具体例を示すことで、分類精度が大幅に向上します。
例2:特定フォーマットへの変換
自然言語の日程記述をiCalendar形式に変換してください。
入力: 来週の火曜日15時から1時間、田中さんとランチミーティング
出力:
BEGIN:VEVENT
DTSTART:20260421T150000
DTEND:20260421T160000
SUMMARY:ランチミーティング(田中さん)
END:VEVENT
入力: 毎週金曜の10時から30分、チーム朝会
出力:
BEGIN:VEVENT
DTSTART:20260417T100000
DTEND:20260417T103000
SUMMARY:チーム朝会
RRULE:FREQ=WEEKLY;BYDAY=FR
END:VEVENT
入力: 明後日の9時半から2時間、クライアントA社との提案プレゼン
出力:
フォーマット変換タスクでは、Few-shotの効果が特に顕著です。出力の構造・フィールド名・改行位置まで例示で制御できます。
例3:トーン・文体の制御
技術的な説明を、小学5年生にもわかる日本語に書き換えてください。
技術文: APIはアプリケーション間でデータを交換するためのインターフェースです。
やさしい文: APIは、アプリ同士がお互いに情報をやりとりするための「窓口」のようなものです。
技術文: 非同期処理により、I/O待ちの間も他のタスクを実行できます。
やさしい文: 「非同期処理」とは、何かの作業で待ち時間が発生しても、その間に別の作業を進められる仕組みのことです。
技術文: コンテナは、アプリケーションとその依存関係をパッケージ化した軽量な仮想環境です。
やさしい文:
文体やトーンの制御は、指示文だけでは伝えにくい「暗黙のルール」を含むため、Few-shotが特に有効です。
最適な例示数と選び方
何個の例示が最適か
研究と実践から導かれた目安は 3〜5個 です。
- 0→1個(ゼロショット→ワンショット)の精度向上が最も大きい。GPT-3のTriviaQAでは1例追加で+3.7ポイント改善
- 2〜5個で合計+3.2ポイント程度の追加改善
- 5個以降は1例あたりの改善がごくわずかになる(収穫逓減)
トークンコストは例示数に比例して増加しますが、精度向上は最初の数例で頭打ちになります。10例のプロンプトは2例の約5倍のコストがかかりますが、5倍の精度にはなりません。
例示選択のポイント
Min et al.(2022) の研究から、以下が判明しています。
- ラベル空間と入力テキストの分布が重要。ラベルの正確性よりも、「どんな種類の入力とラベルが存在するか」をモデルに伝えることが精度に寄与する
- フォーマットの一貫性が精度に大きく影響する。例示間でフォーマットがバラバラだと精度が低下する
- 多様性の確保が重要。全例示が同じカテゴリに偏ると、モデルがバイアスを持つ
動的な例示選択(Retrieval-Augmented Few-shot)
本番システムでは、入力ごとに最も関連性の高い例示を動的に選択する手法が効果的です。セマンティック類似度検索を使い、入力テキストに近い例示をプールから取得することで、固定例示よりも高い精度を達成できます。
いつ使うべきか
- ゼロショットで精度が不足するとき:まずゼロショットを試し、失敗パターンを特定してから、そのパターンをカバーする例示を追加する
- 独自のフォーマットや分類体系があるとき:モデルの事前知識にない分類基準やフォーマットを教える必要がある場合
- 出力の一貫性が重要なとき:APIレスポンスやデータ変換など、フォーマットのブレが許容されないタスク
- 文体・トーンの制御が必要なとき:「やさしい日本語」「ビジネス文書」など、指示文だけでは伝えにくいニュアンスの制御
注意点・限界
複雑な推論タスクには効果が薄い
Few-shotは「パターンマッチング」を強化する手法であり、多段階の論理的推論には限界があります。Wei et al.(2022)は、算術推論タスクにおいて例示を増やしても正答率が改善しないケースを報告しています。このような場合はChain-of-Thought Promptingが有効です。
例示の順序がバイアスを生む
例示の並び順が出力に影響を与えることが知られています(Recency Bias)。最後の例示に引きずられやすいため、例示の順序をランダム化するか、意識的にバランスを取る必要があります。
トークンコストの増加
各例示はトークンを消費します。長い入出力例を5個含めると、それだけで1000トークン以上になることもあります。コストと精度のバランスを常に意識しましょう。
2026年時点の位置づけ
最新のモデル(Claude 3.5 Sonnet、GPT-4oなど)はInstruction Followingが大幅に向上しており、以前はFew-shotが必須だったタスクの多くがゼロショットで対応可能になっています。一方で、ドメイン固有のフォーマット制御や微妙なニュアンスの制御では、Few-shotの価値は依然として高いです。「まずゼロショット、必要ならFew-shot」というアプローチが2026年のベストプラクティスです。