Quay lại Blog

Few-shot và zero-shot prompting: Khi nào nên dùng cái nào

Hướng dẫn thực tế để chọn cách prompt phù hợp cho công việc của bạn, kèm ví dụ sao chép được và một khung quyết định đơn giản.

Few-shot và zero-shot prompting: Khi nào nên dùng cái nào
Bạn dán một prompt vào ChatGPT. Kết quả nhận được... cũng tạm. Nhưng bạn thấy nhiều người đạt kết quả tốt hơn hẳn nhờ thêm "ví dụ" vào prompt. Bạn có nên làm vậy không? Bao nhiêu ví dụ là đủ? Liệu nó có thực sự ảnh hưởng đến công việc cụ thể của bạn?
Những câu hỏi này xuất hiện liên tục, mà thuật ngữ thì chẳng giúp ích gì. "Zero-shot", "few-shot", "one-shot" — nghe cứ như thuật ngữ nhiếp ảnh, không phải hướng dẫn thực tế. Bài viết này gạt bỏ phần lý thuyết rườm rà và đưa ra một khung rõ ràng để bạn quyết định nên dùng cách nào, kèm các prompt hoàn chỉnh bạn có thể sao chép và tự thử nghiệm.

Zero-shot prompting thực sự là gì

Zero-shot prompting là cách giao việc cho AI mà không đưa ra bất kỳ ví dụ nào về kết quả mong muốn. Bạn mô tả nhu cầu của mình, còn mô hình tự xoay sở dựa trên những gì nó đã học.
Đây là một zero-shot prompt để tóm tắt biên bản cuộc họp:

Tóm tắt biên bản cuộc họp sau thành 3-5 gạch đầu dòng nêu các quyết định quan trọng đã được đưa ra.

Biên bản cuộc họp:
{{meeting_notes}}
Chỉ vậy thôi. Không có ví dụ về bản tóm tắt "tốt", không có mẫu đầu vào và đầu ra. Bạn tin rằng mô hình hiểu bản tóm tắt trông ra sao và "quyết định quan trọng" nghĩa là gì. Với nhiều tác vụ, cách này hoạt động tốt đến bất ngờ.

Few-shot prompting thực sự là gì

Few-shot prompting là cách đưa kèm 2-5 ví dụ trong prompt để minh hoạ mẫu mà bạn muốn AI làm theo. Bạn đang nói với mô hình "đây là cách tôi muốn anh xử lý" trước khi giao việc thật.
Vẫn là tác vụ tóm tắt cuộc họp ở trên, nhưng có thêm ví dụ:

Tóm tắt biên bản cuộc họp thành 3-5 gạch đầu dòng nêu các quyết định quan trọng.

Ví dụ 1:
Đầu vào: "Nhóm thảo luận chỉ tiêu Quý 3. Sarah đề xuất tăng mục tiêu doanh số thêm 15%. Mark không đồng ý, cho rằng 10% là thực tế hơn vì pipeline hiện tại. Nhóm bỏ phiếu và chốt 12%. Cũng quyết định hoãn việc thiết kế lại website đến Quý 4."
Đầu ra:
- Chốt tăng mục tiêu doanh số 12% cho Quý 3 (dung hoà giữa đề xuất 15% và 10%)
- Hoãn thiết kế lại website đến Quý 4

Ví dụ 2:
Đầu vào: "Họp rà soát ngân sách. Chi tiêu hiện tại vượt dự báo 8%. CFO đề nghị cắt giảm ngân sách công tác 50% và tạm dừng tuyển mới trong 60 ngày. CEO duyệt cả hai biện pháp, có hiệu lực ngay lập tức."
Đầu ra:
- Cắt 50% ngân sách công tác (hiệu lực ngay lập tức)
- Phê duyệt tạm dừng tuyển mới trong 60 ngày
- Phản ứng với mức vượt ngân sách 8%

Giờ hãy tóm tắt nội dung này:
{{meeting_notes}}
Để ý sự khác biệt. Các ví dụ cho mô hình thấy chính xác bạn muốn định dạng nào (gạch đầu dòng kèm ngữ cảnh trong ngoặc), mức độ chi tiết ra sao và cách xử lý nhiều quyết định. Mô hình học theo sở thích của bạn ngay trong ngữ cảnh — không cần fine-tuning.

