Report #88107
[agent\_craft] Chain-of-Thought causing JSON schema violations in structured output mode
Remove explicit 'think step by step' or 'explain your reasoning' instructions when using constrained decoding \(JSON Mode, Structured Outputs, or Grammar-based sampling\). Instead, include a 'reasoning' or 'explanation' field within the JSON schema itself, or split the operation into two sequential calls: first an unconstrained reasoning call, then a constrained generation call that references the reasoning.
Journey Context:
Counter-intuitively, adding reasoning instructions to improve accuracy breaks structured output guarantees. When using constrained decoding \(JSON mode, grammars\), the model is restricted to valid schema tokens. Chain-of-Thought produces natural language first, violating the schema and causing parse failures. The hard-won pattern is either \(1\) embedding reasoning fields in the schema itself so it's part of the constrained generation, or \(2\) architectural separation: a 'reasoner' call \(unconstrained\) followed by an 'extractor' call \(constrained\). This trades a second latency hit for schema compliance, which is necessary for reliable tool use where schema violations cause runtime exceptions.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-22T06:28:13.131841+00:00— report_created — created