Danh sách bài viết

Bài 25: Zero-shot prompting

Zero-shot prompting là cách yêu cầu LLM thực hiện một task chỉ bằng mô tả task + input, KHÔNG kèm bất kỳ example (demonstration) nào. Trước GPT-3, hướng tiếp cận chuẩn cho NLP là fine-tune model riêng cho từng task. Từ GPT-3 (Brown et al., 2020) trở đi, kết hợp với instruction tuning (FLAN, T5, InstructGPT) và RLHF, LLM hiện đại đủ khả năng giải nhiều task ngay từ lần prompt đầu tiên mà không cần training data. Bài này định nghĩa zero-shot, giải thích vì sao nó work (pretraining quy mô lớn + instruction tuning + RLHF + emergent capability theo scale), điểm qua lịch sử, các task phổ biến (sentiment, translation, summarization, classification, extraction, generation), benchmark MMLU / BBH / HumanEval / GSM8K, biến thể Zero-shot CoT (Kojima et al., 2022) với câu thần chú "Let's think step by step", so sánh với supervised classifier truyền thống, pitfall hay gặp, cách test chất lượng zero-shot và tín hiệu nâng cấp lên few-shot. Code Python minh hoạ với OpenAI và Anthropic API.

25/05/2026
12 phút đọc
2 lượt xem
1

Mục tiêu bài học

Sau bài học, bạn sẽ:

  • Định nghĩa được zero-shot prompting và phân biệt với few-shot (Bài 26), Chain-of-Thought (Bài 27).
  • Giải thích 4 yếu tố làm zero-shot khả thi: pretraining quy mô, instruction tuning, RLHF, emergent capability theo scale.
  • Nhớ mốc lịch sử quan trọng: GPT-3 paper (2020), InstructGPT (2022), Zero-shot CoT (Kojima 2022), ChatGPT.
  • Biết 6 nhóm task hay áp dụng zero-shot: sentiment, translation, summarization, classification, extraction, generation.
  • Áp dụng được mẹo Zero-shot CoT bằng câu "Let's think step by step" cho bài toán reasoning.
  • Đọc được benchmark MMLU, BBH, HumanEval, GSM8K và biết chúng đo điều gì.
  • Có quy trình test chất lượng zero-shot và quyết định khi nào nâng cấp lên few-shot.
2

Zero-shot là gì

Zero-shot prompting là kỹ thuật yêu cầu LLM thực hiện một task chỉ dựa trên:

  • Task description: mô tả ngắn gọn việc cần làm (vd "phân loại sentiment", "dịch sang English").
  • Input: dữ liệu cụ thể cần xử lý.

Không có bất kỳ demonstration (ví dụ mẫu input → output) nào kèm theo. Số "shot" = số ví dụ trong prompt = 0, từ đây có tên zero-shot. Mô hình phải dựa hoàn toàn vào kiến thức đã học trong giai đoạn pretraining + instruction tuning để giải task.

Đối lập của zero-shot là:

  • One-shot: kèm 1 ví dụ.
  • Few-shot: kèm vài ví dụ (thường 2-5, đôi khi đến 20+). Bài 26 sẽ deep-dive.
3

Ví dụ tối giản

Một prompt zero-shot điển hình cho task phân loại sentiment:

Phân loại review sau thành một trong: positive, negative, neutral.

Review: "Sản phẩm tệ, không recommend."
Sentiment:

Không có ví dụ "Review: ... → Sentiment: ..." nào trước đó. LLM phải hiểu nhãn nào ứng với review nào hoàn toàn từ kiến thức nền. Output mong đợi: negative.

Trên GPT-4o, Claude Opus 4, Llama 3.1 70B, dạng prompt này gần như luôn cho đúng. Trên SLM 1-3B chưa instruction-tune, có thể fail.

4

Vì sao zero-shot work

