こんにちは!
誰かに何かを説明してもなかなか伝わらず、でも具体的な例を1つ見せたら「なるほど」と腑に落ちた経験はありませんか? AIに対しても、同じことが言えます。言語での指示よりも、具体的な例を見せたほうが正確に意図を汲み取らせることができるのです。 これが「フューショット・プロンプティング」の核心的なアイデアです。
説明の問題
プロンプトを書く際、多くの方は「何をしてほしいか」を言葉で詳しく説明しようとしますよね。
カジュアルだけどプロフェッショナルな商品説明を書いて。
特徴より利点を強調。短い文で。優しいコールトゥアクションで終わって。
指示を細かく羅列しても、AIが「カジュアルだけどプロフェッショナル」や「短い文」をどのように解釈するかは、必ずしもあなたの意図通りになるとは限りません。言葉は本質的に曖昧であり、特にトーン・文体・出力フォーマットを指定する際には、誤解が生じやすい傾向があります。
解決策:例を見せる
説明で伝えようとする代わりに、AIに「解答例」を見せます。
例1:
入力:[例の入力]
出力:[欲しい出力]
例2:
入力:[別の入力]
出力:[別の出力]
これをやって:
入力:[実際の入力]
出力:
AIは提示された例からパターンを学習し、新しい入力に対してその構造や傾向を適用します。細かな条件を羅列するより、具体的な例を提示する方が、AIに何を求めているかを明確に伝えられるのです。
実例:タグライン
特定のトーンや文体で、フィットネスアプリのキャッチコピー(タグライン)を作成させたいとします。
フューショットなし(説明のみ):
フィットネスアプリのタグラインを書いて。
元気に、能動的な動詞で、変身を暗示、8語以下で。
フューショットあり(例を提示):
こういうタグラインがいい:
商品:ランニングシューズ
タグライン:「より速く走る。軽さを感じる。もっと遠くへ。」
商品:瞑想アプリ
タグライン:「心を落ち着かせて。平和を見つけて。」
商品:コーヒーサブスク
タグライン:「より良い朝に目覚める。」
これも書いて:
商品:フィットネスアプリ
タグライン:
フューショット版では、スタイルに関する直接的な解説は省いています。示すことで、AIはパターン(短いフレーズ、能動的な動詞、暗に示されるベネフィットなど)を自ら抽出して出力に反映します。
Zero-Shot / One-Shot / Few-Shot
使用する例の数によって、それぞれ異なる呼び名が付けられます。
| タイプ | 例の数 | 使い時 |
|---|---|---|
| Zero-shot | 0 | AIが既に知ってるシンプルなタスク |
| One-shot | 1 | 軽いガイダンスで十分なタスク |
| Few-shot | 2〜5 | 明確なパターンが必要なタスク |
基本的には1つの例から始めて、出力が期待通りでなければ例を追加していくのがスムーズです。多くの場合、2〜3つの例で十分であり、5つを超えるとコンテキストが冗長化したりノイズの原因になったりすることが多く、あまり推奨されません。
フューショットが効くケース
分類タスク
テキストやデータを、事前に定義したカテゴリやラベルに振り分けるタスクです。
顧客メッセージを分類して:
メッセージ:「注文はいつ届きますか?」
カテゴリ:配送問い合わせ
メッセージ:「この製品、1週間で壊れました」
カテゴリ:品質不満
メッセージ:「これ青色ありますか?」
カテゴリ:商品質問
これを分類して:
メッセージ:「配送先住所を変更できますか?」
カテゴリ:
スタイルマッチング
記事のトーンや文体、キャラクター設定などを例で指定し、AIに同じ筆致で書いてもらう手法です。
フォーマルをカジュアルに変換して:
フォーマル:「申し訳ありませんが、ご申請は受け入れられませんでした。」
カジュアル:「残念だけど、今回はごめんね。」
フォーマル:「添付の資料をご参照ください。」
カジュアル:「リクエストしてた資料、これだよ!」
フォーマル:「ご問い合わせは受領され、48時間以内に対応いたします。」
カジュアル:
フォーマット変換
JSON、Markdownテーブル、特定のリスト形式など、出力の構造やフォーマットを厳密に制御したい場合に有効です。
会議ノートをアクションアイテムに変換して:
ノート:「Q4予算を議論。佐藤さんは財務から最終数字を取得する必要あり。
ローンチを11月に延期。山田さんはタイムラインを更新。」
アクションアイテム:
- [ ] 佐藤:財務からQ4の数字を取得
- [ ] 山田:11月ローンチのプロジェクトタイムラインを更新
ノート:「ウェブサイトリデザインレビュー。ホームページ承認。
Aboutページの新しいコピーが必要。デザインチームは次のスプリントを開始。」
アクションアイテム:
データ抽出
大量のテキストやドキュメントから、氏名、日付、金額など特定の要素だけを正確に抜き出すタスクです。
メッセージから連絡先情報を抽出して:
メッセージ:「こんにちは、アクメ株式会社の田中太郎です。
tanaka@acme.comまたは03-1234-5678で連絡できます。」
抽出:名前:田中太郎 | 会社:アクメ株式会社 | メール:tanaka@acme.com | 電話:03-1234-5678
メッセージ:「鈴木花子です、マーケティングディレクター。直通番号は
03-9876-5432です。メール hanako@bigco.jp」
抽出:名前:鈴木花子 | 会社:BigCo | メール:hanako@bigco.jp | 電話:03-9876-5432
メッセージ:「やあ、スタートアップXYZのマイクです。mike@startupxyz.comに連絡して」
抽出:
ベストプラクティス
1. 代表的な例を使う
例は、実際にAIに入力されるデータの範囲や分布をカバーしていることが望ましいです。感情分類タスクなどでは、ポジティブ・ネガティブだけでなく、ニュートラルな例も混在させておくと安定します。
2. 一貫性を保つ
例ごとのフォーマットや表記は統一しましょう。最初の例が箇条書きなら、それ以降も箇条書きで揃えます。フォーマットがバラバラだと、AIがパターンを認識しにくくなります。
3. 順序が重要
実際、モデルの出力には順序依存性が確認されており、最も典型的で明確な例を先頭に配置し、境界ケース(エッジケース)や難易度の高い例は後ろに配置するのが効果的です。
4. 量より質
3つの質の高い例は、量だけ揃えた10の平凡な例よりも遥かに効果的です。
5. 指示と組み合わせる
フューショット=指示なし、というわけではありません。両方を組み合わせて使用できます:
あなたはカスタマーサービス分類器。
メッセージを「請求」「技術」「一般」「緊急」に分類して。
例:
[例]
このメッセージを分類して:
[実際の入力]
指示がタスク全体のコンテキストを提供し、例が具体的な適用方法を示します。両方を併用するのが最も確実です。
フューショットを使わない時
- シンプルな事実の質問 — 「日本の首都は?」といった事実確認には不要です
- 多様性が必要な創作 — 例に縛られ、AIの創造性が制限される可能性があります
- 超長い出力 — 1例あたりの文字数が多すぎると、コンテキストウィンドウを圧迫します
- ゼロショットで十分な時 — すでに期待通りの出力が得られているなら、あえて複雑にする必要はありません
テンプレート
[オプション:タスクについての簡単な指示]
例1:
入力:[入力]
出力:[出力]
例2:
入力:[入力]
出力:[出力]
これを処理して:
入力:[実際の入力]
出力:
ラベル(入力/出力の表記)は、タスクの内容に合わせて適宜調整してください。分類タスクなら「テキスト」「カテゴリ」、文体変換なら「原文」「書き直し」のように、直感的に分かりやすい命名がおすすめです。
まとめ
フューショット・プロンプティングが効果的な理由は、言葉での説明よりも、具体的な例を見せたほうが正確に意図を汲み取らせることができるからです。
もし期待した出力が得られず困ったときは、プロンプトに指示を羅列するのではなく、例を1つ追加してみましょう。時には、1つの良い例が数十行の説明よりも強力に機能します。
関連記事: