Bỏ qua để đến nội dung

Task – Context – Constraints – Output

Level: L2 — Prompt & Context Engineering (Bài 2/10)

Sau bài này, bạn có thể:

  • Áp dụng khung 4 phần Task – Context – Constraints – Output để viết prompt có chủ đích, thay vì viết theo cảm tính.
  • Phân biệt rõ Task (việc cần làm) và Constraints (ràng buộc khi làm việc đó).
  • Biết vì sao Constraints thường bị bỏ quên nhất trong 4 phần, và hậu quả cụ thể khi bỏ qua nó.
  • Hiểu quan hệ giữa khung 4 phần này và khung 5 thành phần đã học ở bài 9 — không phải 2 hệ thống cạnh tranh nhau.
  • OpenAI dạy khung 3 phần: Task, Context, Output — “constraints” chỉ là 1 chi tiết nêu bên trong Output [S65].
  • Anthropic gộp chung trong nguyên tắc “rõ ràng và trực tiếp”: “nêu cụ thể định dạng và ràng buộc mong muốn cho output” [S37].

Vì sao bài này vẫn tách Constraints riêng: Constraints (điều KHÔNG được làm) là loại thông tin dễ bị quên nhất — vì nó không phải điều bạn “muốn” AI làm (Task), mà là điều bạn muốn AI tránh. Tách thành 1 mục kiểm tra độc lập giảm khả năng bỏ sót.

4 phần: Task — việc cần làm, cho ai, vì sao quan trọng [S65]. Context — thông tin nền/lý do [S65, S37]. Constraints — giới hạn, điều không được làm [S65]. Output — hình thức kết quả mong muốn [S65].

Nhiều prompt thất bại không phải vì thiếu Task hay Context, mà vì thiếu Constraints:

  • Không nêu ràng buộc độ dài → AI trả lời quá dài/ngắn so với nhu cầu thực tế.
  • Không nêu điều “không được làm” → AI có thể đưa kết quả kỹ thuật đúng nhưng vi phạm 1 quy tắc ngầm chưa từng nói ra.
  • Tách Constraints thành mục riêng buộc người viết chủ động nghĩ tới giới hạn trước khi gửi.
  1. Task — theo OpenAI, nói rõ “bạn muốn gì, cho ai, và vì sao việc đó quan trọng” [S65]. Thiếu “vì sao quan trọng” là lỗi phổ biến.
  2. Context — thông tin nền; Anthropic nhấn mạnh giải thích lý do giúp AI “khái quát hoá” tốt hơn [S37] (bài 9, mục 4).
  3. Constraints — cả OpenAI và Anthropic xem đây là 1 dạng thông tin về output [S65, S37], nhưng ở bài này tách riêng để không bị bỏ sót.
  4. Output — hình thức kết quả lý tưởng: vai trò/đối tượng đọc, định dạng cụ thể [S65].

Hình dung 4 phần như 1 tờ đơn đặt hàng: Task = “Tôi muốn đặt món gì”; Context = “Đặt cho dịp gì”; Constraints = “Không cho hải sản, không cay” (mục dị ứng — dễ quên ghi nhưng hậu quả nghiêm trọng nếu bỏ sót); Output = “Giao trước 7h tối, đóng hộp riêng từng món”. Một đơn hàng thiếu mục dị ứng vẫn có vẻ đầy đủ — nhưng hậu quả khi thiếu nó thường nghiêm trọng hơn thiếu các mục khác.

  1. Viết Task: 1 câu nói rõ bạn muốn AI làm gì, cho mục đích gì.
  2. Viết Context: bối cảnh cần thiết.
  3. Dừng lại và tự hỏi riêng về Constraints: có giới hạn độ dài không? Có điều gì AI KHÔNG được làm không?
  4. Viết Output: định dạng, tone, đối tượng đọc mong muốn.
  5. Đọc lại theo golden rule (bài 9) — đặc biệt chú ý Constraints có bị bỏ trống không.
  • Prompt chỉ có Task + Output: “Viết một email xin lỗi khách hàng vì giao hàng trễ. Giọng văn chuyên nghiệp, dài khoảng 150 từ.” → AI có thể tự ý đề xuất tặng mã giảm giá — điều công ty không cho phép nhân viên tự quyết định.
  • Prompt đầy đủ 4 phần (thêm Constraints): “…Không được đề xuất bất kỳ hình thức bồi thường/giảm giá nào.” → tránh được sai sót có thể gây hậu quả thực tế.