Bốn yếu tố chính khiến LLM hiện đại làm được zero-shot ở nhiều task:

  • Massive pretraining: model train trên hàng nghìn tỷ token gồm sách, web, code, document — trong đó vô tình chứa rất nhiều cặp task + giải pháp (vd review + đánh giá, văn bản + tóm tắt, bài toán + lời giải).
  • Instruction tuning: fine-tune supervised trên dataset dạng (instruction, input, output). Hai paper khai sinh: FLAN (Wei et al., arXiv:2109.01652, 2021) và T0 (Sanh et al., arXiv:2110.08207, 2021). Sau bước này, model biết "khi thấy mô tả task, hãy bám theo mô tả".
  • RLHF (Reinforcement Learning from Human Feedback): align output với human preference. InstructGPT (Ouyang et al., arXiv:2203.02155, 2022) là cột mốc — chứng minh model 1.3B sau RLHF được người dùng thích hơn GPT-3 175B chưa RLHF. ChatGPT (11/2022), GPT-4, Claude, Llama Instruct đều áp dụng.
  • Emergent capability theo scale: nhiều task chỉ "bật" khi model đủ lớn (Wei et al., "Emergent Abilities of Large Language Models", arXiv:2206.07682, 2022). Ngưỡng quan sát được rơi đâu đó quanh 10B-100B param tuỳ task.

Hệ quả: với task phổ biến trong pretraining (sentiment, paraphrase, translation, summarization), zero-shot đã đủ. Với task niche hoặc format hiếm gặp, cần hỗ trợ thêm (few-shot, CoT, fine-tune).

5

Lịch sử ngắn

  • Pre-2020: zero-shot kém. Chuẩn công nghiệp là fine-tune một BERT / RoBERTa cho từng task riêng.
  • 2020 — GPT-3 (Brown et al., "Language Models are Few-Shot Learners", arXiv:2005.14165): paper đo zero-shot, one-shot, few-shot trên hàng chục task. Zero-shot accuracy của GPT-3 175B vượt SOTA fine-tuned ở một số task — bằng chứng đầu tiên rằng prompting có thể thay fine-tune.
  • 2021 — FLAN, T0: chứng minh instruction tuning cải thiện zero-shot rõ rệt trên unseen task.
  • 2022 — InstructGPT, Zero-shot CoT: RLHF + thủ thuật "Let's think step by step" (Kojima et al., arXiv:2205.11916) nâng zero-shot reasoning lên mức gần few-shot CoT mà không cần ví dụ.
  • 11/2022 — ChatGPT: đưa zero-shot vào tay người dùng phổ thông.
  • 2023-2026: GPT-4, Claude 3 / 4, Llama 3, Gemini 2 / 3 đều instruction-tuned + RLHF; zero-shot là chế độ mặc định người dùng tương tác.
6

Khi nào zero-shot đủ tốt

  • Task phổ biến: sentiment, summarization, translation, paraphrase, classification topic thông dụng.
  • Có nhiều data tương tự trong corpus pretraining (vd review e-commerce, post mạng xã hội, bài báo).
  • Output format đơn giản, well-defined: một nhãn, một câu, một đoạn ngắn.
  • Model đủ capable: GPT-4o, Claude Opus 4, Claude Sonnet 4.5 / 4.7, Llama 3.1 70B / 405B, Gemini 2.5.
  • Không có ràng buộc khắt khe về consistency (1-2% sai có thể chấp nhận).

Với những điều kiện này, zero-shot thường đạt 80-95% accuracy, đủ cho prototype và nhiều ứng dụng production.

7

Khi nào zero-shot không đủ

  • Task niche / domain-specific: phân loại tài liệu pháp lý nội bộ, ICD-10 code y tế, taxonomy riêng của công ty.
  • Output format phức tạp: JSON nhiều field lồng nhau, có ràng buộc cross-field.
  • Cần consistency cao: tỉ lệ sai dù chỉ 1-2% cũng không chấp nhận (vd ra quyết định tự động).
  • Nhiều edge case: input bất thường, mixed language, ironic / sarcastic.
  • Định nghĩa nhãn mới mà LLM chưa từng thấy.

