Skip to content
Insights · AI Agents

Which temperature did that call use?

Name the temperature on the request you stored. A different request can carry another value, and the model does not get to report the number.

Scroll
AI AgentsOct 20, 202612 min readBy Salman Naqvi, Founder & CEO
Which temperature did that call use?

The answer came out strange. Do not send the sentence again, and do not ask the model how random it was, until you can name the temperature on the request you stored, show a different request that carried a different value or that omitted the field, and show that the value was one you set rather than a number the model reported back. If the log does not store the field, write that. A fluent description of randomness is not the request.

This is the sampling field on the request. It is not why the tokens stopped. Name the stop the response carried is stop_reason. A completed turn can have been drawn at any temperature the API accepted, and a turn cut off at the budget does not tell you the temperature. It is not which model answered. Name the model the request hit is the model id. A model id is not a temperature. It is not the token counts. Name the tokens the response billed is usage. A count is not a sampling parameter. It is not the prompt. Which prompt did that request send? is the system text, the messages, and the tools. The bytes you sent are not the temperature beside them. It is not two answers to one question. When one question gets two answers is that pair. Two answers can share one temperature, and one answer can be strange at the default.

None of what follows is a rate for this product, and none of it is legal advice. The ranges below are one vendor's current description of a request field. The correlations below that are a story-writing study on an open model, with human raters at one university. A vendor default is not a creativity score. A story study is not your support queue. Do not ask the model to reconcile them.

Anthropic's Messages reference marks temperature as deprecated. Models released after Claude Opus 4.6 do not support setting it. A value of 1.0 is accepted for backwards compatibility. Any other value is rejected with a 400. The field defaults to 1.0. The documented range is 0.0 to 1.0, minimum 0, maximum 1. Closer to 0.0 is the page's suggestion for analytical or multiple-choice work. Closer to 1.0 is its suggestion for creative and generative work. Even at 0.0, the page says the results will not be fully deterministic. 0.0 is not 1.0. A 400 is not a temperature. An accepted 1.0 is not evidence that the model chose 1.0. It is evidence that the request was allowed to carry the default. The sample request on that page prints temperature 1, beside top_k 5 and top_p 0.7, with max_tokens 1024, model claude-opus-5-5, thinking type adaptive, and a system line dated 2024-06-01. 1 is not 5. 5 is not 0.7. 1024 is not a temperature (Anthropic, Messages).

top_k and top_p are the neighboring fields, and the deprecation is not the same sentence three times. Models released after Claude Opus 4.6 do not accept top_k. Any value is rejected with a 400. The minimum printed is 0. The page does not print a maximum for top_k. Do not borrow temperature's maximum of 1 and call it top_k's. top_p is also deprecated on those models. A value greater than or equal to 0.99 is accepted for backwards compatibility. Any other value is a 400. The range printed is minimum 0, maximum 1. 0.99 is not 1.0. 0.7, which the sample sends, is not 0.99. A sample is not a promise that 0.7 will be accepted on a model that rejects it. 400 on top_k is not 400 on a temperature of 0.5, and neither 400 is a stop reason. The stop reason lives on name the stop the response carried. A rejected request has no stop reason, because it has no successful response.

The paper that tests whether temperature is a creativity knob uses a different scale, on a different model. Max Peeperkorn, Tom Kouwenhoven, Dan Brown, and Anna Jordanous generated stories with Llama 2 Chat 70B, prompted with the words write a story, and reported it in 2024. The temperatures are 0.001, 0.334, 0.667, 1.0, 1.334, 1.667, and 2.0. Seven values. 2.0 is outside the Messages range of 0.0 to 1.0. 0.001 is not 0.0. 1.0 in this list is not proof that a Claude call used 1.0. They set top-k to 50 and disabled the other decoding strategies. 50 is not the sample's top_k of 5. They quantized the model to 6 bits. 6 bits is not a temperature. The model is not Claude. The licence footnote says commercial use is restricted. A licence is not a sampling parameter (Peeperkorn, Kouwenhoven, Brown, and Jordanous, Is Temperature the Creativity Parameter of Large Language Models?).

