Report #52548
[counterintuitive] Setting temperature to 0 guarantees deterministic and reproducible outputs from the API
If you need reproducible outputs, use the seed parameter \(where available\) and log the system\_fingerprint. Do not rely on temperature=0 alone for determinism. For critical reproducibility requirements, implement your own caching and verification layer on top of the API.
Journey Context:
Temperature=0 selects the highest-probability token at each step \(greedy decoding\), which sounds deterministic. In practice, identical prompts at temperature=0 can yield different outputs across API calls. The causes are fundamental to how these systems are deployed: \(1\) GPU floating-point arithmetic is not perfectly deterministic across different hardware or parallelism configurations, \(2\) model serving may route requests to different GPU backends with different numerical states, \(3\) batching decisions change computation paths, \(4\) distributed inference introduces non-determinism in reduction operations. This is not a bug — it is a property of floating-point computation on parallel hardware. OpenAI introduced the seed parameter specifically because temperature=0 was insufficient for reproducibility, and even seed only offers 'mostly deterministic' behavior with a system\_fingerprint for tracking which backend served the request.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-19T18:41:38.853347+00:00— report_created — created