Khác biệt chính trong một cái nhìn

Đây là cách hai phương pháp so sánh nhau ở những yếu tố quan trọng nhất:
  • Tốc độ: Zero-shot nhanh hơn. Ít token cần xử lý hơn nghĩa là phản hồi nhanh hơn.
  • Chi phí: Zero-shot rẻ hơn. Bạn trả tiền theo token, mà ví dụ thì cộng dồn lên.
  • Công sức chuẩn bị: Zero-shot gần như không cần. Few-shot đòi hỏi bạn phải tìm hoặc tạo ra ví dụ tốt.
  • Độ chính xác với tác vụ đơn giản: Tương đương nhau. Các mô hình hiện đại xử lý yêu cầu rõ ràng tốt với cả hai cách.
  • Độ chính xác với tác vụ phức tạp/tuỳ biến: Few-shot thường thắng. Khi bạn cần định dạng cụ thể hoặc thuật ngữ chuyên ngành, ví dụ tạo nên khác biệt rõ rệt.
Sự đánh đổi đã rõ: zero-shot đơn giản và rẻ hơn, còn few-shot cho bạn quyền kiểm soát đầu ra nhiều hơn. Vấn đề là khi nào quyền kiểm soát thêm đó đáng giá.

Khi nào zero-shot hoạt động tốt nhất

Zero-shot phát huy hiệu quả khi tác vụ là thứ mô hình đã "hiểu" sẵn từ dữ liệu huấn luyện. Bao gồm:
Câu hỏi kiến thức tổng quát: Yêu cầu giải thích, định nghĩa hoặc thông tin sự kiện. Mô hình biết một lời giải thích tốt trông ra sao.

Brainstorm sáng tạo: Sinh ý tưởng, viết bản nháp đầu tiên hoặc đưa ra nhiều phương án. Lúc này bạn muốn sự đa dạng, chứ không phải bám theo một khuôn cố định.

Tóm tắt thông thường: Rút gọn bài viết, email hoặc tài liệu khi bạn không cần định dạng cụ thể.

Dịch thuật: Chuyển văn bản giữa các ngôn ngữ mà mô hình đã được huấn luyện.

Phân loại đơn giản: Sắp xếp các mục vào nhóm phổ biến (tích cực/tiêu cực, khẩn cấp/không khẩn cấp) khi các nhóm đã tự rõ nghĩa.
Một quy tắc đơn giản: nếu bạn có thể mô tả điều mình muốn bằng lời lẽ rõ ràng, và một người nghe sẽ hiểu mà không cần ví dụ, thì zero-shot nhiều khả năng sẽ ổn.
Lưu đồ thể hiện quy trình quyết định: bắt đầu với zero-shot, đánh giá kết quả, chỉ thêm ví dụ khi cần
Lưu đồ thể hiện quy trình quyết định: bắt đầu với zero-shot, đánh giá kết quả, chỉ thêm ví dụ khi cần

Khi nào few-shot xứng đáng với phần token thêm vào

Few-shot đáng đồng tiền bát gạo khi đầu ra cần tuân theo những khuôn mẫu mà mô hình không thể suy ra chỉ từ hướng dẫn:
Định dạng tuỳ biến: Khi bạn cần đầu ra theo cấu trúc cụ thể — JSON với những trường nhất định, bảng có cột chính xác, gạch đầu dòng theo phong cách riêng. Ví dụ thể hiện định dạng tốt hơn lời mô tả nhiều.

Hệ phân loại của riêng bạn: Nếu bạn phân loại email khách hàng vào các nhóm như "billing-question", "feature-request", "bug-report" và "general-inquiry", việc đưa ví dụ cho từng nhóm giúp mô hình hiểu định nghĩa của bạn.

Bắt giọng văn hoặc tone thương hiệu: Muốn AI viết giống nội dung sẵn có của công ty? Hãy cho nó xem 2-3 ví dụ về giọng văn đó. Hướng dẫn kiểu "viết với giọng chuyên nghiệp nhưng thân thiện" rất mơ hồ; ví dụ thì cụ thể.

Thuật ngữ chuyên ngành: Nếu lĩnh vực của bạn dùng từ chuyên ngành hoặc viết tắt có nghĩa khác ở nơi khác, ví dụ sẽ dạy mô hình về ngữ cảnh của bạn.

