TROISINH
FoundationsAlignment & Adaptation

Prompt Engineering — Zero-shot, Few-shot, và nghệ thuật 'ra đề'

Từ zero-shot đến few-shot: cách 'ra đề' khéo léo để khai thác triệt để khả năng ẩn trong LLM mà không cần huấn luyện lại.

Cùng một câu hỏi, cách bạn hỏi "Giải thích AI cho tôi" và cách bạn hỏi "Giải thích AI như đang nói với học sinh cấp 2, dùng ví dụ về dạy máy nhận biết mèo và chó" sẽ cho kết quả khác biệt một trời một vực. Sự khác biệt đó không nằm ở model — mà nằm ở prompt engineering, kỹ thuật "ra đề" để khai thác triệt để những gì model đã biết mà không cần động đến một dòng code huấn luyện lại.

Vấn đề

Trước khi có ChatGPT, các mô hình ngôn ngữ lớn (LLM) được huấn luyện trên hàng terabyte văn bản Internet với mục tiêu đơn giản: dự đoán từ tiếp theo. Chúng là "cỗ máy viết tiếp" (autocompletion) siêu hạng, chứ không phải trợ lý biết lắng nghe và tuân thủ chỉ dẫn.

Vấn đề là khoảng cách giữa "biết""làm theo ý người dùng". Một model đã đọc cả triệu trang Wikipedia có thể chứa đáp án cho câu hỏi của bạn, nhưng nếu bạn hỏi kiểu "What is the capital of France?" nó có thể trả lời "The capital of France is Paris" hoặc có thể tiếp tục liệt kê các thành phố khác của Pháp, tùy vào pattern ngẫu nhiên nó thấy trên Internet.

Để biến một "cỗ máy viết tiếp" thành "trợ lý thông minh", các kỹ sư thường phải chạy qua cả pipeline dài: Supervised Fine-Tuning rồi RLHF. Nhưng trước cả khi đụng đến GPU để huấn luyện, có một cách rẻ hơn nhiều: thay đổi cách bạn "ra đề" (prompt) — tức là dùng ngôn ngữ tự nhiên để "lập trình" hành vi của model.

Ý tưởng cốt lõi

Prompt engineering không phải là "mẹo vặt" hay "nịnh nọt" AI. Nó là kỹ thuật khai thác khả năng in-context learning — học trong ngữ cảnh — của LLM. Thay vì cập nhật weight qua backpropagation, bạn cung cấp thông tin và mẫu mực ngay trong prompt, biến context window thành "bộ nhớ làm việc" tạm thời để model điều chỉnh output.

Có ba cấp độ chính, từ đơn giản đến phức tạp:

Zero-shot: Chỉ cần ra lệnh rõ ràng

Đây là dạng cơ bản nhất: bạn mô tả nhiệm vụ mà không đưa ví dụ. Nhưng "rõ ràng" ở đây có nghĩa là cấu trúc prompt theo khuôn Context + Instruction + Format:

  • Context: "Bạn là một chuyên gia lập trình Python 10 năm kinh nghiệm."
  • Instruction: "Viết hàm sắp xếp list bằng quicksort."
  • Format: "Chỉ trả về code, không giải thích thêm, dùng type hint."

Phần lớn người dùng thất bại ở zero-shot vì thiếu format specification. Model không biết bạn muốn output dạng JSON hay bullet point, dài hay ngắn, trang trọng hay thân mật. Việc "đóng khung" output ngay từ đầu giúp model "bắt sóng" đúng pattern.

Few-shot: Dạy bằng ví dụ, không cần gradient

Đây là "aha moment" quan trọng nhất. Thay vì nói làm thế nào, bạn cho model xem làm gì qua 2–5 ví dụ (examples). Ví dụ với task phân loại sentiment:

Text: "Bộ phim này thật tuyệt vời" → Positive
Text: "Phí tiền xem phim này" → Negative  
Text: "Diễn xuất ổn nhưng kịch bản hời hợt" →

Model sẽ tự động nhận ra pattern "Text: ... → Label" và điền "Mixed/Neutral" hoặc "Negative" tùy theo ngữ cảnh. Điều kỳ diệu là điều này xảy ra không có gradient update nào — chỉ bằng cách attention mechanism nhìn lại các ví dụ trước đó và áp dụng pattern vào input mới.

Chain-of-Thought: Ép model "nghĩ từng bước"

