AI・機械学習
中級

Few-shot プロンプティング(フューショットプロンプティング)

LLMに少数(2〜10個程度)の入出力例をプロンプト内で提示し、タスクのパターンを文脈内学習(In-Context Learning)させるプロンプト技法。Zero-shotより精度が高く、Fine-tuningより手軽。

0 回閲覧
0 いいね

Few-shot プロンプティングとは

Few-shot プロンプティングは、大規模言語モデル(LLM)に対してタスクの実行例を少数提示することで、モデルのパラメータを更新せずに所望の出力形式・品質を得るプロンプト設計技法です。2020年の GPT-3 論文「Language Models are Few-Shot Learners」で体系化され、現在の LLM 活用における基本技法として広く定着しています。

Zero-shot / One-shot / Few-shot の違い

手法提示例数精度適用場面
Zero-shot0個低〜中汎用的なタスク、指示が明確な場合
One-shot1個中フォーマット指定のみ必要な場合
Few-shot2〜10個高複雑な分類・変換・生成タスク
Many-shot10〜100個最高コンテキストウィンドウが大きいモデル

GPT-4o(128Kトークン)や Claude 3.5 Sonnet(200Kトークン)、Gemini 1.5 Pro(2Mトークン)のようにコンテキストウィンドウが拡大した現在では、Many-shot(数十〜数百例)も実用的になっています。

効果的な Few-shot 設計の原則

Few-shot プロンプティングの精度はショット(例示)の選び方に大きく依存します。以下の設計原則が研究で確認されています。

  • 多様性: 入力の種類やエッジケースをカバーする例を選ぶ。同質な例ばかりでは汎化性能が低下する
  • 順序効果: 例の並び順がモデルの出力に影響する。最後の例に引きずられやすいため、代表的な例を末尾に配置する
  • フォーマット一貫性: すべての例で入出力フォーマットを統一する。JSON出力なら全例をJSON形式にする
  • ラベルバランス: 分類タスクでは各ラベルの例数を均等にする。偏りがあるとモデルが多数派ラベルに偏向する
  • 関連性: タスクに近い例を選ぶ。動的に類似例を検索して挿入する Dynamic Few-shot が効果的

Dynamic Few-shot(動的例選択)

ユーザーの入力クエリに対して、ベクトル類似度検索で最も関連性の高い例をデータベースから動的に取得し、プロンプトに挿入する手法です。静的な固定例と比較して、未知の入力パターンに対する精度が大幅に向上します。

LangChain の SemanticSimilarityExampleSelector や LlamaIndex の FewShotPromptTemplate がこの手法を実装しており、本番アプリケーションで広く使われています。

コスト・レイテンシへの影響

Few-shot の例数が増えるほど入力トークン数が増加し、API コストとレイテンシが上昇します。GPT-4o の場合、入力は $2.50/1Mトークン・出力は $10.00/1Mトークン(2025年12月時点)であり、10例のFew-shotで平均500トークン増加するとリクエストあたり約$0.00125のコスト増になります。

精度とコストのトレードオフを評価し、最小の例数で目標精度を達成する例数を実験的に決定することが重要です。

FAQ

Q: Few-shot プロンプティングと Fine-tuning はどう使い分けますか?

A: Few-shot はデータ10件程度から即座に適用でき、タスク変更も容易です。Fine-tuning は数百〜数千件のデータが必要ですが、推論コストが低くレイテンシも短いため、高頻度・大量処理のタスクに向いています。まず Few-shot で検証し、品質とコストが見合わなければ Fine-tuning を検討するのが一般的なワークフローです。

Q: Few-shot の例数は何個が最適ですか?

A: タスクの複雑さとモデルの能力に依存しますが、一般的には3〜5個が出発点です。Google の研究では、例数を3→5に増やすと分類精度が平均8%向上し、5→10ではさらに3%向上するものの、10→20では改善が鈍化する傾向が報告されています。

Q: Few-shot で注意すべき落とし穴はありますか?

A: 最大の落とし穴は「例のバイアス」です。特定パターンの例ばかり提示すると、モデルがそのパターンに過学習します。また、例の中に誤りがあるとモデルがその誤りを学習してしまうため、例の品質管理が重要です。