Trường hợp đặc biệt và sắc thái tinh tế: Nhận diện châm biếm, mỉa mai hoặc các phân biệt tinh tế khiến cách zero-shot dễ vấp. Nghiên cứu cho thấy few-shot prompting cải thiện đáng kể việc xử lý các trường hợp sắc thái cảm xúc khó như phủ định hay châm biếm.
Một nghiên cứu chỉ ra rằng với phân loại cảm xúc trên Twitter, few-shot prompting với chỉ 20-50 ví dụ đã đạt tới hiệu năng của các mô hình được fine-tune trên hơn 10.000 ví dụ. Đó là sức mạnh của những ví dụ được chọn lọc kỹ.
Nếu bạn nhận ra mình đang xây dựng một thư viện few-shot prompts cho nhiều tác vụ khác nhau, một công cụ như PromptNest sẽ giúp bạn lưu chúng kèm các biến như {{meeting_notes}} được tích hợp sẵn — chỉ cần điền vào chỗ trống khi sao chép, và prompt hoàn chỉnh đã sẵn sàng để dán.

Quy trình "khởi đầu zero, nâng cấp khi cần"

Đây là cách tiếp cận thực dụng giúp tiết kiệm cả thời gian lẫn token:
Bước 1: Thử zero-shot trước. Viết một prompt rõ ràng mô tả điều bạn muốn. Hãy cụ thể về tác vụ, nhưng chưa cần đưa ví dụ.

Bước 2: Đánh giá kết quả. Nó có cho bạn thứ bạn cần không? Nếu có, xong. Nếu chưa, hãy xác định vấn đề ở đâu — định dạng? Tone? Thiếu chi tiết? Hay hiểu sai hoàn toàn tác vụ?

Bước 3: Thêm ví dụ có chủ đích. Tạo 2-3 ví dụ minh hoạ chính xác chỗ mô hình làm sai. Nếu định dạng lệch, hãy cho thấy định dạng đúng. Nếu tone sai, hãy cho thấy tone phù hợp.
Quy trình này quan trọng vì bạn không đoán mò xem có cần ví dụ hay không — bạn đang phản ứng với những lỗ hổng thật. Đôi khi chỉ cần thêm "Hãy suy nghĩ từng bước một" vào một zero-shot prompt là đã giải quyết được các vấn đề suy luận mà chẳng cần ví dụ nào. Nghiên cứu xác nhận rằng zero-shot chain-of-thought thường vượt trội hơn few-shot trong các tác vụ suy luận.

Bao nhiêu ví dụ là đủ?

Các nghiên cứu liên tục chỉ ra điểm tối ưu là 2-5 ví dụ cho hầu hết các tác vụ. Dữ liệu cho thấy:
- 2-3 ví dụ đầu tiên mang lại độ tăng chính xác lớn nhất - Lợi ích giảm mạnh sau 4-5 ví dụ - Quá nhiều ví dụ có thể làm giảm hiệu năng vì đưa vào những khuôn mẫu mâu thuẫn - Chất lượng ví dụ quan trọng hơn số lượng — ba ví dụ xuất sắc đánh bại mười ví dụ trung bình
Còn một phát hiện quan trọng nữa về thứ tự ví dụ: các nghiên cứu cho thấy thứ tự sắp xếp ảnh hưởng đến kết quả, và đôi khi sắp xếp tối ưu chính là khác biệt giữa hiệu năng tốt và tệ. Nếu few-shot prompt của bạn chưa hoạt động tốt, hãy thử đảo lại thứ tự ví dụ trước khi thêm cái mới.
Minh hoạ các thẻ ví dụ được thêm vào prompt, với lợi ích giảm dần sau vài ví dụ đầu
Minh hoạ các thẻ ví dụ được thêm vào prompt, với lợi ích giảm dần sau vài ví dụ đầu
Với hầu hết trường hợp, hãy bắt đầu với 2 ví dụ. Nếu độ chính xác chưa đạt mức bạn cần, thêm ví dụ thứ ba bao quát một biến thể khác. Hiếm khi bạn cần quá 4.

Chain-of-thought: Lựa chọn trung gian cho các bài toán suy luận

Có một lựa chọn thứ ba hoạt động đặc biệt tốt với toán, logic và bài toán nhiều bước: chain-of-thought prompting. Thay vì đưa ví dụ đầu vào - đầu ra, bạn yêu cầu mô hình "suy nghĩ từng bước một".
Zero-shot chain-of-thought trông như sau:

Một cửa hàng có 45 quả táo. Họ bán 12 quả vào buổi sáng và nhập thêm 30 quả. Sau đó bán 18 quả vào buổi chiều. Lúc đóng cửa, họ còn bao nhiêu quả táo?

Hãy cùng giải bài toán này từng bước một.
Câu nói đơn giản đó — "Hãy cùng giải bài toán này từng bước một" — kích hoạt mô hình trình bày lập luận thay vì nhảy thẳng đến đáp án. Với những bài cần suy luận phức tạp, cách này thường vượt trội cả zero-shot lẫn few-shot.
Nghiên cứu gần đây từ arXiv cho thấy với những mô hình mạnh như GPT-4 và Claude, zero-shot chain-of-thought thường vượt trội few-shot prompting trong các tác vụ suy luận. Các ví dụ thực ra có thể bó hẹp tư duy của mô hình thay vì hỗ trợ nó.
Hãy dùng chain-of-thought khi:
  • Tác vụ đòi hỏi nhiều bước logic
  • Bạn cần mô hình giải thích lập luận (hữu ích để bắt lỗi)
  • Liên quan đến toán, logic lập trình hoặc bài toán phân tích
  • Bạn muốn kiểm tra cách tiếp cận của mô hình, không chỉ đáp án

Các prompt hoàn chỉnh bạn có thể sao chép

Cùng xem ba cách tiếp cận đặt cạnh nhau cho những tác vụ thực tế. Tất cả prompt đều đã được kiểm thử với GPT-4 và Claude, sẵn sàng để dùng.

Tác vụ 1: Phân loại tone email

Bản zero-shot:

Phân loại tone của email khách hàng sau thành: bực bội, hài lòng, trung tính hoặc khẩn cấp.

Email:
{{email_text}}

Tone:
Bản few-shot (tốt hơn cho các trường hợp khó):

Phân loại tone email khách hàng thành: bực bội, hài lòng, trung tính hoặc khẩn cấp.

Email: "Tôi đã đợi đơn hàng 3 tuần rồi. Quá đáng thật. Tôi muốn được hoàn tiền NGAY."
Tone: bực bội

Email: "Tôi chỉ muốn cảm ơn — sản phẩm đến sớm và hoạt động rất tốt!"
Tone: hài lòng

Email: "Chào shop, có thể xác nhận đơn của tôi đã gửi đi chưa? Đơn hàng #12345."
Tone: trung tính

Email: "Hệ thống của chúng tôi đang ngừng hoạt động và chúng tôi cần linh kiện thay thế NGAY HÔM NAY, nếu không sẽ mất hợp đồng."
Tone: khẩn cấp

Email: {{email_text}}
Tone:
Bản few-shot giúp mô hình hiểu định nghĩa cụ thể của bạn. "Khẩn cấp" và "bực bội" có thể mơ hồ — ví dụ làm rõ ranh giới của bạn.

Tác vụ 2: Viết lại mô tả sản phẩm

Bản zero-shot:

Viết lại mô tả sản phẩm này cho hấp dẫn hơn và tập trung vào lợi ích. Giữ trong vòng 100 từ.

Bản gốc: {{product_description}}

Bản viết lại:
Bản few-shot (tốt hơn để giữ giọng văn nhất quán):

Viết lại mô tả sản phẩm cho hấp dẫn và tập trung vào lợi ích. Bám theo phong cách sau:

Bản gốc: "Bình nước thép không gỉ. Dung tích 24oz. Giữ lạnh 24 giờ."
Bản viết lại: "Giữ đủ nước cả ngày dài cùng chiếc bình thép 24oz dáng đẹp. Cà phê sáng vẫn nóng suốt đường đi làm. Ly nước chiều vẫn lạnh buốt khi bạn tới phòng gym. Một chiếc bình, vô vàn khả năng."

