
【生成AIプロンプト入門】Zero-ShotとFew-Shotの使い分け方
こんにちは、リテールアプリ共創部の戸田駿太です。
今回は生成 AI のテクニックで一番最初に学んでほしい「Zero-Shot」と「Few-Shot」について解説します。
Zero-Shot, Few-Shot プロンプティングとは
プロンプティング手法 | 説明 |
---|---|
Zero-Shot プロンプティング | AI に事前の例を示さず、出力をさせる方法 |
Few-Shot プロンプティング | 複数の例を示してから出力をさせる方法 |
この記事は Zero-Shot か Few-Shot を使い分けることができるようになることが目標です。
Zero-Shot の例
Zero-Shot は、例示なしで直接指示を出す方法です。モデルに事前の例を示さず、タスクを実行させます。
以下の文章の感情はポジティブですか、ネガティブですか?
「この映画は時間の無駄だった。二度と見たくない。」
Few-Shot の例
Few-Shot は、複数の例を示してから指示を出す方法です。モデルに 2 つ以上の例を示すことで、パターンを学習させます。複雑なタスクや特定の出力形式が必要な場合に特に有効です。
文章: 「このレストランの料理は素晴らしかった。また行きたい。」
感情: ポジティブ
文章: 「このホテルは最悪だった。部屋は汚く、スタッフも不親切。」
感情: ネガティブ
文章: 「このコンサートは一生の思い出になった。素晴らしい演奏だった。」
感情: ポジティブ
文章: 「この映画は時間の無駄だった。二度と見たくない。」
感情:
Few-Shot だと事前に例の文章を読んでいるので最後の文章の感情が想像しやすいですよね?
Few-Shot の特徴
- バランスの良い例示が重要
- 例えば感情分析では、ポジティブとネガティブの例をバランス良く示すと、AI がパターンを適切に学習できます
- 一貫した形式で示す
- 「質問:」「回答:」のような統一された形式で例を示すと、AI はパターンを理解しやすくなります
- 例の数は多いほど効果的
- 3 つ(3-Shot)、5 つ(5-Shot)、10 つ(10-Shot)と例を増やすと、AI の理解度が向上することが多いです
- 質より量より質と量のバランス
- 内容の質が低い例をたくさん示すよりも、少数でも質の高い例を示す方が効果的です
プロンプティングの選択基準
項目 | Zero-Shot | Few-Shot |
---|---|---|
メリット | ・ 簡潔に指示できる ・ トークンの節約をして、コストを抑えることができる ・ あえて指示しないことで知らない出力形式やアイデアを生み出すことができる |
・ パターン学習に効果的 ・ 複雑なタスクにも対応できる |
デメリット | ・ 期待する出力と異なる可能性がある ・ 複雑なタスクには不向き ・ モデルに依存しがち |
・ 例を作成するのに時間がかかる |
適している状況 | ・ 出力結果が予想しやすいタスク ・ 出力結果のフォーマットにこだわりがないタスク |
・ ある程度フォーマットや出力内容に指定があるタスク ・ 複雑なタスク |
実践例 1:料理レシピの作成
異なるプロンプティング手法で料理レシピを作成してみると、その違いが明確になります。
Zero-Shot でのレシピ作成
プロンプト:
和風パスタのレシピを教えてください。
結果:
# 和風パスタのレシピ
## 材料(2 人前)
- スパゲッティ:200g
- しょうゆ:大さじ 2
- みりん:大さじ 1
- 和風だし:小さじ 1
- オリーブオイル:大さじ 1
- ニンニク:1 片
- 刻みのり:適量
- 長ネギ:1/2 本
- 鶏肉:100g
## 作り方
1. 鍋にたっぷりの湯を沸かし、塩を入れてスパゲッティを表示時間通りにゆでる
2. フライパンにオリーブオイルとみじん切りにしたニンニクを入れて香りを出す
3. 細切りにした鶏肉を加えて炒める
4. 火が通ったら、しょうゆ、みりん、和風だしを加える
5. 茹で上がったパスタを湯切りして 3 に加え、全体に味がなじむように和える
6. 器に盛り、刻みのりと小口切りにした長ネギをトッピングする
例を示さないと AI は一般的なレシピ形式で作成してくれます。
シンプルなレシピが必要な場合には十分かもしれません。
Few-Shot でのレシピ作成
プロンプト:
和風パスタのレシピを教えてください。
このフォーマットを参考にしてください:
料理名: トマトとバジルのパスタ
調理時間: 20 分
難易度: 初級
カロリー: 約 450kcal/人
アレルギー: 小麦(パスタ)
ポイント: トマトの酸味とバジルの香りがマッチするシンプルな一品です
材料(2 人前):
- スパゲッティ: 200g
- オリーブオイル: 大さじ 2
- ニンニク: 2 片
- ミニトマト: 10 個
- 新鮮なバジルの葉: 10 枚
- 塩: 小さじ 1
- 黒コショウ: 適量
- パルメザンチーズ: 大さじ 2
手順:
1. たっぷりのお湯を沸かし、塩を加えてパスタを表示時間通りにゆでる
2. ミニトマトを半分に切り、ニンニクをみじん切りにする
3. フライパンにオリーブオイルとニンニクを入れて弱火で香りを出す
4. ミニトマトを加えて軽く炒め、つぶす
5. 茹であがったパスタを加え、和える
6. 塩、黒コショウで味を調える
7. 器に盛り、ちぎったバジルの葉とパルメザンチーズをふりかける
豆知識: パスタの茹で汁を少し残しておくと、ソースに加えるとトロミがつきパスタによく絡みます
結果:
料理名: きのこと醤油バターの和風パスタ
調理時間: 25 分
難易度: 初級
カロリー: 約 500kcal/人
アレルギー: 小麦(パスタ)、乳製品(バター)
ポイント: 醤油とバターの風味が絶妙にマッチする、日本人の舌に合う和風パスタです
材料(2 人前):
- スパゲッティ: 200g
- しめじ: 100g
- まいたけ: 100g
- えのき: 50g
- バター: 30g
- 醤油: 大さじ 1.5
- みりん: 大さじ 1
- 刻みのり: 適量
- 万能ねぎ: 2 本
- ニンニク: 1 片
- オリーブオイル: 大さじ 1
- 塩: 小さじ 1/2
- 黒コショウ: 適量
手順:
1. たっぷりのお湯を沸かし、塩を加えてパスタを表示時間より 1 分短くゆでる
2. きのこ類は石づきを取り、食べやすい大きさにほぐす
3. ニンニクはみじん切り、万能ねぎは小口切りにする
4. フライパンにオリーブオイルとニンニクを入れて弱火で香りを出す
5. きのこ類を加えて中火で水分が出るまで炒める
6. みりんを加えてアルコールを飛ばし、醤油を加える
7. 茹であがったパスタを加え、バターを溶かしながら全体を和える
8. 塩、黒コショウで味を調える
9. 器に盛り、刻みのりと万能ねぎを散らす
豆知識: きのこはあらかじめ炒めて水分を飛ばすことで、旨味が凝縮されます
レシピのフォーマットを指定することで、AI は詳細な情報を含むレシピを作成してくれます。
調理時間、難易度、カロリー、アレルギー情報など、より充実した内容になっています。
実践例 2:LINE のテストケース作成
Zero-Shot でのテストケース作成
プロンプト:
LINE でチャットができるかをテストするテストケースを作成してください。
出力の形式は md でお願いします
結果:
# LINE チャット機能のテストケース
## 1. テスト概要
LINE 上でのチャット機能が正常に動作するかを確認するためのテストケース。
## 3. テストケース
### 3.1 メッセージ送信テスト
**説明:** メッセージが正常に送信されるかを確認する
**ステップ:**
1. LINE を開く
2. 任意のテスト用アカウントにメッセージを送信する(例: 「こんにちは」)
3. 送信されたメッセージが表示されるか確認する
**期待結果:** メッセージが送信され、相手側の画面に表示される
テストケースの例を示さないと AI がランダムでいい感じのテストケースを作成してくれます。
簡単に作るだけのタスクであれば十分に思えます。
Few-Shot でのテストケース作成
プロンプト:
LINE でチャットができるかをテストするテストケースを作成してください。
このフォーマットを参考にして md で出力して
| 項番 | 大項目 | 中項目 | 小項目 | 条件 | 実行できる環境 | 確認手順 | 確認観点 |
| ---- | -------------- | ---------------------- | -------------- | ---------------------------------------------------------- | ------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------- |
| 1 | メッセージ送信 | テキストメッセージ送信 | 送信が成功する | インターネット接続があり、Slack アカウントが正常であること | Slack アプリ(デスクトップ/iOS/Android), Slack Web 版 | 1. Slack アプリまたは Web 版を開く。<br>2. 任意のチャンネルまたはダイレクトメッセージを選択する。<br>3. メッセージ入力欄にテスト用のテキストを入力する。<br>4. 送信ボタン(または Enter キー)を押下する。 | 送信されたメッセージが相手(またはチャンネル)に正しく表示される |
結果:
| 項番 | 大項目 | 中項目 | 小項目 | 条件 | 実行できる環境 | 確認手順 | 確認観点 |
| ---- | -------------- | ---------------------- | -------------- | --------------------------------------------------------- | ---------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------- |
| 1 | メッセージ送信 | テキストメッセージ送信 | 送信が成功する | インターネット接続があり、LINE アカウントが正常であること | LINE アプリ(デスクトップ/iOS/Android), LINE Web 版 | 1. LINE アプリまたは Web 版を開く。<br>2. 任意の友達またはグループチャットを選択する。<br>3. メッセージ入力欄にテスト用のテキストを入力する。<br>4. 送信ボタン(または Enter キー)を押下する。 | 送信されたメッセージが相手(またはグループ)に正しく表示される |
| 2 | メッセージ送信 | 画像メッセージ送信 | 送信が成功する | インターネット接続があり、LINE アカウントが正常であること | LINE アプリ(デスクトップ/iOS/Android), LINE Web 版 | 1. LINE アプリまたは Web 版を開く。<br>2. 任意の友達またはグループチャットを選択する。<br>3. メッセージ入力欄に画像をアップロードする。<br>4. 送信ボタンを押下する。 | 送信された画像が相手(またはグループ)に正しく表示される |
テストケースのフォーマットを指定しているので、AI がフォーマットに従ってテストケースを作成してくれます。
決まったフォーマットで出力することで他のサービスでも使い回すことがしやすいです。
まとめ
「Zero-Shot」と「Few-Shot」の違いを理解して、適切に選択することで、業務効率化ができるようになります。
特に今まで Zero-Shot しか使わなかった人は、適切に Few-Shot を使うように意識を変えることができると嬉しいです。