Content moderation không cần dữ liệu huấn luyện

Content moderation không cần dữ liệu huấn luyện

Đa số team nghĩ kiểm duyệt nội dung cần fine-tune riêng. Thực tế, structured prompting với taxonomy rõ ràng đủ đưa bạn vào production nhanh hơn nhiều.

Bạn vừa nhận yêu cầu: "Tuần sau cần có hệ thống lọc nội dung cho phần comment." Phản xạ đầu tiên của đa số team là nghĩ tới dataset gán nhãn, pipeline huấn luyện, rồi tháng sau mới chạy được. Nhưng nếu mình nói bạn có thể dựng một hệ moderation hoạt động tốt chỉ bằng prompt — không training data, không GPU — liệu bạn có thử?

Đây không phải lời hứa hão. Amazon vừa publish benchmark cho thấy Nova 2 Lite chạy content moderation bằng prompting đạt hiệu quả cạnh tranh với các foundation model khác trên ba bộ dữ liệu công khai — và cách tiếp cận này áp dụng được với bất kỳ model nào hỗ trợ structured output.

Sơ đồ minh họa cho bài Content moderation không cần dữ liệu huấn luyện

Sơ đồ tóm tắt ý chính của bài viết.

Đích đến: lọc đúng mà scale được

Mục tiêu không phải "chặn mọi thứ xấu" — đó là ảo tưởng. Mục tiêu thật là: giảm false negative (bỏ sót nội dung vi phạm) xuống mức chấp nhận được, đồng thời giữ false positive (báo nhầm nội dung hợp lệ) đủ thấp để user không bực. Mỗi tổ chức định nghĩa chính sách riêng, nên một classifier đóng gói sẵn hiếm khi khớp hoàn toàn với ngữ cảnh của bạn.

Điểm mấu chốt: prompting cho phép bạn thay đổi chính sách moderation bằng cách sửa prompt — không cần retrain model. Policy thay đổi theo quý? Sửa prompt, deploy lại trong buổi chiều.

Trước khi mở IDE

Dựng structured prompt — ba lớp nền

Nghĩ về content moderation prompt như một bức tranh có lớp: lớp nền (taxonomy), lớp phác thảo (format output), và lớp chi tiết (ví dụ biên). Thiếu lớp nào, bức tranh sẽ thiếu chiều sâu.

Lớp 1 — Taxonomy trong system prompt

Đưa toàn bộ định nghĩa category vào system prompt. Mỗi category cần: tên, mô tả ngắn, và 1–2 ví dụ biên (borderline) để model hiểu ranh giới.

You are a content moderator. Classify the following user message into one of these categories:

1. HARASSMENT: Direct attacks targeting identity, appearance, or disability...
2. SEXUAL_CONTENT: Explicit sexual material not suitable for general audience...
3. VIOLENCE: Graphic descriptions of harm or threats toward individuals...
4. SAFE: Content that does not violate any above policy.

Respond with JSON: {"category": "...", "confidence": 0.0-1.0, "reasoning": "..."}

Lớp 2 — Structured output format

Bắt model trả JSON cố định thay vì free-form text. Lý do: bạn cần parse kết quả tự động, route vào queue review, và tính metric. Free-form text nghe linh hoạt nhưng parse lỗi liên tục ở production.

Lớp 3 — Few-shot với edge case

Thêm 3–5 ví dụ vào prompt, ưu tiên các trường hợp mập mờ. Đừng cho ví dụ quá rõ ràng ("tôi sẽ giết bạn" → VIOLENCE) — model đã biết làm những cái đó. Cho ví dụ khó: châm biếm, ngữ cảnh văn hóa, tiếng lóng.

Ví dụ cụ thể cho team Việt Nam: Comment "thằng này ngu vl" — đây là harassment hay chỉ là ngôn ngữ bình dân? Ranh giới phụ thuộc chính sách sản phẩm của bạn. Đưa case này vào few-shot để model học cách bạn muốn xử lý.

Hai cái bẫy nhìn thấy muộn

Bẫy 1: Taxonomy quá rộng, model đoán bừa. Giả sử team bạn copy nguyên 12 category của MLCommons mà không customize. Kết quả: model phân vân giữa "Non-Violent Crime" và "Defamation" cho cùng một comment, confidence thấp, alert dồn lên hàng đợi review. Giống như đưa cho họa sĩ bảng 200 màu rồi bảo "chọn đúng 1" — càng nhiều lựa chọn mơ hồ, càng khó quyết.

Cách tránh: Bắt đầu với 4–5 category sát nhất với dữ liệu thật của bạn. Mở rộng sau khi đã ổn định precision trên nhóm nhỏ.

Bẫy 2: Không có feedback loop. Bạn deploy prompt, chạy vài tuần, tưởng ổn. Nhưng user adapt — họ dùng tiếng lóng mới, viết tắt, hoặc chèn ký tự đặc biệt. Không có vòng lặp "review sample hàng tuần → cập nhật few-shot" thì accuracy sẽ trôi dần mà bạn không biết.

Ví dụ thực tế: Một team e-commerce ở HCM chạy moderation cho review sản phẩm. Tháng đầu precision tốt. Tháng thứ ba, user bắt đầu dùng emoji và viết tắt để lách filter. Team mất hai tuần mới phát hiện vì không ai kiểm sample output định kỳ.

Khi nào prompt-first không còn đủ

Prompt-based moderation phù hợp khi: policy thay đổi thường xuyên, volume chưa quá lớn (dưới vài triệu request/ngày), và team chưa có labeled dataset đủ lớn.

Chuyển sang fine-tuning khi: bạn cần latency cực thấp (fine-tuned model nhỏ nhanh hơn model lớn + long prompt), hoặc accuracy trên domain cực niche mà few-shot không cover nổi, hoặc chi phí inference cho model lớn bắt đầu vượt budget.

Plot twist: nhiều team fine-tune quá sớm, tốn 2–3 tháng gán nhãn + train, rồi nhận ra policy thay đổi và phải làm lại. Prompt-first cho phép bạn iterate nhanh, ổn định policy trước, rồi fine-tune sau khi đã biết chính xác mình cần gì.

Thứ Hai tới — bắt đầu từ đây

  1. Ngồi 30 phút với team trust & safety (hoặc PM): Viết ra 4–5 category vi phạm cụ thể nhất cho sản phẩm. Đừng copy từ chuẩn nào — dùng ngôn ngữ nội bộ.
  2. Viết prompt đầu tiên theo cấu trúc ba lớp ở trên. Test thủ công với 20 mẫu từ tập test.
  3. Đo precision và recall trên 50+ mẫu. Nếu precision dưới 80% → sửa taxonomy hoặc thêm few-shot edge case.
  4. Deploy async với confidence threshold: trên 0.9 → auto-action, dưới 0.9 → queue cho human review.
  5. Lịch review tuần: mỗi tuần xem 30 mẫu output, cập nhật prompt nếu cần.

Model nào cũng dùng được — Nova, Claude, GPT, Llama self-host. Kỹ thuật prompt là phần portable, model là phần thay được. Đừng khóa mình vào vendor trước khi biết policy ổn định ở đâu.

---

Bụi Wire — nghiện đọc release notes lúc 2 giờ sáng

Nguồn tham khảo