Bản gốc: "Tai nghe không dây. Pin 8 giờ. Chống ồn."
Bản viết lại: "Tám giờ liền nghe podcast yêu thích, không gián đoạn. Tai nghe không dây của chúng tôi cách ly tiếng ồn để bạn tập trung vào điều quan trọng — dù đó là công việc cần độ sâu, playlist tập gym hay cuốn audiobook bạn cuối cùng cũng nghe xong."

Bản gốc: {{product_description}}
Bản viết lại:
Bản few-shot dạy mô hình một phong cách viết quảng cáo cụ thể — dẫn dắt bằng lợi ích, giọng văn trò chuyện, gắn với tình huống sử dụng cụ thể. Zero-shot sẽ cho bạn một bản viết lại, nhưng chưa chắc đúng giọng văn của bạn.

Tác vụ 3: Cấu trúc hoá báo cáo lỗi

Bản zero-shot:

Chuyển báo cáo lỗi này sang định dạng có cấu trúc gồm: Tóm tắt, Các bước tái hiện, Hành vi mong đợi và Hành vi thực tế.

Báo cáo lỗi: {{bug_report}}
Bản few-shot (tốt hơn cho định dạng nhất quán):

Chuyển báo cáo lỗi sang định dạng có cấu trúc.

Đầu vào: "App bị crash khi tôi cố tải lên một file PDF. Tôi đang ở dashboard, bấm upload, chọn file PDF 5MB, và app tự đóng. Đáng lẽ phải hiển thị file trong mục uploads của tôi nhưng cả app lại sập."

Đầu ra:
**Tóm tắt:** App bị crash khi tải lên file PDF
**Các bước tái hiện:**
1. Vào dashboard
2. Bấm nút upload
3. Chọn một file PDF (đã thử với file 5MB)
**Mong đợi:** File xuất hiện trong mục uploads
**Thực tế:** Ứng dụng bị crash/đóng đột ngột

---

Đầu vào: {{bug_report}}

Đầu ra:
Với tài liệu kỹ thuật, sự nhất quán mới là điều quan trọng. Bản few-shot đảm bảo mọi báo cáo lỗi đều theo cùng cấu trúc với cùng mức độ chi tiết.

Khung quyết định nhanh

Khi đối mặt với một tác vụ mới, hãy chạy qua những câu hỏi sau:
1. Tác vụ có rõ ràng và được định nghĩa tốt không? → Bắt đầu với zero-shot 2. Bạn cần một định dạng cụ thể mà mô hình có thể không đoán đúng? → Dùng few-shot 3. Tác vụ có liên quan đến suy luận nhiều bước không? → Thử zero-shot chain-of-thought trước 4. Bạn cần giọng thương hiệu nhất quán hoặc thuật ngữ chuyên ngành? → Dùng few-shot với ví dụ theo giọng đó 5. Zero-shot đã cho bạn 80% kết quả mong muốn? → Giữ nguyên đi. Sự hoàn hảo không đáng tốn gấp 3 lần token.
Mục tiêu không phải là dùng kỹ thuật cầu kỳ nhất — mà là đạt kết quả tốt một cách hiệu quả. Zero-shot là mặc định. Chỉ thêm độ phức tạp khi cách đơn giản chưa đủ.

Áp dụng vào thực tế

Cách tốt nhất để thấm những điều này là tự thực hành. Hãy chọn một tác vụ bạn làm thường xuyên — tóm tắt báo cáo, soạn email, phân loại phản hồi — và thử cả hai cách. Quan sát chỗ zero-shot không đủ. Quan sát chỗ few-shot tạo ra khác biệt thật sự.
Khi đã tìm được những prompt hữu hiệu, hãy lưu lại ở chỗ bạn thật sự có thể tìm thấy. Nếu bạn đang xây dựng một bộ sưu tập prompt kèm ví dụ và biến số, PromptNest là một ứng dụng Mac gốc ($19.99 trả một lần trên Mac App Store, không subscription, không cần tài khoản, chạy hoàn toàn cục bộ) giúp giữ chúng có tổ chức, dễ tìm và truy cập bằng phím tắt từ bất kỳ ứng dụng nào. Không còn cảnh lục tung ghi chú rải rác để tìm lại few-shot prompt hoàn hảo bạn viết ba tuần trước.
Bắt đầu đơn giản. Thêm độ phức tạp khi cần. Lưu lại những gì hiệu quả. Đó là toàn bộ chiến lược.