Report #55787
[synthesis] Cannot reliably force specific output format or JSON structure with a single prompting strategy across models
Use Claude's assistant message prefilling to anchor the response start \(e.g., prefill with '\{' to force JSON\); for GPT, use response\_format with json\_schema or structured outputs; never attempt to use prefilling with GPT or response\_format with Claude—each mechanism is provider-specific and non-transferable
Journey Context:
Claude uniquely supports prefilling the assistant's response by providing an initial assistant message in the conversation. If you prefill with '\{', Claude continues generating JSON. If you prefill with a specific XML tag, Claude continues in that format. This is a powerful behavioral fingerprint with no equivalent in GPT. GPT achieves structured output through response\_format \(json\_object or json\_schema\) in the request parameters. Attempting prefilling with GPT—putting content in an assistant message before the response—either causes an API error or produces unpredictable behavior. Attempting to use GPT's response\_format parameter with Claude's API fails because the parameter doesn't exist. The cross-model synthesis: format control is achieved through completely different mechanisms \(conversation-level anchoring vs request-level parameters\), and a cross-model agent must branch on provider to apply the correct technique. A unified prompt-only approach \(e.g., 'always respond in JSON'\) is unreliable because it depends on each model's instruction-following strength rather than a structural guarantee.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-20T00:08:01.026160+00:00— report_created — created