Đường nâng cấp khi zero-shot không đủ:

  • Few-shot prompting (Bài 26): thêm 2-5 ví dụ.
  • Chain-of-Thought (Bài 27): yêu cầu reasoning từng bước.
  • Structured output (Bài 29): khoá format bằng JSON schema.
  • Fine-tuning (Bài 47-52): train trên dataset riêng nếu các cách trên không kham nổi.
8

Pattern chuẩn

Một prompt zero-shot tốt thường có 3 phần:

[Task description]
[Output format requirement (tuỳ chọn)]

[Input]

Ví dụ áp dụng:

Phân loại review sau thành một trong các nhãn: positive, negative, neutral.
Chỉ trả về đúng một từ, viết thường, không thêm dấu câu.

Review: "Giao hàng nhanh nhưng đóng gói cẩu thả, hộp móp một góc."

Hai dòng đầu là task description + format requirement. Dòng cuối là input. Output mong đợi: neutral hoặc negative tuỳ cách đánh giá.

System prompt (Bài 21) có thể tách phần "vai trò" ra: vd system "Bạn là chuyên viên phân tích review e-commerce" + user chỉ chứa input. Bài 22-24 đã bàn chi tiết về việc thiết kế description, context và format.

9

Sáu task phổ biến

  • Sentiment analysis: "Phân loại sentiment: positive / negative / neutral. Văn bản: ..."
  • Translation: "Dịch sang English (giữ tên riêng, không giải thích): ..."
  • Summarization: "Tóm tắt đoạn sau trong 2 câu: ..."
  • Classification topic: "Phân loại topic vào một trong: tech / sport / food / politics / other. Bài viết: ..."
  • Extraction: "Liệt kê tất cả ngày tháng xuất hiện trong văn bản, định dạng YYYY-MM-DD, mỗi ngày một dòng: ..."
  • Generation: "Viết email tiếng Việt 4-5 câu cho khách hàng A xin lỗi vì giao hàng trễ 2 ngày."

Ba task đầu cực kỳ phổ biến trong corpus pretraining → zero-shot work rất tốt. Extraction phụ thuộc vào độ rõ của format. Generation phụ thuộc chất lượng phong cách.

10

Tăng chất lượng zero-shot

Bốn đòn bẩy quen thuộc — không thêm ví dụ, vẫn còn là zero-shot:

  • Task description chi tiết (Bài 23): nói rõ input là gì, output cần đặc tả ra sao, có ràng buộc nào.
  • Output format tường minh (Bài 24): liệt kê các nhãn cho phép, độ dài tối đa, có dấu câu không, JSON / plain text.
  • System prompt thiết lập persona (Bài 21): vd "Bạn là biên tập viên báo điện tử, ngôn ngữ trung tính, không cảm thán".
  • Step-by-step: thêm câu "Suy nghĩ từng bước trước khi trả lời" — đây chính là Zero-shot CoT, xem mục sau.

Bốn đòn bẩy này thường cộng dồn, không loại trừ nhau.

11

Zero-shot CoT

Zero-shot CoT (Kojima et al., "Large Language Models are Zero-Shot Reasoners", arXiv:2205.11916, 2022) là phát hiện đơn giản: thêm câu "Let's think step by step." (hoặc "Suy nghĩ từng bước.") sau câu hỏi sẽ kích hoạt chuỗi suy luận bên trong, làm tăng đáng kể accuracy trên task reasoning.

Câu hỏi: Một cửa hàng bán 12 quả táo, mỗi quả 5000 VND.
Nếu giảm 20% giá, tổng tiền thu được là bao nhiêu?

Let's think step by step.

Trên paper gốc, mẹo này nâng accuracy GSM8K (math word problem) của GPT-3 175B từ 17% lên 78% — không cần fine-tune, không cần ví dụ.

Với LLM 2024-2026, các model instruction-tuned mạnh thường tự reasoning step-by-step ngay cả không có câu thần chú. Reasoning model như o1, o3, DeepSeek-R1, Claude 3.7 thinking, Claude 4 thinking thì luôn nội suy CoT bên trong. Bài 27 sẽ tách riêng CoT (zero-shot và few-shot) thành chủ đề chính.

12

So sánh với supervised classifier