Với bài toán logic, toán học, hoặc suy luận đa bước, zero-shot và few-shot thường thất bại vì model nhảy thẳng đến đáp án. Kỹ thuật Chain-of-Thought (CoT) thêm cụm "Hãy suy nghĩ từng bước" (Let's think step by step) hoặc yêu cầu format output phải có phần Reasoning trước Answer. Điều này kích hoạt "System 2 thinking" — buộc model materialize quá trình suy luận thay vì đoán mò.

Vai trò (Role Prompting) và Cấu trúc

Ngoài ba cấp độ trên, hai kỹ thuật cơ bản khác là:

  • Role prompting: Gán persona cụ thể ("Bạn là luật sư chuyên hợp đồng") để kích hoạt kiến thức chuyên sâu và từ vựng phù hợp trong weights của model.
  • Delimiter: Dùng ``` hay """ để phân tách instruction, context, và input cần xử lý, tránh model nhầm lẫn giữa "lệnh" và "dữ liệu".

That's it. Tất cả prompt engineering chỉ xoay quanh việc: (1) Cung cấp đủ context để model hiểu nhiệm vụ, (2) Cho xem mẫu hành vi mong muốn (few-shot), và (3) Ép buộc cấu trúc output phù hợp.

Tại sao nó hoạt động

Nhiều người tưởng rằng prompt engineering là "thử-và-sai" mù quáng. Nhưng cơ chế bên trong là meta-learning — khả năng học pattern từ ngữ cảnh mà model đã phát triển trong quá trình pre-training trên hàng nghìn tỷ token.

Khi bạn cung cấp 3 ví dụ few-shot, attention mechanism thực hiện một dạng implicit gradient descent: nó điều chỉnh "attention weights" để các token trong ví dụ trước ảnh hưởng mạnh đến prediction hiện tại, tạo ra hiệu ứng "copy pattern" mà không cần cập nhật tham số. Các nghiên cứu lý thuyết chỉ ra rằng transformer với softmax attention có thể mô phỏng gradient descent trong forward pass, giải thích tại sao few-shot learning hoạt động.

Với zero-shot, rõ ràng trong instruction giúp model "nhảy" vào đúng region của latent space — khu vực chứa các representation của tác vụ tương tự đã gặp trong quá trình huấn luyện. Prompt chính là Bayesian prior mạnh mẽ, điều hướng distribution của output về phía mong muốn.

Ý nghĩa thực tế

Tác động thực tế: Prompt engineering là cách rẻ nhất để align model. Thay vì tốn hàng nghìn đô la huấn luyện lại với LoRA hay QLoRA, bạn chỉ mất vài phút viết lại prompt. Nó là lớp đầu tiên trong pipeline "chuyển đổi pre-trained model thành assistant" — trước cả khi nghĩ đến fine-tuning.

Giới hạn:

  • Context length: Bạn không thể nhét cả cơ sở kiến thức vào prompt nếu nó dài hơn context window (dù giờ đã có 1M+ tokens, cost vẫn tăng theo độ dài).
  • Consistency: Không phải lúc nào cũng cho kết quả giống nhau (non-deterministic), khó kiểm soát hơn fine-tuned model.
  • Knowledge gap: Không thể dạy model kiến thức mới hoàn toàn (ví dụ: số điện thoại của bạn) chỉ bằng prompt — cần RAG hoặc fine-tuning.

Khi nào chuyển sang fine-tuning? Khi bạn cần tính nhất quán cao (brand voice), xử lý input phức tạp theo cấu trúc cố định, hoặc khi chi phí inference của prompt dài vượt quá chi phí huấn luyện một model nhỏ chuyên biệt. Prompt engineering là bước zero trước khi bước vào các kỹ thuật align "nặng đô" hơn như SFT, DPO, hay RLHF.

Đào sâu hơn

Paper gốc:

Bài liên quan TroiSinh:

Cùng cụm (Alignment & Adaptation):

  • Supervised Fine-Tuning (SFT) — Khi prompt không đủ mạnh, ta chuyển sang huấn luyện có giám sát để dạy model hành vi cụ thể.
  • Instruction Tuning — Cách biến model từ "viết tiếp" thành "tuân lệnh" qua fine-tuning.
  • Chain-of-Thought — Kỹ thuật nâng cao trong prompt engineering cho bài toán logic.
  • RLHF — Pipeline alignment cấp cao, sử dụng reward model để tinh chỉnh policy.
  • LoRA — Phương pháp fine-tuning hiệu quả khi bạn cần "hard-code" hành vi mà prompt không đảm bảo được.

Đọc tiếp (Training Efficiency & Frontier):

  • QLoRA — Khi cần fine-tune nhưng không có GPU khủng, kết hợp quantization + LoRA để chạy trên hardware consumer.
  • DPO — Cách align model bằng preference optimization mà không cần reward model phức tạp như RLHF.
  • SimPO & ORPO — Các phương pháp alignment mới nhất, đơn giản hóa DPO.
  • GRPO — Dùng reinforcement learning với verifiable reward để dạy model suy luận sâu hơn nữa, vượt qua giới hạn của prompt engineering.

External:

  • Prompt Engineering Guide — Tài liệu toàn diện về các kỹ thuật prompting nâng cao (CoT, Tree of Thoughts, ReAct).
  • Learn Prompting — Khóa học miễn phí với nhiều ví dụ thực hành từ cơ bản đến nâng cao.

On this page