Two sample sizes sit in that paper, and they are not the seven temperatures. The computational pass generates 100 stories at each of the 7 temperatures. 100 is not 7. The human study generates 5 unique stories at each temperature, at least 300 tokens long, except at 0.001, where the model could produce only one unique story besides the exemplar. The human set is 31 stories. 7 times 5 is 35, which the paper does not print, because the lowest temperature did not yield five. 31 is not 35. 31 is not 100. 300 tokens is not 1024, the sample max_tokens on the other page. 36 participants each judged 5 stories. The paper says each story received at least 5 evaluations. 36 is not 31. 5 evaluations is not 5 stories. The paper does not print 36 times 5. Do not put 180 in a sentence and call it theirs.

The rating scales are four, and one of them runs backwards. Novelty, typicality, and cohesion run from 1, not at all, to 5, completely. Coherence runs from 1, very easy, to 5, very difficult, so a lower coherence score is the more coherent story. Table 1 prints means of 3.12 for novelty, 3.20 for typicality, 3.69 for cohesion, and 2.13 for coherence, with standard deviations 1.17, 0.987, 0.959, and 1.17. 3.69 is not 2.13. 2.13 is a mean on the reversed scale. It is not a temperature. Cronbach's alpha is 0.547, 0.664, 0.596, and 0.749. The mean alpha is 0.639. They call 0.7 the acceptable level, and say 0.639 is just short of it. 0.749, coherence, is the only one of the four at or above 0.7. 0.639 is not 0.7. 0.547 is not 0.749. Participants were told the stories were model-written. They were not told the model, and they were not told the temperatures differed. A rater who does not know the temperature cannot be your log.

The effects they mark are two, and the slopes people quote from the other columns are not temperature. Against temperature, novelty has a slope of 0.308, standard error 0.138, conditional R-squared 0.385, marginal 0.152, starred at p under 0.05. Coherence has 0.240, standard error 0.122, conditional 0.646, marginal 0.283, also starred. Because coherence is reversed, that positive slope is a loss of coherence. 0.308 is not 0.240. 0.385 is not 0.646. A star at p under 0.05 is a significance mark. Do not print it as 5% of the stories, and do not print the slope 0.308 as 30.8%. Typicality's slope is -0.095. Cohesion's is -0.181. Those two are not starred. -0.095 is not 0.308. A different column, perplexity against novelty, prints 0.730. 0.730 is not 0.308. Normalised edit distance against novelty prints 2.01. 2.01 is not the temperature 2.0, and it is not 0.308. Cosine similarity against cohesion prints 2.09. 2.09 is not 2.01. A sentence about edit distance says there is an effect for temperatures between 0.334 and 1.0, and that temperatures above 1.0 do not necessarily add diversity. Between 0.334 and 1.0 is a range. It is not the slope 0.308.

What they conclude is narrower than the knob people buy. They do not find support for temperature as the creativity parameter across their four conditions. Higher temperature, in this study, weakly tracks novelty and moderately tracks incoherence, with no relationship they will stand behind for typicality or cohesion. The computational figures say higher temperature raises the chance of seeing variety in a small sample, and does not show the model reaching a clearly wider region of its embedding. Figure 2 is the 100 stories per temperature. It is not the 31. A weak slope on stories about nothing in particular, from a 70B model quantized to 6 bits, with top-k 50, is not a reason to tell a customer that 0.7 made their answer wrong. 0.7 is the sample on the Messages page. It is not a condition in this paper. The paper's 0.667 is not 0.7.

Do the three proofs on one real call, in the log you actually stored. First, the field. Copy the temperature that went out, or write that the request omitted it, or write that the log does not keep it. If the only number you have is a default you remember, write the memory down as a memory. Do not promote it to a field. Second, the other request. A call that omitted the field, or that sent a value the API rejected, is not this call. A 400 is the rejection. It is not a temperature of 0. Third, the source. The value was on the request you built. It was not a field the model returned as a description of itself. If the only sentence you have is the model's own account of how creative it was, you do not have the proof. You have a story about a parameter.

