はじめに
前の 2 つのレッスンでは、構造化されたプロンプトを作成し、ペルソナを作成する方法を学習しました。このレッスンでは、プロンプト エンジニアリングの 2 つの 最も強力なテクニック、例を示す (少数のショット) と 出力のフォーマット を学びます。
黄金律: AI は、あなたが与えた例を 模倣します。良い例を提供する = 良い成果物を提供する。悪い例を与える = 悪い出力。
1. ゼロショット、ワンショット、フューショット — 違いは何ですか?
1.1 定義
| エンジニアリング | 例の数 | いつ使用するか |
|---|---|---|
| ゼロショット | 0 例 | 単純な作業、AI はすでに「知っている」 |
| ワンショット | 1 例 | フォーマット/スタイルの方向性が必要 |
| 数ショット | 2~5 例 | 一貫性の高い複雑なタスクが必要 |
| 多ショット | 10 個以上の例 | 非常に特殊なタスク、奇妙なパターン |
1.2 例による比較
問題: レビュー文の感情を分類する
ゼロショット:
Phân loại sentiment: "Sản phẩm rất tốt, giao hàng nhanh!"
→ Output: Positive (thường đúng — task phổ biến)
ワンショット:
Phân loại sentiment (Positive / Negative / Neutral):
Ví dụ: "Hàng đẹp, ship nhanh" → Positive
Giờ phân loại: "Sản phẩm tạm được nhưng giao chậm"
→ Output: Neutral ← chính xác hơn vì có ví dụ!
数ショット:
Phân loại sentiment (Positive / Negative / Neutral):
Ví dụ 1: "Hàng đẹp, ship nhanh" → Positive
Ví dụ 2: "Sản phẩm lỗi, không đổi được" → Negative
Ví dụ 3: "Bình thường, không có gì đặc biệt" → Neutral
Giờ phân loại: "Chất lượng ổn nhưng đóng gói sơ sài"
→ Output: Neutral ← rất chính xác!
1.3 なぜフューショットが効果的なのですか?
AI は例から パターン を学習します:
Ví dụ → AI nhận ra:
- Input format: "câu review" → Output format: "label"
- Logic: khen = Positive, chê = Negative, trung tính = Neutral
- Edge case: khen + chê = Neutral (không phải random)
ルールを説明する必要はありません。十分な例だけで十分です。
💡 演習 1.1: メールを 3 つのカテゴリに分類するための数回のプロンプト (3 つの例) を作成します。
Inquiry、Complaint、Thank You。 5 つの実際のメールでテストします。
2. 効果的な少数ショットの例を作成する
2.1 例を選択するためのルール
| ルール | ❌ 間違っています | ✅ はい |
|---|---|---|
| バラエティ | 同じタイプの 3 つの例 | さまざまなタイプの 3 つの例 (エッジ ケースをカバー) |
| 代表者 | 例は簡単すぎます | あいまいな例 |
| 一貫性 | 形式は例ごとに異なります。形式は各例と同じです。 | |
| 現実的 | 製作例 | 実際のデータからの例 |
2.2 例: テキストからの情報の抽出
❌ 数ショットが悪い (例: 簡単すぎる、一貫性のない形式):
Extract thông tin:
"Tôi là Minh, 25 tuổi" → Tên: Minh, Tuổi: 25
"An, sinh năm 2000" → An, 24 tuổi
"Hoa, 30" → Hoa
Input: "Nguyễn Văn Bình, 35 tuổi, ở Hà Nội"
✅ 少数ショットで良好 (多様性、一貫したフォーマット、特殊なケース):
Extract thông tin từ text. Trả về JSON.
Nếu thiếu thông tin, ghi null.
Input: "Nguyễn Minh, 25 tuổi, developer ở Sài Gòn"
Output: {"name": "Nguyễn Minh", "age": 25, "job": "developer", "city": "Sài Gòn"}
Input: "Chị Hoa, hiện đang làm giáo viên"
Output: {"name": "Hoa", "age": null, "job": "giáo viên", "city": null}
Input: "Intern 22 tuổi tên Đức, HN"
Output: {"name": "Đức", "age": 22, "job": "intern", "city": "Hà Nội"}
Input: "Nguyễn Văn Bình, 35 tuổi, ở Đà Nẵng, làm marketing"
2.3 少数ショットのテンプレート
[Task description — 1-2 câu]
[Ví dụ 1 — case thông thường]
Input: ...
Output: ...
[Ví dụ 2 — edge case / case khó]
Input: ...
Output: ...
[Ví dụ 3 — case ngược / ngoại lệ]
Input: ...
Output: ...
[Input thực tế]
Input: ...
💡 演習 2: 次の数ショットのプロンプトを作成します: ベトナム語の記事を 1 文に要約します。例を 3 つ挙げてください (短い記事 1 つ、長い記事 1 つ、多くのトピックを含む記事 1 つ)。 vnexpress.net の 3 つの実際の記事でテストしました。
3. 出力フォーマット — AI に正しいフォーマットで応答させる
3.1 なぜフォーマットが必要なのでしょうか?
AI 自動パイプライン (API 呼び出しコード) で使用する場合、出力は 解析可能である必要があります。 AIがフリーテキストを返すとコードが壊れてしまいます。
# ❌ Free-text → không parse được
response = "Theo tôi, giá khoảng 500 nghìn đến 1 triệu, tùy..."
# ✅ JSON → parse ngay
response = '{"min_price": 500000, "max_price": 1000000, "currency": "VND"}'
import json
data = json.loads(response) # Dùng ngay!
3.2 一般的な形式
JSON — 最も人気のあるもの:
Trả lời bằng JSON với schema sau:
{
"sentiment": "positive" | "negative" | "neutral",
"confidence": 0.0-1.0,
"key_phrases": ["phrase1", "phrase2"]
}
Chỉ trả JSON, không giải thích thêm.
マークダウン テーブル — ビジュアル:
Trả lời bằng bảng markdown:
| Sản phẩm | Giá (VNĐ) | Rating | Ghi chú |
|----------|-----------|--------|---------|
| ... | ... | ... | ... |
番号付きリスト — ステップバイステップ:
Trả lời theo format:
1. **[Bước]:** [mô tả ngắn]
- Chi tiết: [giải thích]
- Ví dụ: [code hoặc ví dụ]
2. **[Bước]:** ...
XML/タグ — クロードの場合:
Trả lời trong các tags:
<analysis>
<summary>Tóm tắt 1 câu</summary>
<pros>
<item>Ưu điểm 1</item>
<item>Ưu điểm 2</item>
</pros>
<cons>
<item>Nhược điểm 1</item>
</cons>
<recommendation>Đề xuất hành động</recommendation>
</analysis>
3.3 ヒントの形式は 100% 信頼性があります
| ヒント | 例 |
|---|---|
| 「X のみを支払う」と明確に述べてください | "JSON のみを返します。説明は追加されません" |
| スキーマ/テンプレートの場合 | 与えられた JSON 構造、AI フィル値 |
| 区切り文字を使用 | ---BEGIN--- ... ---END--- |
| 数ショット形式 | 正しい出力形式の例を 2 ~ 3 つ挙げてください。 |
| 指示を繰り返します | プロンプトの最後にフォーマットを繰り返します |
3.4 実践例: API レスポンス フォーマッタ
Bạn nhận đoạn text review sản phẩm. Trả về JSON:
Schema:
{
"product_name": "string",
"rating": 1-5,
"sentiment": "positive" | "negative" | "mixed",
"pros": ["string"],
"cons": ["string"],
"summary": "string (max 1 câu)"
}
Ví dụ:
Input: "iPhone 16 Pro rất đẹp, camera xuất sắc. Nhưng pin hơi yếu và giá đắt quá."
Output:
{
"product_name": "iPhone 16 Pro",
"rating": 4,
"sentiment": "mixed",
"pros": ["Thiết kế đẹp", "Camera xuất sắc"],
"cons": ["Pin yếu", "Giá đắt"],
"summary": "Sản phẩm tốt về camera và thiết kế nhưng pin và giá là điểm trừ."
}
Giờ phân tích review sau. CHỈ TRẢ JSON:
💡 演習 3: 採用段落から情報を抽出するための数ショット プロンプトを作成します。
{"company", "position", "salary_range", "requirements": [...], "location"}。本物のJD3名でテストしました。
4. 組み合わせ: 少数ショット + フォーマット = 「テンプレート パターン」
4.1 テンプレート パターン
AI が 常に固定テンプレートに従って回答する必要がある場合は、少数ショット + フォーマットを組み合わせます。
Bạn phân tích competitor. Mỗi competitor trả lời theo template:
---
## [Tên Competitor]
**Website:** [url]
**Giá:** [pricing range]
**Target:** [đối tượng khách hàng]
**Điểm mạnh:**
- [Điểm 1]
- [Điểm 2]
**Điểm yếu:**
- [Điểm 1]
**So với sản phẩm chúng ta:** [1 câu nhận xét]
---
Ví dụ:
---
## Notion
**Website:** notion.so
**Giá:** Free – $10/user/month
**Target:** Team nhỏ, startup, cá nhân
**Điểm mạnh:**
- All-in-one workspace linh hoạt
- Template marketplace phong phú
**Điểm yếu:**
- Chậm khi database lớn
**So với sản phẩm chúng ta:** Notion mạnh về flexibility nhưng
yếu về real-time collaboration — lợi thế của chúng ta.
---
Giờ phân tích: [tên competitor]
4.2 いつ何を使用するか?
| 状況 | エンジニアリング |
|---|---|
| 人気のタスク、AI はすでに知っている | ゼロショット |
| 正しい特定の形式が必要です | ゼロショット+フォーマット命令 |
| タスクには特別なロジックがあります | 数ショット (3 ~ 5 例) |
| フォーマットとロジックの両方が必要 | 少数ショット + テンプレート パターン |
| 非常に高い一貫性 | 多ショット (10 以上) + 厳密なフォーマット |
5. 実践: 4 つの実用的なプロンプト テンプレート
テンプレート 1: データ抽出ツール
Extract thông tin đặt hàng từ message khách hàng.
Trả về JSON. Nếu thiếu, ghi null.
Schema: {"name", "phone", "product", "quantity", "address", "note"}
Ví dụ 1:
Input: "Em ơi cho chị Lan đặt 2 hộp kem dưỡng, giao 123 Lê Lợi Q1, sdt 0901234567"
Output: {"name": "Lan", "phone": "0901234567", "product": "kem dưỡng", "quantity": 2, "address": "123 Lê Lợi Q1", "note": null}
Ví dụ 2:
Input: "Mình muốn mua son, ship nhanh giùm"
Output: {"name": null, "phone": null, "product": "son", "quantity": 1, "address": null, "note": "ship nhanh"}
テンプレート 2: コンテンツ リライター
Viết lại đoạn văn theo 3 tông giọng khác nhau.
Input: "Hệ thống gặp sự cố, dữ liệu có thể bị ảnh hưởng."
Formal: "Chúng tôi xin thông báo hệ thống đang gặp sự cố kỹ thuật.
Dữ liệu có thể chịu ảnh hưởng. Chúng tôi đang xử lý."
Casual: "Hệ thống đang bị lỗi rồi mọi người ơi 😅 Data có thể
bị ảnh hưởng. Team đang fix nè!"
Empathetic: "Chúng tôi hiểu sự bất tiện khi hệ thống gặp trục trặc.
Dữ liệu của bạn có thể bị ảnh hưởng, và chúng tôi đang
ưu tiên khắc phục ngay."
Giờ viết lại đoạn sau theo 3 tông:
Input: "[đoạn text của bạn]"
テンプレート 3: 会議議事録
Tóm tắt transcript meeting. Output format:
📋 **Meeting:** [topic]
📅 **Date:** [date] | ⏱ **Duration:** [time]
👥 **Participants:** [names]
🎯 **Decisions:**
1. [Decision] (Owner: [name])
📌 **Action Items:**
| Task | Owner | Deadline |
|------|-------|----------|
❓ **Open Questions:**
- [Question]
テンプレート 4: コード ドキュメンタ
Viết docstring cho function Python. Format Google style.
Example:
Input:
def calculate_tax(income, rate=0.1, deductions=None):
...
Output:
def calculate_tax(income, rate=0.1, deductions=None):
"""Calculate tax amount based on income, rate, and deductions.
Args:
income (float): Gross income in VND.
rate (float, optional): Tax rate as decimal. Defaults to 0.1.
deductions (list[float], optional): List of deduction amounts.
Returns:
float: Net tax amount after deductions.
Raises:
ValueError: If income is negative.
Example:
>>> calculate_tax(1000000, rate=0.1, deductions=[100000])
90000.0
"""
💡 演習 5: 上記の 2 つのテンプレートを選択し、独自のユースケースに適応させて、各テンプレートの 5 つの入力を真剣にテストします。記録正解率。
概要
| コンセプト | 覚えておいてください |
|---|---|
| ゼロショット | 0 例 — AI がすでに「知っている」タスクについて |
| 数ショット | 2 ~ 5 個の例 — 一貫性が必要なタスク用 |
| 良い例 | 多様 + 一貫したフォーマット + 特殊なケースがある |
| 出力形式 | JSON、Markdown、XML — 自動パイプライン用 |
| テンプレート パターン | 少ないショット + フォーマット = 非常に安定した出力 |
一般的な演習
- ✅ 小さな演習を完了する (1.1、2、3、5)
- プロンプト テンプレート ライブラリ: 5 つのお気に入りのプロンプト テンプレートを保存するファイルを作成します。各テンプレートには、ユースケース、例、予想される出力形式が記載されています。
- 精度ベンチマーク: タスクを 1 つ選択し、20 のテスト ケースを作成し、ゼロショット、3 ショット、5 ショットを比較 → 各タイプの精度 %。
- JSON 信頼性テスト: JSON 出力を求めるプロンプトを作成し、API を 10 回呼び出します。 → JSON は何回有効ですか?次の場合はプロンプトを改善してみてください < 100%.
次の記事: 思考連鎖 (CoT) — 回答する前に AI に「段階的に考える」ことを強制する技術で、複雑な問題の精度が大幅に向上します。