LESSON 30分

ストーリー

田中VPoE
「Zero-shotでは指示だけで出力を制御したね。でも、独自のフォーマットや判定基準を使いたい場合はどうする?」
あなた
「例を見せればいい、ということでしょうか?」
田中VPoE
「そう、それがFew-shotプロンプティングだ。人間も『こんな感じで』と例を見せられると、すぐに理解できるだろう?LLMも同じだ。」
あなた
「例を何個くらい用意すればいいんですか?」
田中VPoE
「良い質問だね。例の数、選び方、品質。この3つの観点を今日は学んでいこう。」

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

Few-shotプロンプティングは、プロンプトに少数の例(examples)を含めることで、LLMに期待する出力パターンを示す手法だ。

# Few-shot(2例)
以下の例に従って、文章の感情を分析してください。

文章: 「このプロダクトは最高です!」
感情: ポジティブ
確信度: 95%

文章: 「使いにくいし、バグだらけ」
感情: ネガティブ
確信度: 90%

文章: 「新しい管理画面のリリースお疲れさまでした」
感情:

Zero-shot vs One-shot vs Few-shot

手法例の数特徴
Zero-shot0指示のみ。一般的なタスクに適する
One-shot1最小限の例。フォーマット指定に有効
Few-shot2-5複数の例。複雑な判定基準の伝達に適する

例の選び方

Few-shotの効果は例の質に大きく依存する。

原則1: 多様性を持たせる

# 悪い例(似たケースばかり)
入力: 「素晴らしい!」 → ポジティブ
入力: 「最高!」 → ポジティブ
入力: 「すごい!」 → ポジティブ

# 良い例(多様なケース)
入力: 「素晴らしい!」 → ポジティブ
入力: 「ひどい品質だ」 → ネガティブ
入力: 「まあまあかな」 → ニュートラル

原則2: エッジケースを含める

# 良い例(境界ケースを含む)
入力: 「品質は悪くないが、価格が高すぎる」 → 混合(ポジティブ+ネガティブ)
入力: 「明日届く予定です」 → ニュートラル(事実の記述)

原則3: 実際のデータに近い例を使う

業務で扱うデータに近い例を使うほど、実用的な出力が得られる。NetShop社であれば、実際のカスタマーレビューを例として使う。


例の数と品質の関係

例の数の目安

例の数効果注意点
1-2例フォーマットの伝達に十分判定基準の伝達には不足する場合がある
3-5例大半のタスクに適切コストと品質のバランスが良い
6-10例複雑な判定基準の伝達に有効トークン消費が増大する
10例以上限定的な改善コンテキストウィンドウを圧迫

品質 > 量

例の数を増やすより、良質な例を厳選する方が効果的だ。

# 3例で十分な場合
タスク: 「コードの危険度を判定」

例1: SQL文字列連結 → 危険度: HIGH(SQLインジェクション)
例2: console.log残存 → 危険度: LOW(本番影響小)
例3: 未バリデーション入力 → 危険度: MEDIUM(入力値次第)

判定対象: eval(userInput)
危険度:

Few-shotの実践パターン

パターン1: 分類タスク

以下の例に従って、サポートチケットをカテゴリ分類してください。

チケット: 「ログインできません」
カテゴリ: 認証
優先度: HIGH

チケット: 「商品の色が写真と違う」
カテゴリ: 商品品質
優先度: MEDIUM

チケット: 「領収書の再発行をお願いします」
カテゴリ: 経理
優先度: LOW

チケット: 「決済エラーが発生して注文できない」
カテゴリ:
優先度:

パターン2: 変換タスク

以下の例に従って、自然言語をSQLクエリに変換してください。

質問: 「先月の売上合計は?」
SQL: SELECT SUM(amount) FROM orders WHERE created_at >= DATE_TRUNC('month', CURRENT_DATE - INTERVAL '1 month') AND created_at < DATE_TRUNC('month', CURRENT_DATE);

質問: 「在庫が10個以下の商品一覧」
SQL: SELECT product_name, stock FROM products WHERE stock <= 10 ORDER BY stock ASC;

質問: 「東京のユーザーで今月登録した人数」
SQL:

パターン3: 生成タスク

以下の例に従って、コミットメッセージを生成してください。

変更内容: ユーザー認証にJWTを追加
メッセージ: feat: JWT認証を実装し、セッション管理をトークンベースに移行

変更内容: ページネーションのオフバイワンエラーを修正
メッセージ: fix: ページネーションで最終ページが表示されない不具合を修正

変更内容: 不要なconsole.logを全ファイルから削除
メッセージ:

Few-shotの注意点

注意点対策
トークン消費が増える例を簡潔にし、必要最小限にする
例にバイアスがあると出力もバイアスする多様な例を均等に含める
例の順序が出力に影響する最も代表的な例を最後に配置する
コンテキストウィンドウの制約長い例は要約し、核心部分のみ残す

まとめ

項目ポイント
Few-shot少数の例で出力パターンをLLMに伝える手法
例の選び方多様性・エッジケース・実データに近い例
例の数3-5例がコストと品質のバランスが最適
品質重視例の数より質を優先する

チェックリスト

  • Few-shotプロンプティングの仕組みを説明できる
  • 良い例の3つの選択原則を理解した
  • 例の数とトークンコストのトレードオフを把握した
  • 分類・変換・生成の3パターンを実践できる

次のステップへ

次は「出力フォーマット制御」として、JSON/CSV/Markdown等の構造化出力を指定する方法を学ぼう。


推定読了時間: 30分