Chỉ prompt "hãy trả JSON" không đảm bảo cú pháp — model vẫn có thể sinh token làm hỏng JSON (thiếu ngoặc, thêm chữ thừa). Constrained decoding (constrained/guided sampling) đảm bảo đầu ra luôn hợp lệ theo schema bằng cách can thiệp ngay tại bước chọn token.
Cơ chế: chuyển schema (JSON Schema / regex / grammar) thành một automaton — thường JSON Schema → context-free grammar (CFG) hoặc finite-state machine. Ở mỗi bước decode, engine xét trạng thái hiện tại của grammar, xác định tập token hợp lệ tiếp theo, rồi mask logits của mọi token không hợp lệ về xác suất 0 trước khi sample. Nhờ vậy chuỗi sinh ra không thể lệch khỏi schema. Grammar được tiền xử lý và cache để overhead độ trễ nhỏ. (CFG biểu đạt được lớp ngôn ngữ rộng hơn FSM/regex.)
So với prompt thuần / API JSON mode:
- Prompt "trả JSON" — dựa vào model tuân thủ, có thể hỏng, cần retry/validate.
- JSON mode cơ bản — ép JSON hợp lệ về cú pháp nhưng không nhất thiết khớp schema cụ thể.
- Structured Outputs / constrained decoding — bảo đảm khớp đúng schema (đủ field, đúng kiểu, đúng enum).
Công cụ: OpenAI Structured Outputs (response_format với JSON Schema), Outlines, XGrammar, llama.cpp GBNF, vLLM guided decoding. Lưu ý: đảm bảo cú pháp hợp lệ không đảm bảo nội dung đúng — vẫn phải validate ngữ nghĩa và eval.