Chapter CStructured outputs & JSON modePage 6 of 8

Structured outputs & JSON mode

Evaluate with evidence

Structured outputs becomes useful when you can predict its behavior, measure it, and name its limits.

~12 minEvaluation

Before you start

Why this matters

Define “good” for Structured outputs with one quality metric and one operational metric. Avoid words such as “better” unless you specify how they are measured.

1Learn the idea

Read

Build an evaluation that can disagree

Use these measures: Measure parse success, schema-valid rate, field-level precision and recall, enum validity, business-rule pass rate, refusal rate, repair attempts, latency, and downstream execution errors. Test missing, ambiguous, adversarial, and oversized inputs.

An evaluation set should represent the actual decision, including easy cases, common cases, rare costly cases, and adversarial or malformed inputs. Freeze a test set before tuning. If examples repeatedly influence prompt, threshold, or architecture choices, move them into a development set and obtain a fresh test set. Report sample count and uncertainty; a 95% score on 20 examples means only one observed miss and says little about rare failures.

Pair offline quality with online operations. A component can score well offline and fail under concurrency, stale data, changed users, or dependency outages. Slice results by relevant dimensions rather than trusting one average. Always compare with a simple baseline: deterministic rules, keyword search, a smaller model, or the current human workflow.

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

Read the result honestly

For every percentage, report numerator, denominator, and slice. For every latency, report workload and percentile. For every human rating, define the rubric and check agreement on a shared subset. Compare paired outputs on the same examples when possible; this reduces noise from case difficulty. Investigate regressions, not only the aggregate win. Finally, reserve a fresh set for confirmation after tuning. If the candidate misses a hard safety, authorization, or correctness threshold, a higher average score elsewhere does not compensate—the candidate fails the gate.

Checking tutor…

Continue learning · glossary & guides