Structured outputs & JSON mode
Build the mental model
Structured outputs becomes useful when you can predict its behavior, measure it, and name its limits.
1Try it yourself
Playground
Structured output lab
JSON schema when code consumes the answer — free text when humans read it.
App parses user tier from response
Before you start
Why this matters
Before reading, write a one-sentence prediction: if a team misunderstands Structured outputs, what observable result would expose the mistake? Keep the prediction; you will revise it after the worked example.
2Learn the idea
Read
The idea to keep
Structured output constrains a model response to a machine-readable contract such as JSON Schema. It solves syntax and shape problems; it does not guarantee that the values are true, safe, authorized, or semantically consistent.
A reliable beginner model has three boxes: input, transformation, and evidence. The input is what enters the system; the transformation is what the technique actually computes or changes; the evidence is how we learn whether the output works beyond one attractive example. For this topic, the transformation is not magic: The application defines allowed fields, types, enums, required properties, and whether extra properties are forbidden. Some providers constrain token decoding to valid schema paths; others offer JSON mode that guarantees only parseable JSON. The application still parses, validates, applies business rules, and handles refusal or truncation.
The boundary matters. Do not confuse a mechanism with an outcome. A mechanism can make a desired outcome more likely while still failing on a particular case. It also does not erase the need for source checks, permissions, or domain judgment. The practical question is therefore not “Does it work?” but “Under which inputs, constraints, and measurements does it work well enough?”
Read
Apply it to a concrete case
An invoice extractor returns {invoice_id, currency, total_cents, due_date, confidence}. The schema requires integer cents and ISO dates; a business rule checks that line-item cents sum to total_cents before any payment workflow sees it.
The worked number is if 970 of 1,000 outputs parse and 930 pass the schema, parse rate = 97% but end-to-end schema-valid rate = 93%; report both. State the unit and denominator whenever you report it. A percentage without a denominator can conceal a tiny sample; a latency without a percentile can conceal slow users; a similarity score without a labeled task can conceal irrelevant neighbors. Compare the observed value with a threshold chosen before seeing the final test result.
Now test the tempting shortcut. Suppose the team optimizes only the most visible metric. The result may look better while the system becomes less trustworthy. The reason is concrete: Strict schemas simplify downstream code but can make partial answers harder. Large nested schemas consume tokens and reduce model reliability. Retries can repair transient failures but may duplicate side effects unless generation and execution are separate. This is why the decision record must include both the intended gain and the tolerated regression. If the tolerated regression is unknown, the change is not ready for a consequential workflow.
Read
Decision rules
- Prefer a measured baseline over a persuasive demo.
- Keep versions, inputs, and thresholds reproducible.
- Separate syntactic success from semantic correctness and authorization.
- Escalate or abstain when evidence falls outside the contract.
- Re-evaluate when data, traffic, models, providers, or user goals change.
These rules turn the topic into an engineering decision rather than a slogan. They also make disagreement productive: another person can challenge the assumptions, rerun the evaluation, and reach a documented conclusion.
Read
Test the boundary of the model
Create one near-example and one counterexample. The near-example should differ from the scenario in only one important way; the counterexample should look similar while requiring a different technique. For each, label the input, the transformation that actually occurs, and the evidence you would accept. This exercise prevents the topic name from becoming an all-purpose explanation. If you cannot say what would falsify your mental model, it is still a story rather than a model. End with one sentence beginning “This technique does not guarantee…” and make that limitation observable.