Anthropic's Claude 3.7 Sonnet introduced extended thinking — the model emits an explicit reasoning trace before its final answer, configurable against a token budget — as a step-change in multi-step reasoning quality. Integrating it cleanly required reshaping the platform's message-content handling : Claude returns content as an array of typed blocks (text, thinking, tool-use), where OpenAI returns flat strings, and each provider has incompatible per-message metadata.
The platform's message-content layer is refactored to be model-agnostic. Application code talks to a typed message model ; the per-provider adapter translates to and from the wire format. Claude's thinking blocks, OpenAI's reasoning tokens and Vertex's grounding metadata each surface through their own adapter without leaking into the model-neutral surface above.
- Extended thinking. Reasoning-budget knob is configurable per call ; the platform's session log captures the thinking trace for audit while presenting only the final answer to the user surface by default.
- Configuration-only switch. Production deployments switch the active model from OpenAI to Claude (or vice versa) through a single configuration change ; no call-site code touches Anthropic-specific or OpenAI-specific symbols.
- Tool-use parity. Claude's tool-use blocks and OpenAI's function-calls surface through the same agent contract ; the agent layer above does not see the provider difference.