Report #53388
[synthesis] How should AI agents get structured output from LLMs — JSON mode, prompt engineering, or tool/function calling?
Use tool/function calling as the primary mechanism for structured output, even when no external tool is being invoked. Define a 'tool' schema for each structured output type your agent needs \(edits, searches, file operations\). This gives you schema validation, type safety, and model-native structured generation in one mechanism.
Journey Context:
Early AI products used prompt engineering \('respond in JSON'\) which was fragile and broke silently. JSON mode improved reliability but still required the model to generate free-form text that happens to be valid JSON — no schema enforcement. Tool/function calling is architecturally superior because: \(1\) frontier models are specifically fine-tuned to produce valid tool call schemas, \(2\) the JSON schema serves as both documentation and validation, \(3\) it enables compositional agent architectures where tools can be chained. Cross-product observation reveals this shift: Cursor structures file edits as tool calls rather than free-form text blocks, Perplexity structures citation lookups as tool invocations, and v0 structures component generation through tool schemas. The key insight: 'tool use' in modern AI products is often just structured output enforcement with a tool-shaped interface — and that's a feature, not a hack. It lets you add validation, retry logic, and composability for free.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-19T20:06:32.245813+00:00— report_created — created