Why AI Gives Different Answers to the Same Question
Four different things cause the same symptom, and they need different fixes. Here is how to tell which one you have, and why even temperature zero will not make it perfectly repeatable.
AI gives different answers to the same question because the model picks each word by sampling from a probability distribution rather than choosing the single most likely option every time. Ask twice, get two draws. That is the main cause, but it is not the only one, and the four causes need different fixes. Diagnosing which you have takes about two minutes and saves you from turning a setting that was never the problem.
The four causes, and how to tell them apart
What you observe | Likely cause | The fix |
|---|---|---|
Same prompt, same session, different wording each time | Sampling | Lower temperature |
Wildly different answers, sometimes off-topic | Temperature set too high | Lower temperature |
Different answers in a new chat vs an old one | Context differs | Control what goes in the prompt |
Answers changed since last month, prompt unchanged | Model was updated | Pin a model version |
Run the test in a fresh session with nothing else in the context, twice, and compare. If the two answers say the same thing in different words, that is sampling and it is normal. If they say different things, look at context or the model version before you touch any settings.
Cause one: sampling is how the model works
A language model does not retrieve an answer. At every step it produces a probability distribution over the next token, and then something picks one. That picker usually samples rather than always taking the top option, which is why the same prompt yields "The main advantage is speed" one time and "Speed is the primary benefit" the next.
This is deliberate. Always taking the highest-probability token produces text that is flatter and more repetitive than you would expect, and it gets stuck in loops on longer outputs. The variation is a feature for anything creative and a nuisance for anything you need to parse.
The dial is temperature, which flattens or sharpens that distribution before sampling. Lower means more predictable, higher means more varied. For extraction, classification and structured output, set it near zero. For drafting and ideation, leave it alone.
Cause two: your context is not what you think it is
This is the one people misdiagnose most often, because it does not feel like a variable.
If you ask the same question in a chat where you have been talking for twenty minutes, and again in a fresh window, those are not the same prompt. The first one includes everything above it. Custom instructions, system prompts, uploaded files, retrieved documents and prior turns all sit in the context and all affect the answer.
The tell is that the difference is substantive rather than stylistic. Two samples of the same underlying answer differ in phrasing. Two different contexts produce answers that actually disagree, or that emphasise different things, or where one mentions a constraint the other has never heard of.
The fix is not a setting. It is making the prompt self-contained: put the constraints that matter into the prompt itself rather than relying on something said earlier, and if you are building an application, control the full context you send rather than accumulating a conversation and hoping. That discipline is the substance of prompt engineering more than any clever phrasing is.
Cause three: the model changed
Providers update models. A prompt tuned in March against one version can behave differently in August against another, with nothing on your side having moved. If you are calling an API, pin a specific model version rather than an alias that tracks the latest, and re-test deliberately when you move rather than being moved.
If you are using a chat product rather than an API, you often cannot pin anything, which is worth knowing before you build a business process on top of a chat window.
Cause four: things outside the model
Two smaller causes worth ruling out. If the tool can search the web or read a file, its inputs change between runs even when your prompt does not. And if you are hitting a service that routes between model sizes depending on load or subscription tier, you may not be talking to the same model twice.
Why temperature zero is still not deterministic
Set temperature to 0 and you will get much more consistent output. You will not reliably get identical output, and it is worth knowing why before you build something that assumes otherwise.
At temperature 0 the sampler takes the highest-probability token each time, so the remaining variation comes from underneath: floating-point arithmetic on GPUs is not guaranteed to produce bit-identical results across runs, because operations get batched and ordered differently depending on what else is running. When two candidate tokens are nearly tied in probability, a difference far below any level you care about can flip which one wins, and once one token differs the rest of the output diverges from there.
In practice temperature 0 gets you output that is identical most of the time and occasionally differs in a word. If your system breaks when that happens, the problem is the assumption, not the model.
Getting output you can actually rely on
If you need repeatability, stack these rather than relying on any one:
Temperature at or near 0 for anything mechanical.
A self-contained prompt with no dependence on conversation history.
A pinned model version, not a floating alias.
A constrained output format. Asking for JSON with a defined schema removes most of the surface where variation shows up, because the shape is fixed even when the wording is not.
Validation on your side. Parse the output and check it. For classification, this is the difference between a system that degrades visibly and one that degrades silently.
A seed parameter if your provider offers one. It helps, and it is still best-effort for the reasons above.
FAQ
Is the variation a sign the model is unreliable?
No, it is a sign the model is sampling. Two differently worded answers that agree on substance are working correctly. Two answers that contradict each other are a different problem, and usually a context or prompt-specificity problem rather than a settings one.
Which answer is the right one if I get several?
Often none of them individually. If you genuinely need to know, sample three to five times and look at where they agree. Agreement across samples is a rough confidence signal, and disagreement tells you the question is underspecified or the model does not know.
Does asking the same question repeatedly improve the answer?
It gives you a wider sample, which is useful for exploration. It does not make the model more informed, and regenerating until you get the answer you wanted is a good way to select for the least representative sample it produces.
Why do I get generic answers even at low temperature?
Different problem. Temperature controls variation, not depth. Flat, generic output is usually a prompt specificity issue, covered in prompting without getting generic answers.
How did this land?
About the author

Senior Editor, AI & Product
Cecilia leads the Swarmz editorial desk. She has spent a decade turning complex AI and product topics into writing people actually finish, and she owns the blog's quality bar.