Trước GPT-3, để phân loại sentiment bạn sẽ train một classifier nhỏ (LSTM, BERT fine-tuned) trên 1000-10000 ví dụ có nhãn. Bây giờ có thêm lựa chọn zero-shot. So sánh:

  • Supervised classifier: cần dataset label, cần training pipeline, deploy model riêng. Một khi đã train, accuracy thường cao và ổn định cho phạm vi nhãn đã thấy. Inference rẻ và nhanh.
  • Zero-shot LLM: chỉ cần prompt. Không cần label, không cần train. Đổi nhãn / thêm nhãn là sửa prompt. Đổi domain (review e-commerce → review nhà hàng) chỉ tốn vài phút. Đổi lại: inference đắt hơn (API token), latency cao hơn, có thể "trôi" theo bản cập nhật model.

Khi nào chọn supervised: lưu lượng siêu cao, nhãn cố định lâu dài, độ chính xác là tiêu chí số 1. Khi nào chọn zero-shot: prototype, lưu lượng thấp-trung bình, nhãn còn thay đổi, không có data label sẵn.

13

Benchmark zero-shot

Bốn benchmark hay được trích cho zero-shot:

  • MMLU (Massive Multitask Language Understanding, Hendrycks et al., arXiv:2009.03300, 2020): 57 môn (toán, sử, y, luật...). Đánh giá kiến thức zero-shot multi-choice.
  • BBH (BIG-Bench Hard, Suzgun et al., arXiv:2210.09261, 2022): tập con khó từ BIG-Bench, nhấn vào reasoning.
  • HumanEval (Chen et al., arXiv:2107.03374, 2021): 164 bài lập trình Python, đo zero-shot code generation.
  • GSM8K (Cobbe et al., arXiv:2110.14168, 2021): 8500 bài toán tiểu học có lời giải, đo math reasoning.

Khi đọc bảng so sánh model trên blog / paper, lưu ý phân biệt setting: 0-shot (zero-shot), 5-shot (few-shot 5 ví dụ), 0-shot CoT (zero-shot + step by step), self-consistency (Bài 28). Cùng một model, các setting khác nhau ra điểm rất khác.

14

Mức độ chính xác theo model

Định tính (tham khảo, có thể chênh theo bản release và task):

  • Top tier — GPT-4o, Claude Opus 4, Gemini 2.5 Pro, o1 / o3, DeepSeek-V3 / R1: zero-shot ổn cho gần hết task phổ thông, bao gồm reasoning trung bình khó.
  • Strong open weight — Llama 3.1 70B / 405B, Qwen 2.5 72B, Mistral Large: gần ngang top tier ở nhiều task; lệch nhẹ ở reasoning sâu và code phức tạp.
  • SLM 7B-14B — Llama 3.1 8B, Phi-4 14B, Qwen 2.5 7B: zero-shot ổn cho task đơn giản (sentiment, paraphrase, summarize ngắn); kém cho reasoning đa bước, code phức tạp, kiến thức niche.
  • SLM 1B-3B — Llama 3.2 1B/3B, Qwen 2.5 1.5B, Phi-3 mini: zero-shot chỉ work với task rất đơn giản; nhiều case cần few-shot, CoT hoặc fine-tune.

Quy tắc làm việc: thử zero-shot trên model bạn dự định dùng trên dataset của bạn — số liệu benchmark public chỉ là tham khảo gián tiếp.

15

Pitfall hay gặp

  • Prompt mơ hồ: "Đánh giá review này" — model không biết cần nhãn nào, có thể trả về đoạn văn dài thay vì label.
  • Không tường minh format: model trả "Câu này tích cực." thay vì "positive" → parser fail.
  • Quá tin zero-shot với task phức tạp: phân loại 30 nhãn niche → accuracy có thể chỉ 40-50%, không đủ deploy.
  • Bỏ qua test set: prompt look "ổn" trên 2-3 input thử tay, fail trên data thật.
  • Mở rộng phạm vi ngầm: thêm nhãn mới vào prompt mà không test lại → tỷ lệ nhầm tăng.
  • Phụ thuộc 1 model: provider deprecate model, prompt phải tune lại.
