Standard LLMs answer immediately. Reasoning models deliberate first - running an internal chain-of-thought pass before generating a response. For most developer tasks that deliberation is wasted money. For a specific category of genuinely hard problems, it changes the answer.
The question worth getting right is not "are reasoning models better?" (they are, on hard tasks). It is "should I route this specific request to one?" Because the wrong answer costs 5-20x more and adds 10-30 seconds of latency on every call.
What Reasoning Models Actually Do
A standard LLM receives a prompt and generates tokens left-to-right until the response is complete. A reasoning model inserts a deliberation phase first: an internal chain-of-thought pass where it breaks the problem down, considers approaches, backtracks on dead ends, and builds toward an answer before writing anything visible.
This deliberation runs in a "thinking" token budget - tokens that are generated internally, may be hidden from the user, and are billed separately depending on the provider. The model effectively drafts and discards intermediate reasoning until it arrives at the response it reports out.
The result: substantial gains on tasks requiring multi-step planning, chained logic, or tradeoff analysis. Marginal to zero gains on tasks a fast model can handle in a single pass.
The Four Reasoning Models in 2026
| Model | Provider | Reasoning control | Best benchmark | Input cost |
|---|---|---|---|---|
| o3 / o3-mini | OpenAI | reasoning_effort (low/medium/high) | GPQA Diamond, AIME | $2/M (o3) |
| Claude Opus 4.8 | Anthropic | effort (low/medium/high/xhigh/max) | Expert task preference | $5/M |
| Gemini Deep Think | thinking_level (LOW/MEDIUM/HIGH) | ARC-AGI-2 (77.1%) | $2/M | |
| DeepSeek V4 Flash | DeepSeek | thinking mode toggle | Math, STEM | $0.14/M |
Each exposes a different mechanism to control reasoning depth - and you can tune it per request, not just globally.
API Configuration: Each Provider
OpenAI o3 - reasoning_effort
o3 and o3-mini expose reasoning_effort at the request level with three settings. Note: o4-mini does not support this parameter - it uses a fixed internal reasoning budget and trades the configurability for better benchmark performance at $1.10/M input.
Pythonfrom openai import OpenAI client = OpenAI() response = client.chat.completions.create( model="o3", reasoning_effort="medium", # low | medium | high messages=[ {"role": "user", "content": "Refactor this function to handle concurrent writes safely..."} ] ) print(response.choices[0].message.content) # Reasoning token count is separate from completion tokens print(f"Reasoning tokens: {response.usage.completion_tokens_details.reasoning_tokens}")
What each level buys you:
- low: 1-3 second overhead, small reasoning budget. Good for sorting out ambiguous requirements or light architectural questions.
- medium: 5-10 seconds. Good for code review, multi-file debugging, security analysis on a single module.
- high: 15-30 seconds. Reserve for genuinely hard problems - multi-system architecture decisions, full-codebase security audits, complex migration planning.
Reasoning tokens are billed at the output rate ($8/M for o3, after an 80% price cut in 2026). At high effort, a single call can generate 20,000-100,000 reasoning tokens - that overhead adds up fast even at the new rate. Set medium as your default and escalate to high selectively.
Claude Opus 4.8 - effort (adaptive thinking)
Claude Opus 4.8 (released May 28, 2026) is Anthropic's current flagship reasoning model. budget_tokens is fully removed - only the effort parameter is accepted. The model dynamically decides how much thinking each request needs within your chosen level.
Important change in 4.8: the default effort level is now high, not medium. If you do not set it explicitly, you pay for high-effort reasoning on every call. Always specify a level.
There are now five effort levels: low, medium, high, xhigh, and max. Anthropic recommends xhigh for coding and agentic tasks, high for most intelligence-sensitive work, and stepping down only after measuring quality on your specific evals.
Pythonimport anthropic client = anthropic.Anthropic() response = client.messages.create( model="claude-opus-4-8", max_tokens=16000, # must be large enough for thinking tokens + response thinking={ "type": "enabled", "effort": "xhigh" # low | medium | high | xhigh | max }, messages=[{ "role": "user", "content": "Design the data model and API contract for a multi-tenant billing system with usage-based pricing..." }] ) for block in response.content: if block.type == "thinking": print(f"[Thinking]: {block.thinking[:300]}...") else: print(block.text)
One important detail: pass thinking blocks back unchanged in subsequent turns to preserve reasoning continuity across a multi-turn conversation:
Python# Multi-turn: include thinking blocks in the history so context persists messages = [ {"role": "user", "content": first_question}, {"role": "assistant", "content": response.content}, # includes thinking blocks {"role": "user", "content": follow_up_question}, ]
Dropping the thinking blocks between turns causes the model to restart its reasoning from scratch each turn.
Gemini Deep Think - thinking_level
Gemini 3.1 Pro's Deep Think mode enables parallel hypothesis exploration - the model branches into multiple reasoning paths simultaneously before synthesizing a final response. This is structurally different from o3 or Claude's linear chain-of-thought, and gives Gemini its edge on benchmark tasks requiring novel hypothesis generation.
The API uses a thinking_level parameter with three values. Note: the default is HIGH if you do not set it explicitly, which is the most expensive option - always specify a level.
Pythonfrom google import genai from google.genai import types client = genai.Client() response = client.models.generate_content( model="gemini-3.1-pro", contents="Analyze the architectural trade-offs of event sourcing vs CQRS for a payment processing system handling 50K transactions/second...", config=types.GenerateContentConfig( thinking_config=types.ThinkingConfig( thinking_level="HIGH" # LOW | MEDIUM | HIGH (defaults to HIGH) ) ) ) print(response.text) print(f"Thinking tokens: {response.usage_metadata.thoughts_token_count}")
What each level activates:
- LOW: Light reasoning pass. Faster and cheaper. Good for structured analysis that needs some deliberation but not deep branching.
- MEDIUM: Balanced thinking budget. Use for complex technical questions and architecture discussions.
- HIGH: Activates Deep Think Mini - the full parallel hypothesis exploration mode that achieves 77.1% on ARC-AGI-2. Use for the hardest reasoning tasks. Thinking tokens are billed at the same rate as output tokens ($12/M).
At $2/M input versus Claude Opus 4.8's $5/M, Gemini Deep Think costs 2.5x less per input token and leads on formal reasoning benchmarks - making it the best price-to-reasoning-quality ratio on this list for scientific and multi-step analysis workloads.
DeepSeek V4 Flash / V4 Pro - Cheapest Reasoning Option
DeepSeek restructured its model lineup in mid-2026. The deepseek-reasoner model name (R1) is deprecated as of July 24, 2026. The replacement is DeepSeek V4 Flash at $0.14/M input - which now supports thinking mode natively without switching models.
Pythonfrom openai import OpenAI # DeepSeek uses an OpenAI-compatible API client = OpenAI( api_key="your-deepseek-key", base_url="https://api.deepseek.com/v1" ) # V4 Flash with thinking mode enabled response = client.chat.completions.create( model="deepseek-chat", # V4 Flash - use deepseek-pro for V4 Pro messages=[{"role": "user", "content": your_prompt}], stream=True, extra_body={"thinking": True} # enables reasoning mode ) for chunk in response: delta = chunk.choices[0].delta if hasattr(delta, "reasoning_content") and delta.reasoning_content: print(delta.reasoning_content, end="") # thinking tokens, streamed elif delta.content: print(delta.content, end="") # final response
V4 Flash at $0.14/M input is the cheapest reasoning-capable model available by a wide margin. V4 Pro at $1.74/M input offers higher quality for complex tasks. Both are MIT licensed for self-hosting, and the 32B weights run via Ollama (ollama pull deepseek-v4:32b) with ~20GB VRAM needed on M3 Max or M4 Pro.
Benchmarks Worth Tracking
Benchmark rankings shift frequently. What matters is matching the benchmark to the type of task you are routing:
| Benchmark | What it actually tests | Leader (June 2026) |
|---|---|---|
| ARC-AGI-2 | Novel hypothesis generation, out-of-distribution reasoning | Gemini Deep Think Mini (77.1%) |
| GPQA Diamond | Graduate-level STEM - chemistry, biology, physics | Gemini 3.1 Pro (94.1%) |
| Humanity's Last Exam | Frontier expert knowledge across all domains | Gemini (79.6%) vs Claude (67.6%) |
| SWE-bench Verified | Real-world code bug fixes in actual repos | Grok 4 (75%) / GPT-5.4 (74.9%) |
| Expert task preference | Human evaluator ranking on open-ended professional tasks | Claude Opus 4.8 leads |
The practical read: Gemini Deep Think leads on formal and scientific reasoning benchmarks. Claude Opus 4.8 leads on tasks where human reviewers judge quality - writing, nuanced analysis, multi-step professional work. Neither dominates coding benchmarks, where non-reasoning GPT-5.4 stays competitive at a fraction of the cost.
When to Reach for a Reasoning Model
Reasoning models earn their overhead when a task has one or more of these properties:
Multiple interacting factors. "How should we structure this API to handle rate limiting, auth, versioning, and backward compatibility simultaneously?" - each constraint creates tradeoffs that cascade through the others. A standard model handles each constraint in isolation. A reasoning model traces the interactions.
Chained inference. "Is this database schema consistent with the migration history and all current query patterns?" - getting this right means holding multiple conclusions in working memory and checking them against each other step by step.
Tradeoff weighing. Architecture decisions, technology selection, security reviews - tasks where the right answer requires genuinely evaluating competing considerations and explaining the reasoning.
Adversarial analysis. "Tell me what's wrong with this plan," "find the security issues in this code," "poke holes in this design" - reasoning models are substantially better at generating non-obvious objections than standard models.
When NOT to Use Reasoning Models
Real-time user-facing responses. 15-30 seconds of first-token latency at high effort is hostile to any chat interface. Use standard models for interactive use; invoke reasoning only in background or batch contexts.
Simple factual queries. "What's the syntax for a Python dataclass?" A fast model answers this in under a second. Routing it to o3 at high effort adds 25 seconds and costs 10x more, with no better answer.
Single-pass tasks. Code formatting, renaming, boilerplate generation, summarization - none of these involve tradeoffs or chained reasoning. Reasoning overhead is pure waste.
Hard latency budgets. Reasoning models process their internal token budget before returning anything. If your SLA is under 3 seconds, reasoning mode is off the table regardless of task complexity.
The Routing Pattern That Works in Production
Do not use reasoning models as your default. Use them as an escalation target:
PythonSIMPLE_TASKS = ["format", "rename", "autocomplete", "summarize", "translate"] REASONING_TASKS = ["design", "review", "debug", "security audit", "architecture", "migration"] def route_request(task_type: str, prompt: str) -> str: if task_type in SIMPLE_TASKS: # Fast, cheap - standard model is fine return call_model("gpt-5.4-mini", prompt) elif task_type in REASONING_TASKS: # Reasoning model at medium effort covers 80% of these well return call_reasoning_model("o3", prompt, reasoning_effort="medium") else: # Default to standard, escalate if the result needs more depth result = call_model("gpt-5.4", prompt) if needs_deeper_analysis(result): return call_reasoning_model("o3", prompt, reasoning_effort="high") return result
The real-world pattern most teams land on: a standard model handles 90%+ of requests, a reasoning model handles a targeted 5-10% where complexity justifies the overhead. That 5-10% should be pre-identified by task type or routing signal - not discovered reactively by watching the standard model fail.
Cost and Latency in Practice
| Configuration | First-token latency | Cost vs GPT-5.4 baseline |
|---|---|---|
| GPT-5.4-mini (standard) | 1-3s | 0.3x |
| GPT-5.4 (standard) | 2-4s | 1x baseline |
| DeepSeek V4 Flash (thinking on) | 8-20s | 0.07x |
| Gemini Deep Think HIGH | 10-25s | 0.5-1x* |
| o3 reasoning_effort=low | 4-8s | 1-3x |
| o3 reasoning_effort=medium | 8-15s | 4-8x |
| o3 reasoning_effort=high | 15-30s | 8-20x |
| Claude Opus 4.8 effort=high | 10-20s | 6-8x |
*Gemini thinking tokens are billed at $12/M output rate - actual cost depends on thinking token volume per call.
o3's base input/output price dropped 80% in 2026 ($2/M in, $8/M out), making it far more competitive than it was at launch. The cost multiplier above still grows at high effort because reasoning token volume - not base token rate - drives the bill. DeepSeek V4 Flash at $0.14/M is unbeaten on cost for teams that can use the API or self-host the 32B weights via Ollama. o3 at medium is the practical default for unpredictable complexity.
Related DevToolLab Tools
- JSON Formatter - Validate reasoning API request bodies before sending to avoid malformed requests
- cURL Command Generator - Build and test API calls to o3, Claude, and Gemini reasoning endpoints
- Diff Checker - Compare reasoning model outputs across effort levels to measure quality delta
- JWT Decoder - Decode API tokens without sending credentials to third-party tools
Conclusion
Reasoning models are not universally better - they are better on a specific category of task that justifies trading 10-30 seconds and meaningful extra cost for substantially deeper analysis. On simple tasks they are expensive overhead. On multi-factor tradeoff decisions, architecture reviews, and adversarial analysis they outperform standard models in ways that actually matter.
The practical setup: default to GPT-5.4 or Claude Sonnet for standard work. Route architecture decisions, security reviews, and complex debugging to o3 at medium effort or Claude Opus 4.8 at high. Use Gemini Deep Think at HIGH level when you need science-adjacent reasoning at lower cost per token. Use DeepSeek V4 Flash when you want the cheapest hosted option ($0.14/M) or need to self-host the 32B weights.
Get the routing right and the cost premium becomes a targeted spend on the problems that warrant it, not a default tax on everything.
