LLM API Comparison 2026: Claude, OpenAI, Gemini for Production
Choosing an LLM API for production is a procurement decision before it is an engineering one: run cost at volume, EU data residency, contractual uptime and how much lock-in you accept. My September 2026 verdict: Claude Sonnet 5 for agent workloads, Mistral when data must stay in the EU by default, Gemini on Google’s EU endpoint when the client already lives on GCP, OpenAI for voice and image pipelines. I run five providers in paid production code; the reasoning follows.
An LLM API comparison for production comes down to four decisions: run cost at volume, EU data residency with zero retention, contractual uptime, and vendor lock-in. As of September 2026, Anthropic, OpenAI and Google all ship 1M-token context; Mistral hosts in the EU by default, and Claude reaches EU regions through Bedrock or Google’s Agent Platform, not the first-party API.
This is an LLM API comparison focused on what actually matters when you ship. Not benchmark leaderboards. Not marketing spec sheets. Features, SDK quality, failure modes, tool-use reliability, and whether the docs will waste your afternoon.
If you landed here looking for price tables, that lives at /guides/llm-api-cost-comparison/. This page is about everything else: is the tool-use schema sane, does the streaming protocol match your UI, does the provider have an EU region, is the SDK going to fight you. The cost question matters, but it only matters after the shortlist.
My short verdict up top: Claude Sonnet 5 is what I build production agents on. OpenAI (gpt-realtime-2.1, gpt-image-2) is what I reach for when I need audio or image generation in the loop. Gemini on Google’s EU endpoint is my pick when the client already lives on GCP. Mistral is my EU-by-default choice when a client’s legal team needs the data to stay in the EU. DeepSeek V4 Flash is where I experiment with reasoning tasks that would cost too much on the others. I will justify each of those below.
If you are choosing a provider for a team, not a project
Standardizing an LLM API across a team is a procurement decision, not a benchmark one. The factors that decide it: cost exposure at volume (where prompt caching dominates the bill), an EU region with zero retention for GDPR-bound data, contractual liability, and how much vendor lock-in you accept. Engineers pick on tool-use ergonomics; the people signing off pick on residency, support, and run cost. Both views matter, and they often point at different defaults. The procurement and compliance angle for DACH teams is in the generative AI for business in DACH guide.
What this comparison covers (and what it doesn’t)
Covered: feature coverage (tool use, structured output, vision, streaming, caching, batch, thinking), SDK quality across TypeScript and Python, rate-limit behavior, observability, enterprise readiness, uptime history, provider strengths and weak spots, a workload-to-provider decision matrix, and multi-provider strategy.
Not covered: exact dollar-per-million-tokens pricing (see the cost guide), leaderboard scores on MMLU or HumanEval (they do not reflect production behavior), image generation model quality beyond “works via API”, and fine-tuning that is not generally available. I also skip Bedrock, Azure OpenAI, and Vertex resale layers except where the direct API story would mislead you.
This is written from a European practitioner perspective. If your client is in Berlin or Paris, the EU region question changes your shortlist before you read a single feature row.
The providers on the table
The five providers I run in production right now, plus three hosted-OSS platforms I use for edge cases:
- Anthropic: Claude Opus 5 (
claude-opus-5, 5 USD / 25 USD per 1M tokens), Claude Sonnet 5 (claude-sonnet-5, 2 USD / 10 USD), Claude Haiku 4.5 (claude-haiku-4-5, 1 USD / 5 USD); 1M context on Opus 5 and Sonnet 5, 200K on Haiku 4.5. Claude Fable 5.1 (claude-fable-5-1, 10 USD / 50 USD) for the hardest long-horizon work. My default for agent workflows, tool use and long-document reasoning. - OpenAI: GPT-5.6 Sol (
gpt-5.6-sol, list 5 USD / 30 USD per 1M tokens, currently billed at a promotional 4 USD / 20 USD at least through 21 November 2026), GPT-5.6 Terra (gpt-5.6-terra, billed 2 USD / 12 USD, catalog lists 2.50 USD / 15 USD) and GPT-5.6 Luna (gpt-5.6-luna, billed 0.20 USD / 1.20 USD, catalog lists 1 USD / 6 USD), all 1.05M context and 128K max output. Responses API is the only primitive for new work: the Assistants API was shut down on 26 August 2026, o3-mini retires on 23 October 2026 and the o3 and o3-pro snapshots on 11 December 2026. GPT-6 Astra is rolling out to enterprises in OpenAI’s Trusted Access Program. - Google: Gemini 3.1 Pro Preview (
gemini-3.1-pro-preview, 1,048,576 input tokens) and the Flash line. The newest Flash models, Gemini 3.8 Flash (GA 2 September 2026), 3.7 Flash and 3.6 Flash, sit on Google’s shorter-availability list and retire 45 days after a replacement ships; Gemini 3.5 Flash and 3.5 Flash-Lite carry the 12-month availability commitment. Gemini 2.5 Pro and 2.5 Flash shut down on 16 October 2026 on the Gemini API (20 October 2026 on the Agent Platform), so any 2.5 dependency needs a migration ticket now. Enterprise access runs through Gemini Enterprise Agent Platform, the renamed Vertex AI. - Mistral: Mistral Medium 3.5 (multimodal, agentic default), Mistral Small 4 (Apache 2.0), Mistral Large 3 (Apache 2.0 open weights), Codestral for completion. Hosted in the EU by default with an explicit US endpoint as the opt-in, which is the reverse of every US provider. Mistral Medium 3.1 retires on 31 August 2026 and Small 3.2 retired on 31 July 2026.
- DeepSeek: DeepSeek V4 Pro (
deepseek-v4-pro, GA 13 August 2026) and DeepSeek V4 Flash (deepseek-v4-flash, public beta since 31 July 2026), both with a switchable thinking mode and low, high and max effort levels, reachable through an OpenAI-compatible and an Anthropic-compatible endpoint. The old deepseek-chat and deepseek-reasoner names stopped working on 24 July 2026. Peak and off-peak pricing since 16 August 2026 means the bill depends on when your cron fires. - Hosted OSS (honorable mention): Groq, Together, Cerebras for running Llama 3.x or Mixtral behind an API with sub-second TTFT.
Models change every quarter. SDKs, error shapes, rate-limit behavior, and provider culture change much slower. That is what I am comparing.
Feature matrix
| Feature | Anthropic | OpenAI | Mistral | DeepSeek | |
|---|---|---|---|---|---|
| Tool use / function calling | Yes, clean schema, parallel | Yes, parallel, strict mode | Yes, sometimes flaky shapes | Yes, basic | Yes, OpenAI-compatible |
| Structured output | Native structured outputs (output_config.format), strict tool schemas | Native response_format with strict JSON schema | Native JSON mode | JSON mode | OpenAI-compatible JSON mode |
| Vision (images) | Yes | Yes | Yes (including video) | No (API), yes on Pixtral | Limited |
| PDF native | Yes (Claude handles PDFs directly) | Via Assistants / file upload | Yes | No | No |
| Streaming | SSE with typed events (delta, message_start, tool_use) | SSE with delta chunks | SSE with candidates | SSE | SSE |
| Extended thinking / reasoning | Yes, adaptive (thinking: { type: "adaptive" }) with effort levels low to max | o3 / o3-mini reasoning mode | Experimental | No | R1 reasoning mode |
| Prompt caching | Yes, cached reads at 10% of input price, explicit cache_control | Automatic, cached input at 10% of input on GPT-5.6 | Yes, context caching with an hourly storage fee | Yes, cached tokens at 10% of input price via prompt_cache_key | Yes, on by default, cache hits metered separately |
| Batch API | Yes, 50% discount | Yes, 50% discount | Yes, 50% discount on the Developer API; batch inference also on Agent Platform | Yes, 50% discount, up to 1M requests per batch | Not documented |
| Fine-tuning (managed) | No (via Bedrock) | Yes | Yes (Vertex) | Yes | No |
| Multi-modal output (audio / images) | No (text and tool output) | Yes (Realtime API, image gen) | Yes (audio, Imagen) | No | No |
| Context window | 1M (Opus 5, Sonnet 5, Sonnet 4.6), 200K on Haiku 4.5 | 1.05M (GPT-5.6 family) | 1,048,576 (Gemini 3.1 Pro Preview, 3.6 Flash) | unverified for Medium 3.5 | unverified for V4 |
| Agent SDK | Claude Agent SDK | Assistants API, Responses API | Vertex Agent Builder | No | No |
A few rows need context.
Tool use quality. Anthropic’s function-calling schema is the cleanest I have used. Parallel tool calls work reliably, the model reliably picks the right tool on ambiguous inputs, and the tool_use content block is easy to parse. OpenAI strict mode (added in late 2024) closed most of the gap, and for pure JSON extraction it’s arguably better. Gemini works but I have had it return tool calls wrapped in text markdown on Flash, which means extra parsing. Mistral’s tool-use is functional but feels v1. DeepSeek uses OpenAI-compatible tool schemas, which is a nice portability story.
Context window vs recall. Theoretical context and useful context are different numbers. Claude’s 200k is the strongest I have measured for recall in the back half of the window. Gemini 1.5 Pro can physically accept 1M tokens but starts losing needle-in-haystack reliably past ~500k in my tests. GPT-4o stops being precise past ~80k. DeepSeek V3 loses coherence around 60k on multi-doc reasoning. If you need 1M and you are OK with some precision loss on recall, Gemini. If you need 200k and you need to trust it, Claude.
Prompt caching economics. Anthropic’s cache is the most explicit: you mark cache_control on the block, reads are 90% cheaper, writes are slightly more expensive. OpenAI auto-caches and auto-discounts recent prefixes (no markup, 50% off reads), which is friendlier but gives you less control. For agent workflows where I want to pin a 50k-token system prompt across many calls, Anthropic wins by a mile on cost and control.
Developer experience
This is the section that gets skipped in benchmark roundups, and it matters more than any leaderboard score.
SDK quality
The Anthropic Python and TypeScript SDKs are the best-engineered LLM SDKs I use. Typed events, clean streaming primitives, proper error classes, and the @anthropic-ai/sdk TS package has excellent DTS coverage. Retries, timeouts, and client-side rate-limit backoff are sensible defaults.
OpenAI’s SDKs are functional and widely supported, but feel like they carry history. Multiple overlapping APIs (Chat Completions, Assistants, Responses) mean you have to pick which surface to build on, and migrations between them are not free. The TS SDK is fine.
Google’s Python SDK is passable. The TypeScript story is messier. There’s @google/generative-ai for the direct API and a separate @google-cloud/vertexai for Vertex, with different ergonomics. I still reach for raw HTTP when debugging Gemini.
Mistral’s SDK is lean and works. Small API surface, easy to get started.
DeepSeek does not ship its own SDK. It is OpenAI-compatible, so you use the OpenAI SDK with a different base URL. This is excellent for portability and terrible for discoverability of DeepSeek-specific features (like the R1 reasoning output format).
Documentation depth
Anthropic’s docs are the clearest for the features they cover. Every example runs as written. Edge cases are documented.
OpenAI’s docs are comprehensive but sprawling. Finding the right page between Chat Completions, Assistants, and Responses takes clicks. The cookbook repo carries most of the real knowledge.
Google’s docs confuse the Gemini API and Vertex AI constantly. Examples work, then don’t, depending on which surface you landed on.
Mistral and DeepSeek both have concise docs. You will run out of documented behavior faster, but what’s there is accurate.
Error messages
Claude errors are machine-parseable and human-readable at the same time. overloaded_error, rate_limit_error, invalid_request_error come with structured error.type fields. Retry logic is trivial.
OpenAI errors are fine but have changed shape over the years. You still see legacy shapes in the wild.
Gemini errors often look like “Internal error” on transient issues, which is useless for root-cause analysis. The error codes exist, but the messages bury them.
Rate limits
This is where OpenAI has hurt me the most. New model rollouts come with unpredictable rate limits, and organization-level tiers can throttle you without warning. Tier upgrades require sustained spend, which creates chicken-and-egg problems for production apps.
Anthropic’s tier system is more predictable. You get documented TPM (tokens per minute) and RPM (requests per minute) limits per tier, visible in the console. Upgrades happen on request with a real human in the loop.
Gemini’s rate limits are generous on the free tier, which is great for experimentation. In production on Vertex, the quota story is sane once you navigate GCP’s project-level quota console.
Observability
Claude’s response object reports usage.input_tokens, usage.output_tokens, usage.cache_creation_input_tokens, and usage.cache_read_input_tokens. You can bill customers and tune caching from production data. Anthropic’s console also has the best admin API for pulling historical usage.
OpenAI returns full usage and logprobs on request. The dashboard shows per-API-key spend. Solid.
Gemini usage reporting works but the dashboard is buried inside GCP billing. Adequate.
Mistral and DeepSeek report basic usage. Nothing fancy.
Enterprise readiness
- SOC 2 Type II: All five have it.
- HIPAA BAA: OpenAI, Anthropic, Google. Not Mistral or DeepSeek.
- EU region / data residency: Anthropic’s own API offers only global or US-pinned inference (US at 1.1x price), and US is the only workspace geo. EU-resident Claude runs through Amazon Bedrock’s EU geo profile (eu.anthropic.claude-sonnet-5, eu.anthropic.claude-opus-5; Frankfurt, Zurich, Stockholm, Milan, Spain, Ireland, London, Paris in the region tables) or Google’s eu multi-region endpoint, which carries a 10% premium over the global endpoint. Mistral hosts in the EU by default. OpenAI: EU residency is a project-level setting for eligible API customers (Europe is selected when the project is created), processed in Europe with zero data retention, priced at a 10% uplift on models released on or after 5 March 2026; Fast mode is not offered for GPT-6 Astra under EU residency. Google: Gemini 3.6 Flash and the newer Flash models are served from the global endpoint and the us or eu multi-region, not from a single German region, so a Frankfurt-only mandate cannot be met with the newest Gemini models. DeepSeek states that it collects, processes and stores personal data in the People’s Republic of China, and that alone disqualifies it for several of my projects.
- Zero retention: OpenAI and Anthropic grant it per organization after approval; OpenAI keeps abuse-monitoring logs for up to 30 days by default. Anthropic excludes its Covered Models (Claude Fable 5.1) from ZDR unless expressly authorized, so a ZDR contract narrows the model list. Mistral grants ZDR on request, at its discretion, on the paid API plan and only for stateless endpoints such as chat completions; batch files, agents and conversations stay out of scope. Google’s ZDR terms were not checked here.
For German mid-sized clients, the short list collapses to Anthropic (EU region), Mistral, and OpenAI Enterprise. Deep dive on this sort of decision lives in /guides/how-to-choose-llm-for-production/.
Production reliability and uptime
I run agents on cron 24/7. I notice outages.
Anthropic: The most visible 2024 incident was a multi-hour degradation on a Sonnet rollout. Status page is honest and timely.
Uptime as of September 2026, measured and contractual. Measured: Claude API 99.5% over the past 90 days (status page, with a multi-model elevated-error incident on 3 September 2026), OpenAI APIs 99.98% for March to June 2026 (status page), Mistral chat completions 99.42% over 90 days. Contractual: Google commits to 99.5% monthly uptime for Gemini online inference on Agent Platform with credits on breach, but only 95% for models on its shorter-availability list, which currently holds Gemini 3.6, 3.7 and 3.8 Flash. OpenAI attaches a 99.9% uptime SLA to Fast mode and Scale Tier for enterprise customers only. Anthropic no longer sells Priority Tier and points guaranteed-capacity requests to sales. Google is the only one of the three with a published pay-as-you-go SLA.
OpenAI: Status page historically under-reports. I have watched the GPT-4 endpoint return 500 for 20 minutes with no status update. Several multi-hour outages in 2024 and early 2025. Capacity crunches on new model launches are routine. That said, the ecosystem is so deep that workarounds (Azure OpenAI failover, for one) exist.
Google: Vertex is solid, the direct Gemini API is noisier. Regional outages on Vertex in 2025 were handled with clear comms.
Mistral: Smaller scale, less to go wrong. I have not seen a production outage in 2025. Sample size is small.
DeepSeek: Rate-limit roulette on the cheap tier. The service is up, but you can hit per-minute walls unpredictably when demand spikes. I would not single-source production traffic on DeepSeek direct.
Failover strategy matters more than any single provider’s uptime. I run a fallback model for every agent: if Sonnet is overloaded, I retry against Haiku, then against GPT-4o via a different account. The migrate OpenAI to Claude guide walks through the adapter pattern that makes this easy.
Where Anthropic wins
Tool-use reliability for multi-step agents. I built my TickTick MCP server on top of Claude because the model reliably chains 3 to 5 tool calls without going off-rails. GPT-4o can do this too, but Claude is more consistent on the first try.
Long-context recall. When I feed Claude a 150k-token customer conversation history and ask for specific facts, it finds them. I do not get the “drifted past the needle” problem.
Prompt caching economics. 90% off cached reads is the discount that moves the business case for agent workflows. If your system prompt is 40k tokens and you call it 1000 times a day, you save hundreds per month. My full notes on this are in claude-api-prompt-caching.
Extended thinking. Adaptive thinking (thinking: { type: "adaptive" }) lets the model decide when and how deeply to reason; depth and spend are steered with an effort level from low to max. The old fixed budget_tokens parameter is rejected on Opus 5 and Sonnet 5, so a hard-coded budget is now a breaking change, not a tuning knob. For hard analytical prompts (legal doc review, multi-variable decisions), this beats chain-of-thought prompting on other providers.
German and multilingual quality. I write a fair amount of client-facing content in German. Claude Opus 4.7 in German reads like a native speaker. GPT-4o is fine. Gemini is noticeably worse on idiom and technical German.
Where OpenAI wins
Multimodal output. The Realtime API (audio in, audio out) has no direct competitor. If you are building a voice agent, OpenAI is the default.
Image generation: OpenAI’s gpt-image-2 replaced DALL-E 3, which was removed from the API on 12 May 2026. Google shut down the Imagen 4 models on 17 August 2026 and moved image generation into native Gemini image models (gemini-3.1-flash-image, gemini-3-pro-image). Both are usable in a pipeline; the decision is price per image and EU processing, not API cleanliness.
Structured output with strict mode. The response_format: { type: "json_schema", json_schema: {...}, strict: true } guarantees schema compliance. Claude now has native structured outputs (output_config.format) and strict tool schemas on every current model, so this is parity rather than an OpenAI win; the older tool-use pattern is documented in claude-api-structured-output.
Ecosystem depth cuts both ways. OpenAI retired the Assistants API on 26 August 2026 and has scheduled reusable prompt objects, the Evals platform and Agent Builder for shutdown on 30 November 2026. Building on provider-hosted primitives means owning their migration calendar; Responses plus Conversations is the surface that remains.
Rate-limit elasticity on established tiers. Once you are past the tier-3 threshold, OpenAI’s throughput at GPT-4o-mini is astonishing.
Where Google wins
1M-token context at production scale. Nobody else ships this. If your pipeline is “ingest a 700-page PDF and answer questions”, Gemini 1.5 Pro is the only real option. I have done this on Vertex for a legal-adjacent client. It works.
Native video input. GPT-4o does images. Gemini takes video directly, sampled at 1fps. For any analysis pipeline where the input is a video file, Gemini is the shortcut.
Gemini 2.0 Flash was shut down on 1 June 2026. The current speed tier is the Flash line up to Gemini 3.8 Flash, served from the global endpoint or the eu multi-region rather than a single European region. Re-measure first-token latency on your own prompts before quoting a number; the 2.0 Flash figure no longer applies.
Vertex AI for enterprise. If the client is already on GCP and you can live with Vertex’s surface-area sprawl, the integration story (IAM, VPC-SC, customer-managed keys, audit logs) is the most complete of the five.
Where Mistral wins
EU provenance. Company headquartered in Paris, servers in the EU, French law. For a German Mittelstand client whose legal team will ask “where does the data live”, Mistral is the shortest path to yes.
Open weights option. Mistral Large 3, Mistral Small 4 and the Ministral 3 models ship under Apache 2.0, so the large model itself can be self-hosted for an air-gapped client, for example on a Hetzner GPU. Codestral is a Premier (proprietary) model and stays API-only. See self-hosted-llm-vs-api for when this trade-off makes sense.
Codestral for code completion. On typing-speed code completion (not full agent tasks), Codestral is very good and has lower latency than GPT-4o.
Pricing on the managed tier is reasonable for the quality level. Not the story here, but worth flagging.
Where DeepSeek wins
Reasoning quality per dollar. R1 on hard math and code reasoning approaches o3-mini quality at a fraction of the cost. For workloads where you want chain-of-thought reasoning on 10,000 inputs and cost would dominate on OpenAI, DeepSeek is the story of 2026.
Open weights on V3 and R1. You can self-host if data residency becomes an issue. Together and DeepInfra both run DeepSeek as a service.
OpenAI-compatible API. Zero-friction evaluation: swap base URL, swap API key, same code.
Caveats stack up fast though. See the weak spots section.
Weak spots for each
Anthropic weak spots. Claude has native structured outputs (output_config.format) and strict tool schemas on every current model, so the strict-mode gap versus OpenAI is closed. Prefill is gone: on Sonnet 4.6, Opus 4.6 and later it returns a 400, which is a migration item for any codebase still relying on it. No image generation. No audio in or out. Managed fine-tuning is Bedrock-only. Smaller model catalog than OpenAI.
OpenAI weak spots. Rate-limit unpredictability on new models is my single biggest source of production anxiety. Trust and contract stability have been questioned repeatedly. Reasoning depth on multi-step agent problems is worse than Claude in my hands. Too many overlapping API surfaces slows SDK choice.
Google weak spots. SDK quality lags the others. Vertex is powerful but complex; the direct Gemini API is cleaner but has fewer features. Documentation fragmentation between the two surfaces. Error messages are often unhelpful. Feature lag on developer-facing primitives (no equivalent to Claude’s prompt cache control blocks).
Mistral weak spots. Smaller ecosystem. Tool-use is less polished than the top three. No native vision on the main API (Pixtral exists separately). No prompt cache, no batch API.
DeepSeek weak spots. Data residency concerns for EU clients. Rate limits on the cheap tier are unpredictable. No batch API. No prompt caching. No fine-tuning. No vision. Smaller SDK and docs. Strong tool, narrow scope.
Which LLM for which workload
This is the decision matrix I use when scoping a new project.
| Workload | Primary | Fallback |
|---|---|---|
| Long-context document analysis (50k to 200k input) | Claude Sonnet 4.6 | Gemini 1.5 Pro |
| Ultra-long context (500k+ input) | Gemini 1.5 Pro | None, this is Gemini’s lane |
| Multi-step agentic reasoning | Claude Sonnet 4.6 with extended thinking | OpenAI o3 |
| Voice / audio pipelines | OpenAI Realtime API | None at this quality |
| Image generation in a workflow | OpenAI gpt-image-2 | Native Gemini image models (gemini-3.1-flash-image) |
| Video input analysis | Gemini 1.5 Pro | None at this quality |
| High-volume classification or extraction | Claude Haiku 4.5 | GPT-4o-mini, Gemini Flash |
| EU-only data residency | Anthropic EU, Mistral | OpenAI Enterprise EU |
| Reasoning-heavy tasks on a tight budget | DeepSeek V4 Flash with thinking enabled | GPT-5.6 Luna |
| Code completion (editor-integrated) | Codestral | GPT-4o-mini |
| Code generation (agent writing code) | Claude Sonnet 4.6 | GPT-4o |
| Open-weights experimentation | Mistral, DeepSeek on Together | Llama 3 on Groq |
| Structured data extraction with strict schema | OpenAI GPT-4o (strict mode) | Claude Sonnet via tool-use |
| Multilingual content (DE, FR, ES) | Claude Opus 4.7 | GPT-4o |
Two honest caveats on this matrix. First, workload categories overlap. “Long-context agent writing code in German” is three rows. In practice, Claude wins two and OpenAI wins one, so Claude gets the job. Second, the cost question can flip the recommendation. If the primary pick is 10x the price of the fallback and your workload is high-volume, reprice. More at /guides/llm-api-cost-comparison/.
Multi-provider strategy
Should you go multi-provider from day one? Usually no. Pick one, ship, and abstract only once you feel pain.
The pain points that justify the abstraction cost:
- Reliability. When a single-provider outage costs you more than a day of engineering on an adapter layer.
- Cost. When a workload splits cleanly between “cheap bulk” (Haiku, GPT-4o-mini, Flash) and “high-reasoning” (Opus, o3), and you want to route per call.
- Compliance. When some customer segments need EU-only and others don’t.
- Feature coverage. When one pipeline needs audio (OpenAI) and another needs 1M context (Gemini) and another needs tool-use reliability (Claude).
The abstraction cost is real. A clean multi-provider adapter forces you to lowest-common-denominator on features (no prompt caching, no extended thinking, no strict mode). You also own the test matrix. My rule: build single-provider first, build the adapter on the second provider when you adopt it, and do not pretend you “support” a provider you have not run under load.
Concrete patterns I have shipped:
- Primary + fallback: Sonnet primary, GPT-4o fallback. One retry path. No feature unification. Good-enough abstraction.
- Workload routing: Haiku for classification, Sonnet for reasoning, Opus for the hardest 2% of prompts. All Anthropic, no adapter needed.
- Cross-provider routing: Claude for agents, OpenAI for voice, Gemini for document-ingest. Three codepaths, no shared abstraction, documented boundaries.
Treating all of this like “just an LLM” behind a single adapter is how you lose the value each provider gives you. See migrate OpenAI to Claude and claude API vs OpenAI for business automation for the migration-specific version of this argument.
Real-world mini-benchmarks (qualitative)
I do not believe in public leaderboards for production selection. I believe in running your actual prompt on each provider and comparing. Here are the tasks I run when I evaluate a new model, and how the current generation performs on them in my hands.
Task 1: Five-step agent workflow. “Read a customer email, classify the intent, query a database via a tool, decide whether to send a reply, draft the reply.” Sonnet 4.6 gets this right first try ~95% of the time. GPT-4o around 88%. Gemini 1.5 Pro around 75% (the tool-call shape goes wrong sometimes). DeepSeek V3 around 70%. Mistral Large around 65%.
Task 2: Long-document QA. 120k-token German legal doc, ten precise factual questions. Claude 9/10. Gemini 1.5 Pro 8/10 but one hallucination. GPT-4o refuses after 80k or returns “I can’t find this” on buried facts. Mistral can’t fit the context.
Task 3: Structured extraction. 50-field JSON from a 2-page invoice. GPT-4o with strict mode 10/10. Claude with tool-use 10/10. Gemini 8/10 with minor type-coercion issues. DeepSeek 7/10. Mistral 8/10.
Task 4: Reasoning from first principles. “Here is a unit economics problem, derive the break-even and sensitivity.” Claude Opus 4.7 with extended thinking produces the cleanest working. o3 is very close and sometimes wins. DeepSeek R1 is surprisingly competitive. GPT-4o without reasoning mode falls behind. Gemini falls behind.
Task 5: Code generation from a tricky spec. “Here is an RFC, implement the auth flow in TypeScript.” Claude Sonnet 4.6 is my daily driver here. GPT-4o is close. The rest are noticeably below.
These are my tasks on my prompts. Run yours. The first 30 minutes of provider comparison should be running your actual prompt against four of them. Leaderboards will not tell you whether your prompt works.
Which would I build on today?
My concrete picks for September 2026, each to be confirmed against your own evals:
Default production agent work: Claude Sonnet 5 (claude-sonnet-5, 2 USD / 10 USD per 1M tokens, 1M context). Native structured outputs and strict tool schemas, cached reads at about 10% of the input price, the cleanest SDK of the five. Opus 5 for the hardest 2% of prompts. The practitioner case is in claude-code-sdk-agents.
High-volume classification and extraction: Claude Haiku 4.5. Price point is right, quality is better than previous Haiku generations, same tool-use schema as Sonnet (so routing is trivial).
Voice and image pipelines: gpt-realtime-2.1 for audio in and out, gpt-image-2 for images. Google (Gemini 3.1 Flash Live, native Gemini image models) and Mistral (Voxtral) now compete, so run the evaluation instead of defaulting.
GCP-bound clients: Gemini 3.1 Pro Preview or Gemini 3.5 Flash on the eu multi-region endpoint when the client needs a 12-month availability commitment; 3.8 Flash if speed matters more than tenure. 1M context is no longer a reason on its own, since Claude and the GPT-5.6 family ship it too.
EU data residency: Claude through Amazon Bedrock’s EU geo profile or Google’s eu endpoint (10% premium), or Mistral Medium 3.5 for EU-by-default with an open-weights option (Large 3, Small 4).
Cost-ceilinged reasoning: DeepSeek V4 Flash with thinking enabled, where processing in China is acceptable. Do not single-source, but do not ignore either.
Open-weights self-host: Mistral Small 4 or Mistral Large 3 (both Apache 2.0) or Llama on Hetzner GPUs when the client needs air-gapped deployment. This lives on the self-hosted LLM vs API guide.
The question is almost never “which LLM is best”. The question is “which LLM is best for this specific workload, given this compliance context, at this cost ceiling, given the team’s familiarity with the SDK.” The decision matrix above is how I answer it without having the same debate twice.
If your project lands on Claude and you are coming from OpenAI, my migrate OpenAI to Claude guide walks through the adapter, error mapping, and tool-use schema translation. If you are still deciding between Claude and GPT specifically, the claude vs ChatGPT for developers comparison gets more granular on the developer ergonomics.
Build small, run your own prompts, measure, and do not let a leaderboard make the decision. The best LLM API for production is the one that passes your evals under your load with your compliance constraints. Everything else is commentary.
Your agents answer from whatever the retriever finds, and too often that is last quarter's truth. I build the context layer they answer and act from: a temporal knowledge graph that keeps every fact with its source and the time it held, reads with each person's own permissions, and writes nothing without a person's approval. On your own tenant, billed by the hour, step by step.