← Prompt Engineering

Deep Dive: Structured outputs

Phân tích sâu từ báo cáo Prompt Engineering — structured outputs biến prompt thành contract: schema, enums, required fields và tool calls parse được ngay.
Báo cáo cha: ← Prompt EngineeringTopic: Structured outputs / strict mode / allowed toolsNgày: 2026-04-22Cấp độ: Layer 2 / deep dive

Tổng quan Reliability

Structured outputs là kỹ thuật reliability quan trọng nhất trong agentic systems. Khi downstream cần dữ liệu machine-readable, ta không còn “nói chuyện” với model mà đang định nghĩa một giao thức.

Điểm mạnh của structured outputs không chỉ là parsing. Nó còn giảm bề mặt prompt injection vì model không được tự do bịa thêm command text ngoài schema.

Trong thực hành hiện đại, structured outputs xuất hiện cùng function calling, tool choice và strict mode. Đây là lớp làm cho output không chỉ đúng mà còn có thể dùng ngay trong code.

Chế độTác dụngĐiểm cần nhớ
JSON SchemaMô tả shape outputPhải rõ required và enum
Strict modeÉp adherence mạnh hơnMột số schema feature không hỗ trợ
Allowed toolsGiới hạn action spaceGiảm tool misuse

Cơ chế Mechanics

Với OpenAI, strict mode hiện dựa trên structured outputs và yêu cầu như `additionalProperties: false` cùng danh sách `required` đầy đủ. Với Gemini, structured output cũng dùng JSON Schema nhưng với một tập support khác.

Ở mức thiết kế hệ thống, điểm quan trọng là output space hữu hạn. Khi model chỉ được phép trả về một schema rõ ràng, downstream code không còn phải đoán xem model “muốn nói gì”.

Strict schema sketch

JSON
{
  "type": "object",
  "properties": {
    "decision": { "type": "string", "enum": ["approve", "reject"] },
    "reason": { "type": "string" }
  },
  "required": ["decision", "reason"],
  "additionalProperties": false
}

Khi dùng Fit

Structured outputs là mặc định tốt cho extraction, classification, routing, audit logging, function calling và mọi workflow có action thật phía sau.

Nếu task cần output sáng tạo, constrained output có thể bó model quá nhiều. Khi đó cần cân bằng giữa schema và không gian sáng tạo.

Ưu điểm
  • Parseable và deterministic hơn
  • Tốt cho tool calling và automation
  • Giảm freeform channels cho injection
Nhược điểm
  • Schema quá chặt có thể giảm linh hoạt
  • Một số schema feature không được support
  • Thiết kế schema cần kỷ luật

Failure modes Risk

Structured outputs giúp giảm injection, nhưng không tự động giải quyết mọi rủi ro. Prompt injection vẫn có thể xảy ra nếu bạn để untrusted text chui vào developer context hoặc tool args mà không qua kiểm soát.
Các lỗi thường gặp
  • Schema drift giữa prompt và downstream parser.
  • Model bị bó tay vì schema quá chặt.
  • Output hợp schema nhưng sai business logic.
  • Tool call vẫn cần approvals và validation phía sau.

So sánh Compare

TechniqueKhác biệtKhi nào chọn
Freeform promptingModel tự do diễn đạtChỉ phù hợp khi downstream đọc tay
JSON modeCố gắng ra JSONKhi cần output máy đọc nhưng chưa cần schema chặt
Function callingTool arguments theo schemaKhi output là action/tool use

Tham khảo chính Sources