beginner
The end of temperature: what the three vendors are removing
Quick answer:
Until a few months ago, temperature was the first thing anyone touched when they wanted steadier output or less flat output. All three vendors have now removed it or ignore it, each in its own way, and none of them replaced it with an equivalent number.
What shipped
Google, 21 July 2026. temperature, top_p and top_k are deprecated with Gemini 3.6 Flash. The API accepts them and ignores them, and will return HTTP 400 in future generations: the rule, in Google's words, applies "to these models and all future Gemini model releases". The Gemini 4 Argon migration checklist, published 13 October, repeats it without qualification: if you supply them, they are ignored. candidate_count is unsupported from Gemini 3 onward.
Anthropic, in two steps. On Claude Opus 4.8, on 28 May 2026, any non-default value of the three parameters starts returning 400. On 21 October, API version 2026-10-21 takes them out of the contract: setting them returns 400. With the Python SDK 1.0, in August, the failure arrives earlier, in the types rather than in the response.
OpenAI, 3 September 2026. GPT-6 Astra does not accept custom temperature or top_p, and does not return logprobs. It has no none effort level either. On the family models that do keep none, temperature and top_p are accepted only at that effort: the moment you set a reasoning level, they have to go.
Three dates, three mechanisms —ignore, delete from the contract, refuse— and one result: the number you used to turn does not turn anything.
What changes about reasoning
Sampling has not gone anywhere: it has moved into the instruction. Google's advice for determinism is literal, define a system instruction with explicit rules for your use case. Anthropic's is to omit the parameters and guide behaviour from the prompt.
The space it left is filled by a different kind of control, effort. Anthropic uses effort with the ladder low, medium, high, xhigh and max. Google uses thinking_level with low, medium and high. OpenAI uses reasoning.effort, without none on Astra. On OpenAI the two controls are tied together: choosing an effort is what takes the sampling knobs away. One dial is left, and it does not regulate what the previous one did. It measures how much the model thinks, not how far it scatters.
The name does not mean the same thing everywhere. Anthropic's effort levels do not measure the same amount of thinking on every model: medium on Opus 5.5 matches or beats high on Opus 5. The name travels, the behaviour does not.
What changes about writing prompts
The rule that replaces the number is written once and holds in all three cases:
text
system_instruction:
Always return three sections in this order: what happened, what it
implies, and what to do on Monday. No preamble. If a fact is missing,
write "no data" in its section instead of softening the sentence.
Flat or scattered output is now a badly written output contract, and that is where it gets fixed.
When the format can be declared on the request, you stop asking for it in prose: structured outputs on Google and Anthropic —plus strict tool use when the output goes through a tool— and the Decisions API on OpenAI, which returns typed answers instead of text you have to parse.
Verbosity has a parameter of its own and it was never temperature. OpenAI documents text.verbosity with low, medium and high.
What does not change is variation. The same prompt still returns different answers: the removal has not made any model deterministic, it has only taken away the dial that let you believe it was.
What you stop doing
- Using sampling as the main lever. It is not deprecated for being dangerous. It is deprecated because the vendor decided control lives somewhere else, and that somewhere is the instruction.
- Saying "raise the temperature" as a fix. Google's own prompting page still recommends it for a fallback response, and on current models it does nothing.
- Teaching it. A guide that opens with
temperature: 0.2teaches a dial that, on the model the reader is using, either does not exist or is ignored. - Assuming a prompt behaves the same on another model or at another effort level. Changing model is not re-tuning the same prompt: it is another prompt, even when the text is identical.
- Leaving the three keys in the request just in case. On Anthropic it is a 400, on Google it is noise, and on OpenAI it is a 400 the moment you set an effort.
Sources
- https://ai.google.dev/gemini-api/docs/whats-new-gemini-3.6
- https://ai.google.dev/gemini-api/docs/latest-model
- https://ai.google.dev/gemini-api/docs/changelog
- https://platform.claude.com/docs/en/release-notes/overview
- https://platform.claude.com/docs/en/about-claude/model-deprecations
- https://developers.openai.com/api/docs/changelog
- https://developers.openai.com/api/docs/guides/reasoning
- https://developers.openai.com/api/docs/guides/latest-model
- https://developers.openai.com/api/docs/guides/decisions
- https://developers.openai.com/api/reference/resources/responses/methods/create
- https://ai.google.dev/gemini-api/docs/prompting-strategies
Summary
Each vendor killed them by a different route —Google ignores them silently, Anthropic returns 400, OpenAI accepts them only at `effort: none`— and that difference decides what breaks when you migrate. What goes is not fine control: it is the belief that a prompt gets tuned by moving numbers.
Ready to create better prompts?
Try our free AI prompt generator and join thousands of users creating better prompts.