16

Zero-shot kết hợp structured output

Bài 24 đã giới thiệu JSON mode / response format. Khi kết hợp với zero-shot, ta có pattern rất chắc chắn cho extraction:

Trích các thực thể từ câu sau và trả về JSON theo schema:
{ "people": [string], "orgs": [string], "dates": [string YYYY-MM-DD] }

Câu: "Ngày 15/03/2025, ông Nguyễn Văn A của FPT gặp bà Trần Thị B của VNG tại Hà Nội."

Có schema rõ + JSON mode bật ở SDK → model bị ép tuân thủ key. Zero-shot description định nghĩa nội dung, schema định nghĩa hình thức. Tổ hợp này thường đủ tốt cho NER, form extraction, log parsing đơn giản mà chưa cần fine-tune.

17

Tín hiệu cần nâng cấp few-shot

  • Accuracy zero-shot dưới ngưỡng chấp nhận được trên test set (vd cần ≥90% mà chỉ đạt 75%).
  • Output không nhất quán giữa các lần gọi cùng input (đôi khi label, đôi khi đoạn văn).
  • Format đặc thù khó mô tả bằng lời nhưng dễ thấy qua ví dụ.
  • Một số edge case lặp lại fail dù đã tinh chỉnh task description.
  • Định nghĩa nhãn / quy ước nội bộ mà model không thể đoán từ tên nhãn.

Khi gặp 1-2 tín hiệu trên, thêm 2-5 ví dụ đại diện vào prompt là bước rẻ nhất tiếp theo. Bài 26 sẽ cover cách chọn ví dụ.

18

Test chất lượng zero-shot

Quy trình tối thiểu để biết zero-shot có dùng được không:

  • Build test set 20-50 case, gắn nhãn tay (ground truth).
  • Cover edge case: input ngắn, dài, nhiễu, mixed language, sarcasm, lỗi chính tả...
  • Chạy zero-shot prompt qua từng case, ghi output.
  • Đo accuracy / F1 (nếu classification) hoặc đánh giá tay theo rubric (nếu generation).
  • Nếu đạt mục tiêu → deploy. Không đạt → vào nhánh few-shot / CoT / fine-tune.

Nhiều team gắn pipeline này vào CI: mỗi lần đổi prompt là chạy lại test set tự động. Module 9 (Evaluation, Bài 54-59) sẽ deep-dive.

19

Chi phí

  • Prompt zero-shot ngắn (~50-200 token) → input cost thấp.
  • Output thường cũng ngắn (1 nhãn / 1 câu) → output cost thấp.
  • Tổng chi phí per call thường vài chục đến vài trăm nghìn token mỗi 1$ tuỳ model (GPT-4o-mini, Claude Haiku rẻ; GPT-4o, Claude Opus 4 đắt hơn).
  • Khi nâng lên few-shot, prompt tăng 2-10 lần → cost tăng tương ứng. Đây là một tham số đánh đổi.

Bài 34 trong cùng series sẽ deep-dive chi phí token và cách tối ưu.

20

Reasoning model 2024-2026

Dòng reasoning model — o1, o3 (OpenAI, 2024-2025), DeepSeek-R1 (2025), Claude 3.7 / 4 thinking, Gemini 2.5 thinking — built-in chain-of-thought ở giai đoạn inference. Đặc trưng:

  • Tự sinh "scratch pad" reasoning dài trước khi đưa câu trả lời.
  • Zero-shot reasoning rất mạnh, không cần thủ thuật "Let's think step by step".
  • Latency cao hơn (giây đến phút), token usage lớn (reasoning token được tính tiền).
  • Phù hợp task khó (math, code, multi-step planning); overkill và đắt cho task đơn giản.

Khi chọn model cho zero-shot pipeline, cân nhắc: task dễ → non-reasoning model rẻ (Sonnet 4.5, GPT-4o-mini); task khó → reasoning model.

21

Cải tiến lặp

