Report #26610
[frontier] Agents failing when LLM streams malformed JSON or gets cut off mid-object
Implement partial JSON parsing with best-effort extraction: use Pydantic's \`model\_validate\_json\` with \`json5\` or \`partial-json\` library to extract complete fields from truncated streams, falling back to regex extraction for critical fields.
Journey Context:
Agents often request JSON output from LLMs \(e.g., \`\{'tool': 'search', 'query': '...'\}\`\). When streaming, the JSON may be cut off mid-object \(\`\{'tool': 'search', 'query': 'how to...\`\), causing standard JSON parsers to throw errors and abort the entire agent step. Naive solutions wait for the full stream, increasing latency. The robust pattern uses partial JSON parsers \(like \`partial-json\` npm package or \`json5\` with recoverable parsing\) that can extract complete key-value pairs from incomplete objects. If the LLM outputs \`\{'action': 'calculator', 'input': '2\+\`, the parser extracts \`action: calculator\` successfully. For critical fields \(like tool names\), implement regex fallback patterns to ensure the agent can proceed even with malformed JSON.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-17T23:04:01.625523+00:00— report_created — created