Three moves feel like the proof and are a second problem. Setting temperature to 0 because a page said lower is more analytical, then sending the new request without storing the new value. You have a second call. You have not shown what the first call used. Quoting 2.0 from a story study as if the Messages range included it. 2.0 is Llama's top setting in that paper. The Messages maximum is 1. Asking the model what temperature it used. It will answer. The answer is not the request. A stop reason you can name, while the temperature is still missing, is name the stop the response carried. end_turn does not imply 1.0, and 1.0 does not imply end_turn.

The shape of a product that generates from a prompt, without that generation being a temperature ledger, is a feed. FeedDrop lets a person generate a video or a meme from a prompt and place it where someone else can remix it. The shape that matters here is a generation you could have logged. That case is not a temperature log. Nothing in the description is a headcount, a duration, or a result figure. If the product stores the prompt and drops the sampling field, you do not have this proof. You have the words, and not the draw.

There is a version of this response where hiring the path is the wrong purchase. Nothing is in production. No model is being called, so there is no field to read. The user sent two questions and got two answers. That is when one question gets two answers, and it is not a temperature. A customer has already seen another customer's data. A sampling parameter does not close a leak. The wrong value was already a write. The field tells you what you asked the sampler to do. It does not undo the row. Or no metric was ever named, so there is nothing a later eval can fail. The questions for that gap are not this page.

When the call is real and the field is not in the log, the missing object is specific. The temperature on that request, a second request that differs or that omits it, and a written line that the model did not choose the number. An AI pilot failed to reach production engagement is for the system that is already in front of customers and cannot yet show those three: audit in the first one to two weeks, finished in 8 to 12 weeks, scoped after the audit, unpaid if the agreed metric does not move, rollout behind a human-review gate. The call you wrote tonight is the kind of case the harness has to include, or the next release will be just as fluent and just as unlogged. The harness is AI evaluation and observability. An AI integration sprint is the shape where the acceptance sentence can require the field on every stored request. If you do not yet know whether the pilot can be saved, a two-week AI readiness assessment hands you the findings either way. Those are the terms on the site. They are not a promise that every strange answer was temperature 2.0, and they are not a rate. 0.308 is one paper's slope on stories. 1.0 is one vendor's accepted default. Neither is your log.

A job still waiting, and the owner a file records, are different objects: which job is still in the queue? and who owns the file they changed. Do not record either on this page. A message id is not a temperature. A CODEOWNERS line is not a sampling parameter.

Before you send the sentence again, do the three proofs and write the field. Name the temperature, or write that it was not stored. Show another request that was not this value. Show that you set it, or that you omitted it, and that the model did not report it. Do not ask the model how random it was, and do not treat a vivid answer as evidence the temperature was high. The prose is what they would have read. The field is the page you can defend.

The thinking budget on that request is a different field from the temperature: which budget did that thinking use?. A sampling value is not a token budget. Do not record the budget on this page.

Questions

You stop sending the sentence again, and you stop asking the model how random it was, until you can name the temperature on the request you stored, show a different request that differs or that omits the field, and show that you set the value rather than the model reporting it. If the log does not store the field, write that.

A published study of Llama 2 stories found a weak slope of 0.308 between temperature and novelty, on a scale that goes up to 2.0. The Messages range is 0.0 to 1.0, and models after Opus 4.6 reject every temperature except 1.0. That slope is not your log, and 2.0 is not a value that range includes.

When nothing is in production, when no model is being called, when you have not logged the request, when a customer already saw another customer's data, when the wrong value was already a write, or when no metric was ever named.

Find this useful? Tell Google to show you more of it.

Let's put AI to work in your business.

A 30-minute call. You bring the workflow or the roadmap — we'll tell you what's feasible, what it costs, and what we'd build first.

Book a call→