Vòng lặp thực dụng để tinh chỉnh prompt zero-shot:

  • Bắt đầu: prompt tối giản (1-2 câu mô tả task + input).
  • Chạy trên test set 20-50 case, ghi output.
  • Phân loại lỗi: format sai? nhãn sai? hiểu sai task? bias nhãn?
  • Thêm chỉ thị nhắm đúng nhóm lỗi (vd "không thêm dấu câu", "chỉ chọn một trong N nhãn", "không suy diễn ngoài nội dung").
  • Re-test.
  • Lặp đến khi accuracy bão hoà — thường 3-5 vòng là tới điểm dừng.
  • Nếu vẫn không đủ → chuyển sang few-shot (Bài 26).
22

Code Python

Ba ví dụ ngắn: zero-shot sentiment (OpenAI), zero-shot CoT math (OpenAI), so sánh 2 model (OpenAI vs Anthropic) trên cùng task.

# 1) Zero-shot sentiment với OpenAI
from openai import OpenAI

client = OpenAI()

def sentiment(text: str) -> str:
    prompt = (
        "Phân loại sentiment của câu sau thành một trong: "
        "positive, negative, neutral. "
        "Chỉ trả về đúng một từ, viết thường.\n\n"
        f"Câu: \"{text}\"\n"
        "Sentiment:"
    )
    resp = client.chat.completions.create(
        model="gpt-4o-mini",
        messages=[{"role": "user", "content": prompt}],
        temperature=0,
        max_tokens=5,
    )
    return resp.choices[0].message.content.strip().lower()

print(sentiment("Sản phẩm tệ, không recommend."))
# → negative
# 2) Zero-shot CoT cho math problem
def solve_math_cot(question: str) -> str:
    prompt = (
        f"Câu hỏi: {question}\n\n"
        "Let's think step by step."
    )
    resp = client.chat.completions.create(
        model="gpt-4o-mini",
        messages=[{"role": "user", "content": prompt}],
        temperature=0,
    )
    return resp.choices[0].message.content

print(solve_math_cot(
    "Một cửa hàng bán 12 quả táo, mỗi quả 5000 VND. "
    "Nếu giảm 20% giá, tổng tiền thu được là bao nhiêu?"
))
# Output: chuỗi reasoning từng bước rồi kết luận 48 000 VND.
# 3) So sánh OpenAI vs Anthropic trên cùng task zero-shot
from anthropic import Anthropic

anthropic = Anthropic()

def classify_topic_openai(text: str) -> str:
    prompt = (
        "Phân loại topic của bài viết vào một trong: "
        "tech / sport / food / politics / other. "
        "Chỉ trả về đúng một từ.\n\n"
        f"Bài viết: {text}"
    )
    resp = client.chat.completions.create(
        model="gpt-4o-mini",
        messages=[{"role": "user", "content": prompt}],
        temperature=0,
        max_tokens=5,
    )
    return resp.choices[0].message.content.strip().lower()

def classify_topic_claude(text: str) -> str:
    prompt = (
        "Phân loại topic của bài viết vào một trong: "
        "tech / sport / food / politics / other. "
        "Chỉ trả về đúng một từ.\n\n"
        f"Bài viết: {text}"
    )
    msg = anthropic.messages.create(
        model="claude-haiku-4-5",
        max_tokens=5,
        messages=[{"role": "user", "content": prompt}],
    )
    return msg.content[0].text.strip().lower()

sample = "Apple ra mắt MacBook Pro M5 với chip mới, RAM tối đa 128GB."
print("OpenAI :", classify_topic_openai(sample))
print("Claude :", classify_topic_claude(sample))

Với temperature=0, output gần như deterministic — thuận tiện để đánh giá. Khi cần đa dạng (vd generation), tăng temperature lên 0.5-0.8 (Bài 30 sẽ deep-dive sampling).

23

Bài tập

Bài 1 — Ba prompt zero-shot. Viết prompt zero-shot cho 3 task: NER tiếng Việt (extract person, organization, location), sentiment 3-lớp, dịch tiếng Việt → tiếng Anh. Mỗi prompt phải có task description + output format. Test trên 5 input mỗi task, ghi output và đánh giá đúng / sai.

