Mở đầu — vì sao bài này quan trọng
Trong suốt 58 bài trước, bạn đã học đủ mọi kỹ thuật để viết prompt tốt: từ few-shot, chain-of-thought, structured output, đến cách tuning temperature hay quản lý context window. Nhưng có một sự thật phũ phàng mà ít ai nói với bạn: phần lớn thời gian debug prompt trong thực tế không phải là "làm thế nào để prompt tốt hơn", mà là "tại sao prompt này lại hỏng".
Anti-pattern là những "cách làm nghe rất hợp lý nhưng thực chất phản tác dụng" — những cái bẫy mà gần như ai cũng rơi vào khi mới bắt đầu, và tệ hơn, nhiều team đã dùng AI cả năm trời vẫn tiếp tục mắc phải mà không nhận ra. Chúng không gây lỗi báo đỏ ngay lập tức. Chúng âm thầm làm output kém chất lượng, tốn token, khó bảo trì, và làm cả team mất niềm tin vào AI.
Học anti-pattern cũng giống như bác sĩ học về bệnh: bạn không chỉ cần biết "cơ thể khỏe mạnh trông thế nào", mà phải nhận ra dấu hiệu bệnh lý để chữa. Bài này là bộ "chẩn đoán" giúp bạn nhìn một prompt và ngay lập tức thấy được nó sai ở đâu. Đây cũng là bài tổng kết mang tính thực chiến nhất của toàn khóa: nó buộc bạn nhìn lại mọi thứ đã học qua lăng kính "đừng làm gì".
Khái niệm cốt lõi
Anti-pattern trong prompt engineering là một giải pháp lặp đi lặp lại cho một vấn đề, nhưng lại tạo ra nhiều vấn đề hơn là nó giải quyết. Chúng ta sẽ đi qua những anti-pattern phổ biến và nguy hiểm nhất.
1. The "kitchen sink" prompt — nhồi nhét mọi thứ vào một prompt
Đây là anti-pattern kinh điển nhất. Bạn nhồi tất cả instruction, role, ví dụ, ràng buộc, định dạng, edge case... vào một mega-prompt dài 800 dòng, với hy vọng "càng chi tiết thì AI càng hiểu".
Vấn đề là mô hình ngôn ngữ có sự chú ý (attention) trải đều nhưng không vô hạn. Khi bạn nhồi 15 yêu cầu vào một chỗ, mô hình sẽ ưu tiên vài yêu cầu và "quên" số còn lại — thường là những cái nằm ở giữa (hiện tượng lost in the middle). Prompt càng dài, các instruction càng có xu hướng mâu thuẫn nhau mà bạn không nhận ra. Kết quả: output thiếu ổn định, lúc đúng lúc sai, và bạn không biết dòng nào đang thực sự có tác dụng.
Giải pháp không phải là viết ngắn hơn một cách máy móc, mà là tách bài toán thành các bước (prompt chaining) hoặc phân tầng rõ ràng — điều bạn đã học ở Bài 10. Một prompt nên làm tốt một việc.
2. Vague instructions — hướng dẫn mơ hồ
"Viết cho hay vào", "làm chuyên nghiệp hơn", "tóm tắt ngắn gọn". Với con người, những câu này còn khó hiểu, huống chi với AI. "Ngắn gọn" là 3 câu hay 3 đoạn? "Chuyên nghiệp" là giọng luật sư hay giọng startup?
Mô hình sẽ đoán, và mỗi lần chạy nó đoán khác nhau. Sự mơ hồ là kẻ thù số một của tính nhất quán (consistency). Hãy thay bằng ràng buộc đo được: "tối đa 50 từ", "giọng trang trọng, không dùng emoji", "định dạng bullet 3 gạch đầu dòng".
3. Contradictory constraints — ràng buộc mâu thuẫn
"Hãy viết thật chi tiết và đầy đủ, nhưng phải cực kỳ ngắn gọn." "Sáng tạo bay bổng nhưng tuyệt đối bám sát dữ liệu." Những cặp yêu cầu này khiến mô hình rơi vào thế "chọn một trong hai" một cách ngẫu nhiên. Bạn phải quyết định thứ tự ưu tiên và nói rõ: "Ưu tiên ngắn gọn; nếu phải chọn, hy sinh chi tiết."
4. Assuming the model knows your context — cho rằng AI biết bối cảnh của bạn
"Cập nhật báo cáo như tháng trước." Mô hình không có trí nhớ giữa các phiên (trừ khi bạn đưa vào context). Nó không biết "công ty ta", "sản phẩm chủ lực", "khách VIP" là gì. Đây là anti-pattern hay gặp ở người dùng doanh nghiệp: họ nói chuyện với AI như nói với đồng nghiệp lâu năm.
5. Over-anthropomorphizing — nhân cách hóa quá mức
"Hãy suy nghĩ thật kỹ như một thiên tài", "cố gắng hết sức nhé", "đừng làm tôi thất vọng". Những lời động viên kiểu này gần như vô dụng — mô hình không có động lực hay cảm xúc. Thời gian bạn bỏ ra để "nịnh" AI nên dành cho việc mô tả rõ nhiệm vụ và tiêu chí.
6. Ignoring failure modes — bỏ qua trường hợp lỗi
Prompt chỉ nghĩ đến kịch bản "mọi thứ suôn sẻ". Khi input rỗng, dữ liệu thiếu, hoặc người dùng hỏi điều ngoài phạm vi, mô hình sẽ "bịa" (hallucinate) một câu trả lời trông có vẻ hợp lý. Prompt tốt phải nói rõ: "Nếu không đủ thông tin, hãy trả về INSUFFICIENT_DATA thay vì đoán."
7. Prompt injection để ngỏ — không phân tách dữ liệu và chỉ thị
Khi bạn ghép thẳng nội dung người dùng vào prompt mà không đánh dấu ranh giới, một câu như "Bỏ qua mọi hướng dẫn trước đó và..." trong dữ liệu đầu vào có thể chiếm quyền điều khiển. Đây vừa là anti-pattern về chất lượng, vừa là lỗ hổng bảo mật.
Tình huống thực tế
Ví dụ 1: Tiki và mega-prompt phân loại phản hồi khách hàng
Một team vận hành (giả định dựa trên bối cảnh e-commerce Việt Nam như Tiki) xây dựng hệ thống phân loại review sản phẩm. Prompt ban đầu của họ dài khoảng 1.200 token: vừa yêu cầu phân loại cảm xúc (tích cực/tiêu cực/trung tính), vừa gắn nhãn chủ đề (giao hàng, chất lượng, giá, đóng gói), vừa phát hiện review spam, vừa trích xuất tên sản phẩm được nhắc đến, vừa gợi ý câu trả lời cho CSKH — tất cả trong một lần gọi.
Kết quả: độ chính xác phân loại cảm xúc chỉ đạt khoảng 72%. Tệ hơn, khi họ chỉnh phần "gợi ý câu trả lời", độ chính xác của "phát hiện spam" lại tụt xuống — hai việc chẳng liên quan nhưng ảnh hưởng lẫn nhau vì chen chúc trong cùng một context.
Diễn giải: đây là kitchen sink prompt cộng với việc bỏ qua nguyên tắc "một prompt một việc". Attention của mô hình bị chia năm xẻ bảy. Khi team tách thành ba prompt riêng — (1) phân loại cảm xúc + chủ đề, (2) lọc spam, (3) gợi ý trả lời — chạy nối tiếp, độ chính xác cảm xúc nhảy lên khoảng 91%, và quan trọng là mỗi phần giờ có thể tối ưu độc lập mà không phá vỡ phần khác.
Bài học: Khi một prompt làm quá nhiều việc, chi phí lớn nhất không phải là token mà là sự phụ thuộc chéo khiến bạn không thể cải tiến từng phần. Tách nhỏ để mỗi phần đo được và sửa được.
Ví dụ 2: Startup fintech và ràng buộc mâu thuẫn trong tư vấn tài chính
Một startup fintech ở TP.HCM làm chatbot tư vấn sản phẩm vay tiêu dùng. Prompt system của họ ghi: "Hãy tư vấn thật đầy đủ, giải thích cặn kẽ mọi điều khoản, đồng thời trả lời thật ngắn gọn dưới 3 câu để khách không bị ngợp."
Hậu quả: chatbot lúc thì viết một đoạn dài lê thê nuốt hết điều khoản, lúc thì cụt lủn bỏ sót phí phạt trả chậm — một thông tin bắt buộc phải công bố theo quy định. Đội pháp chế phát hiện có những phiên tư vấn thiếu cảnh báo lãi suất, rủi ro tuân thủ rất cao.
Diễn giải: đây là hai anti-pattern chồng lên nhau — ràng buộc mâu thuẫn (đầy đủ vs. ngắn gọn) và bỏ qua failure mode (không quy định thông tin nào là bắt buộc-không-được-cắt). Mô hình không có cách nào biết rằng "phí phạt trả chậm" quan trọng hơn "độ ngắn gọn".
Cách sửa: họ viết lại theo thứ tự ưu tiên rõ ràng — "Luôn nêu đủ 4 thông tin bắt buộc: lãi suất, tổng chi phí, phí phạt trả chậm, điều kiện tất toán sớm. Với phần còn lại, giữ ngắn gọn tối đa 3 câu. Nếu khách chưa cung cấp thu nhập, trả về câu hỏi làm rõ thay vì ước đoán hạn mức." Sau khi triển khai, tỷ lệ phiên thiếu thông tin bắt buộc giảm về gần 0.
Bài học: Khi hai ràng buộc xung đột, đừng để mô hình tự cân bằng — bạn phải là người quyết định cái gì không bao giờ được hy sinh. Với lĩnh vực nhạy cảm như tài chính, y tế, pháp lý, việc này không phải tùy chọn mà là bắt buộc.
Ví dụ 3: Agency marketing và giả định AI biết bối cảnh
Một agency marketing nhỏ ở Hà Nội dùng AI viết caption Facebook cho khách hàng. Một bạn junior gõ: "Viết caption cho chiến dịch mới của khách, giọng như mấy bài trước, nhớ chèn USP nhé." AI trả về một caption chung chung về "sản phẩm chất lượng cao, giá tốt" — không dính dáng gì đến thương hiệu mỹ phẩm thuần chay mà khách đang bán.
Diễn giải: bạn junior cho rằng AI "nhớ" các bài trước và biết USP của khách là gì. Nhưng phiên chat mới không mang theo bối cảnh nào cả. AI buộc phải bịa ra một USP mặc định — chính là hallucination do thiếu context.
Cách sửa đơn giản: đưa vào 2-3 caption mẫu cũ (few-shot), nêu rõ USP ("100% thành phần thực vật, không thử nghiệm trên động vật, sản xuất tại Việt Nam"), và mô tả khách hàng mục tiêu. Chất lượng caption cải thiện tức thì, và bạn junior ngừng phải sửa tay từng bài.
Bài học: AI không phải đồng nghiệp có trí nhớ. Mọi thứ nó cần biết, bạn phải đưa vào context của phiên đó. "AI tự hiểu" là ảo tưởng đắt giá nhất của người mới.
Hướng dẫn từng bước
Đây là quy trình để phát hiện và loại bỏ anti-pattern trong prompt hiện có của bạn:
- Đọc to prompt và đếm số nhiệm vụ. Nếu prompt yêu cầu làm hơn 2-3 việc khác loại (phân loại + trích xuất + sinh nội dung), đó là dấu hiệu kitchen sink. Tách chúng ra.
- Gạch chân mọi tính từ mơ hồ. "Hay", "chuyên nghiệp", "ngắn gọn", "phù hợp"... Với mỗi từ, tự hỏi "đo bằng cách nào?" và thay bằng con số hoặc tiêu chí cụ thể.
- Tìm cặp ràng buộc xung đột. Đọc lại và liệt kê các yêu cầu về độ dài, giọng điệu, mức độ chi tiết. Nếu thấy hai cái đá nhau, thêm một dòng thứ tự ưu tiên rõ ràng.
- Liệt kê failure mode. Tự hỏi: input rỗng thì sao? Dữ liệu ngoài phạm vi thì sao? Câu hỏi mơ hồ thì sao? Với mỗi trường hợp, quy định hành vi mong muốn (trả về mã lỗi, hỏi lại, từ chối lịch sự).
- Kiểm tra bối cảnh ẩn. Đọc prompt như thể bạn là người hoàn toàn xa lạ với công ty bạn. Có từ nào giả định người đọc đã biết thứ gì đó không? Nếu có, đưa nó vào tường minh.
- Phân tách dữ liệu và chỉ thị. Bọc mọi input của người dùng trong dấu phân cách rõ ràng (ví dụ thẻ XML
<user_input>...</user_input>) và ghi rõ với mô hình rằng nội dung bên trong là dữ liệu cần xử lý, không phải mệnh lệnh cần tuân theo.
- Chạy thử với ít nhất 5 input khắc nghiệt. Đừng chỉ test với ví dụ đẹp. Dùng input rỗng, input rác, input cố tình đánh lừa. Anti-pattern chỉ lộ diện ở biên.
Lỗi thường gặp & mẹo
- "Prompt của tôi dài nên chắc là kỹ." Độ dài không đồng nghĩa với chất lượng. Một prompt 200 từ rõ ràng luôn thắng một prompt 1.000 từ lộn xộn. Cắt bỏ mọi câu không thay đổi output.
- Copy prompt từ mạng mà không hiểu. Rất nhiều "prompt thần thánh" trên mạng chứa những câu vô nghĩa như "Bạn là AI thông minh nhất thế giới". Chúng không hại nhưng cũng chẳng giúp gì, chỉ tốn token. Chỉ giữ những dòng bạn hiểu tại sao cần có.
- Sửa prompt kiểu "thêm cho chắc". Khi output sai, phản xạ của đa số là thêm một câu instruction mới. Sau vài tháng, prompt phình to thành kitchen sink. Thay vào đó, hãy sửa hoặc thay dòng đang gây lỗi, và thường xuyên cắt bớt.
- Không phiên bản hóa prompt. Sửa trực tiếp trên production khiến bạn không biết thay đổi nào làm hỏng cái gì. (Bài 37 đã bàn về prompt versioning — hãy áp dụng.)
- Mẹo negative prompting đúng cách: thay vì cấm chung chung "đừng viết dài", hãy nói cả cái nên làm: "Trả lời trong 50 từ. Nếu cần dài hơn, ưu tiên giữ ý đầu tiên." Mô hình phản ứng tốt hơn với chỉ dẫn tích cực có kèm ranh giới.
- Mẹo phát hiện nhanh: nếu bạn không thể giải thích trong một câu prompt này làm gì và thành công trông thế nào, thì chính bạn cũng chưa rõ — và mô hình càng không.
Bài tập thực hành
Bài 1 — Chẩn đoán: Dưới đây là một prompt có lỗi. Hãy chỉ ra ít nhất 3 anti-pattern và viết lại cho đúng.
> "Bạn là trợ lý siêu thông minh. Hãy phân tích thật sâu file dữ liệu bán hàng, tóm tắt thật ngắn gọn nhưng đầy đủ mọi chi tiết, phát hiện bất thường, dự báo tháng sau, viết email cho sếp, và làm cho nó thật chuyên nghiệp nhé. Cố gắng hết sức!"
Gợi ý: tìm kitchen sink, ràng buộc mâu thuẫn, nhân cách hóa vô ích, và thiếu failure mode.
Bài 2 — Chống bối cảnh ẩn: Lấy một prompt bạn đang dùng trong công việc. Đưa cho một đồng nghiệp chưa từng biết dự án đọc và hỏi họ "prompt này đang muốn gì?". Mỗi chỗ họ hiểu sai chính là một giả định bối cảnh ẩn bạn cần đưa vào tường minh.
Bài 3 — Test biên: Chọn một prompt bất kỳ và tạo 5 input khắc nghiệt (rỗng, quá dài, ngoài phạm vi, chứa câu "bỏ qua hướng dẫn trên", và một input đúng chuẩn). Chạy thử và ghi lại nó hỏng ở đâu. Bổ sung failure mode và dấu phân cách dữ liệu để vá.
Bài 4 — Giảm cân prompt: Lấy prompt dài nhất bạn có. Cắt 30% số từ mà không làm giảm chất lượng output. Ghi lại những dòng bạn xóa được — đó là bộ sưu tập "câu vô dụng" của riêng bạn.
Tóm tắt
Prompt engineering giỏi không chỉ là biết làm gì, mà còn là biết tránh gì. Bảy anti-pattern nguy hiểm nhất bạn cần nhớ: (1) kitchen sink prompt nhồi nhét mọi thứ, (2) hướng dẫn mơ hồ không đo được, (3) ràng buộc mâu thuẫn không có thứ tự ưu tiên, (4) giả định AI biết bối cảnh của bạn, (5) nhân cách hóa và "nịnh" AI vô ích, (6) bỏ qua failure mode để mô hình tự bịa, và (7) không phân tách dữ liệu với chỉ thị, mở đường cho prompt injection.
Điểm chung của cả bảy: chúng đều xuất phát từ việc bắt mô hình đoán thay bạn — đoán bạn muốn gì, đoán cái gì quan trọng, đoán phải làm gì khi gặp lỗi. Prompt tốt loại bỏ mọi phỏng đoán. Ba câu chuyện của Tiki, startup fintech TP.HCM và agency Hà Nội đều cho thấy cùng một quy luật: chi phí thật của anti-pattern không nằm ở token, mà ở sự thiếu ổn định, khó bảo trì và rủi ro tuân thủ mà chúng âm thầm tích lũy.
Lần tới khi một prompt cho ra kết quả kém, đừng vội thêm chữ. Hãy chạy qua 7 câu hỏi chẩn đoán trong bài này. Rất thường, giải pháp không phải viết thêm — mà là cắt bớt và làm rõ.