TASK: [Bạn muốn AI làm gì, cho mục đích gì]
CONTEXT: [Bối cảnh/lý do việc này quan trọng, dữ liệu nền nếu có]
CONSTRAINTS: [Giới hạn độ dài, điều KHÔNG được làm, phạm vi không được vượt]
OUTPUT: [Định dạng, tone, đối tượng đọc mong muốn cho kết quả]
Task'Tôi muốn đặt món gì'Context'Đặt cho dịp gì'Constraints'Không hải sản, không cay'⚠️Output'Giao trước 7h tối'
Hình 2.2 — 4 thành phần prompt như 1 tờ đơn đặt hàng: Task, Context, Constraints, Output.

Lấy lại prompt bạn đã viết lại ở bài 9. Áp dụng template ở mục 8:

  1. Điền đủ 4 phần Task/Context/Constraints/Output.
  2. Nếu không viết được gì cho ô Constraints, tự hỏi “thực sự không có giới hạn nào, hay tôi chỉ đang quên?”
  3. Gửi prompt đã có Constraints và so sánh với kết quả trước đó.

(Suy luận từ nguyên tắc trong [S37, S65], không phải khảo sát lỗi người dùng đã ghi nhận chính thức.)

  • Gộp Constraints vào Task — dễ khiến người viết quên các ràng buộc khác ngoài điều đã gộp.
  • Coi Constraints là tuỳ chọn — trong khi với tác vụ có rủi ro thực tế, đây thường là phần quan trọng nhất.
  • Nhầm Context và Constraints — Context giải thích vì sao, Constraints quy định không được làm gì.

13. Giới hạn & khi nào KHÔNG nên áp dụng

Phần tiêu đề “13. Giới hạn & khi nào KHÔNG nên áp dụng”
  • Với tác vụ không có rủi ro/ràng buộc thực sự, cố nhét 1 mục Constraints trống là thừa.
  • Khung này không thay thế việc kiểm tra output sau khi AI trả lời — đủ 4 phần đầu vào không đảm bảo output luôn đúng 100%.
  • Không nên áp dụng cứng nhắc đúng thứ tự 4 mục trong văn phong.

Constraints chính là nơi đặt ra giới hạn hành động cho AI trong tình huống rủi ro thực tế — “không được đề xuất bồi thường”, “không được đưa lời khuyên y tế/pháp lý cụ thể”, “không được xác nhận thông tin chưa kiểm chứng như sự thật”. Bỏ qua Constraints trong tình huống có hậu quả thực tế không chỉ là lỗi kỹ thuật mà là rủi ro quản trị thực sự — coi bước 3 ở mục 6 là bắt buộc với mọi prompt liên quan giao tiếp bên ngoài hoặc quyết định có hậu quả.

  1. Luôn dừng lại hỏi riêng về Constraints.
  2. Constraints nên nêu cả “giới hạn định lượng” và “giới hạn hành vi”.
  3. Với tác vụ có hậu quả thực tế, coi Constraints là bắt buộc.
  4. Không nhầm Constraints với Context.
16. Nội dung nâng cao (không bắt buộc)

Ở tầng kỹ thuật (API), một số ràng buộc có thể được ép buộc bằng cơ chế của hệ thống thay vì chỉ dựa vào lời nhắc trong prompt (ví dụ Structured Outputs — bài 13) — đáng tin cậy hơn so với chỉ yêu cầu qua văn bản.

[S37] Prompting best practices, Claude Platform Docs (Anthropic) · [S65] Prompting fundamentals, OpenAI Academy (OpenAI).

2026-07-12. Nội dung khái niệm, ít lỗi thời. Lưu ý minh bạch ở mục 2 (khung 4 phần là cách đặt tên sư phạm) cần giữ nguyên nếu bài này được cập nhật trong tương lai.