Bài 2 — Đo accuracy. Lấy 30 review e-commerce tiếng Việt từ một dataset công khai (vd Shopee review, Foody review). Tự gắn nhãn ground truth (positive / negative / neutral). Chạy prompt sentiment ở Bài 22 bằng gpt-4o-mini. Tính accuracy. Thử thêm câu "Chỉ trả về đúng một từ, không giải thích" và so sánh.

Bài 3 — Zero-shot CoT. Chọn 3 bài toán word problem (gợi ý: lấy từ GSM8K bản dịch tiếng Việt hoặc tự soạn). Hỏi LLM hai lần: lần 1 không có "Let's think step by step", lần 2 có. So sánh chất lượng câu trả lời.

Bài 4 — So sánh model. Chạy đúng prompt classification topic ở mục 22 trên 20 bài viết tự chọn, với hai model: gpt-4o-miniclaude-haiku-4-5 (hoặc bản Haiku có sẵn). Ghi nhận accuracy và độ ổn định format.

Bài 5 — Iterative improvement (optional). Bắt đầu từ prompt zero-shot tối giản cho task phân loại email spam (chỉ "spam" / "not spam"). Đo accuracy trên 30 case. Lặp 3 vòng cải tiến (thêm chỉ thị, thêm ràng buộc format). Theo dõi accuracy qua từng vòng và dừng khi bão hoà.

24

Tóm tắt

  • Zero-shot prompting = task description + input, không kèm ví dụ. LLM dựa vào kiến thức pretraining + instruction tuning để giải.
  • Bốn yếu tố khiến zero-shot work: massive pretraining, instruction tuning (FLAN / T0), RLHF (InstructGPT), emergent capability theo scale.
  • Mốc lịch sử: GPT-3 (2020) chứng minh khả thi, FLAN / T0 (2021), InstructGPT + Zero-shot CoT (2022), ChatGPT (11/2022), sau đó là chuẩn mặc định cho tương tác LLM.
  • Zero-shot đủ tốt với: task phổ biến, output format đơn giản, model đủ capable. Không đủ với: task niche, format phức tạp, cần consistency cao, nhiều edge case.
  • Sáu nhóm task áp dụng tốt: sentiment, translation, summarization, classification, extraction, generation.
  • Đòn bẩy không cần ví dụ: task description chi tiết, output format tường minh, system prompt persona, "Let's think step by step" (Zero-shot CoT, Kojima 2022).
  • Zero-shot CoT — thêm "Let's think step by step" — nâng GSM8K accuracy của GPT-3 từ 17% lên 78% theo paper gốc. Bài 27 sẽ tách CoT riêng.
  • So với supervised classifier: zero-shot linh hoạt, không cần data label, nhưng đắt hơn per call và có thể "trôi" theo bản model.
  • Benchmark hay trích: MMLU (kiến thức multi-choice), BBH (reasoning), HumanEval (code), GSM8K (math). Khi đọc, để ý setting 0-shot vs 5-shot vs 0-shot CoT.
  • Mức accuracy theo model: GPT-4o / Claude Opus 4 / Gemini 2.5 — top tier; Llama 3.1 70B+ — strong; SLM 7-14B — đủ cho task đơn giản; SLM 1-3B — hạn chế.
  • Pitfall: prompt mơ hồ, không tường minh format, quá tin zero-shot cho task phức tạp, bỏ qua test set.
  • Kết hợp với structured output (Bài 24) tạo pattern chắc chắn cho extraction / NER.
  • Reasoning model (o1, o3, DeepSeek-R1, Claude thinking) built-in CoT — zero-shot reasoning rất tốt nhưng latency và cost cao.
  • Quy trình: bắt đầu zero-shot → test set 20-50 case → đo accuracy → cải tiến lặp 3-5 vòng → nâng cấp lên few-shot (Bài 26) nếu chưa đạt mục tiêu.
  • Bài 26 sẽ thêm bước "vài ví dụ" vào prompt — few-shot prompting.