# Temperature (/academy/temperature)



Every reply is a sequence of bets.

The model ranks the next [token](/academy/token). First place is the safe brick. Tenth place is the weird one. **Temperature** is the rule for how often it skips first place.

That is not a personality. It is not "smarter" or "dumber." It is a sampling setting on [inference](/academy/inference). Most chat apps hide it and pick a middle value. The moment you call an [API](/academy/api) yourself, you own the rule.

Treat it as a product decision:

* **Low** when the next machine has to parse the output. Code you will run. A [JSON](/academy/json) body an [agent](/academy/agent) will hand to a tool. Classification, extraction, "what is the exact flag." Ask twice, you want the same receipt twice.
* **Higher** when you are generating options on purpose. Ten app names. Five taglines. A pile of demo scripts. You *want* second place to win sometimes, or every reroll is the same beige sentence.

People blame "the model" for two opposite sins. It repeats itself — the rule was too strict. It invents a package name — the rule was loose, and [hallucination](/academy/hallucination) got a bigger door. Turning the number is not a fix for missing docs. It is a fix for how adventurous the next brick is.

Do not tune by feel on demo day. Change one setting, keep a tiny [eval](/academy/eval) set — five prompts you already know — and look at whether the answers got more usable or just louder.

**What this unlocks**

You stop treating every bad output as a model problem. Sometimes the [stack](/academy/stack) is fine and the sampling rule does not match the job: a clerk for the payload, a wanderer for the brainstorm.
