{"slug": "effort-not-temperature-the-new-control-knob-for-reasoning-models", "title": "Effort, Not Temperature: The New Control Knob for Reasoning Models", "summary": "Anthropic's Claude Opus 5 and Sonnet 5 reject any non-default value for temperature, top_p, or top_k with a 400 error, a behavior in place since Opus 4.7, replacing the sampling parameter with output_config.effort. Effort controls how many tokens a model spends across the whole response — thinking, text, and tool calls — on a scale of low, medium, high (default), xhigh, and max, while OpenAI's reasoning models use reasoning.effort with levels from none/minimal through xhigh/max. Anthropic states effort is \"a behavioral signal, not a strict token budget,\" and OpenAI's docs call it \"a tuning knob, not the primary way to recover quality.", "body_md": "# Effort, Not Temperature: The New Control Knob for Reasoning Models\n\nSend `temperature` to Claude Opus 5 or Sonnet 5 and you get a 400 error. Not a warning — a rejection. Setting `temperature`, `top_p`, or `top_k` to any non-default value [returns an error on these models](https://platform.claude.com/docs/en/models/opus-5/migration-guide), same as it’s done since Opus 4.7. The parameter that shaped a decade of LLM tuning is gone from Anthropic’s newest models. In its place: `effort`.\n\n## What temperature actually did\n\nTemperature controlled randomness in next-token sampling. Low (near 0) made the model pick the highest-probability token almost every time — deterministic, repetitive, safe. High (near 1, sometimes 2) flattened the distribution, letting lower-probability tokens win more often — varied, occasionally brilliant, sometimes garbage. It was a dial for *how much the model gambled on each word*.\n\nThat made sense for chat and creative writing. It never made much sense for reasoning — inject noise into a chain of logical steps and you get wandering, not creativity.\n\n## What effort controls instead\n\n[`output_config.effort`](https://platform.claude.com/docs/en/build-with-claude/effort) on Claude, [`reasoning.effort`](https://developers.openai.com/api/docs/guides/reasoning) on OpenAI’s reasoning models — neither touches randomness. Effort controls how many tokens the model spends across the *whole* response: thinking, text, tool calls. Anthropic’s scale: `low` → `medium` → `high` (default) → `xhigh` → `max`. OpenAI’s: `none`/` minimal` → `low` → `medium` → `high` → `xhigh`/` max`, model-dependent. Push it down for a cheap classification call; push it up for agentic coding where getting it right beats getting it fast. (If you use Claude Code, [`/effort ultracode`](https://outofcontext.dev/blog/dynamic-workflows-in-claude-code-explained/) sets this same parameter to `xhigh` — on top of turning on automatic workflow selection.)\n\nAnthropic is explicit that effort is “a behavioral signal, not a strict token budget” — at low effort Claude still thinks on hard problems, just less. Thoroughness and randomness were never the same axis; effort just makes that separation explicit where temperature used to blur it. (Worth noting: removing temperature doesn’t buy determinism either way — even at `temperature: 0` on older models, Anthropic never guaranteed identical output for identical input.)\n\n## Why the swap happened\n\nReasoning models generate a structured thinking trace before the final answer. Sampling noise in that trace doesn’t produce creativity — it produces reasoning that wanders or drops a step. OpenAI’s own docs frame it plainly: treat effort “as a tuning knob, not the primary way to recover quality” — it’s not a replacement for a better prompt, it’s a cost/depth control layered on top of one.\n\n## Which one you need\n\nOn a reasoning-tier model — Opus 5, Sonnet 5, GPT-5.5 — you’re setting `effort`, not `temperature`. On older or non-reasoning models, or for classification where sampling diversity matters, temperature is still there and still works the way it always did.\n\n**The rule of thumb:** temperature was a knob for *how the model writes*. Effort is a knob for *how hard it thinks*. If you’re still setting temperature on a reasoning model out of habit, that’s the first thing to fix.", "url": "https://wpnews.pro/news/effort-not-temperature-the-new-control-knob-for-reasoning-models", "canonical_source": "https://outofcontext.dev/blog/effort-not-temperature/", "published_at": "2026-09-16 00:00:00+00:00", "updated_at": "2026-09-16 20:22:53.472883+00:00", "lang": "en", "topics": ["large-language-models", "ai-products", "ai-tools", "ai-agents", "developer-tools"], "entities": ["Anthropic", "Claude Opus 5", "Claude Sonnet 5", "Claude Opus 4.7", "OpenAI", "GPT-5.5", "Claude Code"], "alternates": {"html": "https://wpnews.pro/news/effort-not-temperature-the-new-control-knob-for-reasoning-models", "markdown": "https://wpnews.pro/news/effort-not-temperature-the-new-control-knob-for-reasoning-models.md", "text": "https://wpnews.pro/news/effort-not-temperature-the-new-control-knob-for-reasoning-models.txt", "jsonld": "https://wpnews.pro/news/effort-not-temperature-the-new-control-knob-for-reasoning-models.jsonld"}}