ストーリー
Few-shotプロンプティングとは
Few-shotプロンプティングは、プロンプトに少数の例(examples)を含めることで、LLMに期待する出力パターンを示す手法だ。
# Few-shot(2例)
以下の例に従って、文章の感情を分析してください。
文章: 「このプロダクトは最高です!」
感情: ポジティブ
確信度: 95%
文章: 「使いにくいし、バグだらけ」
感情: ネガティブ
確信度: 90%
文章: 「新しい管理画面のリリースお疲れさまでした」
感情:
Zero-shot vs One-shot vs Few-shot
| 手法 | 例の数 | 特徴 |
|---|---|---|
| Zero-shot | 0 | 指示のみ。一般的なタスクに適する |
| One-shot | 1 | 最小限の例。フォーマット指定に有効 |
| Few-shot | 2-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分