Dataset
Repeatability of an LLM step at temperature 0
360 raw model responses, 12 inputs reused from the three corpora already published here, 3 models, 10 repetitions each. Test conducted on 2026-08-25.
This page describes one dataset, published in full. It is the raw material behind our measurement of what temperature 0 actually guarantees: 12 inputs, 3 models, 10 repetitions of every pair, and the 360 responses those models actually returned.
Everything on this page comes from that one run. Nothing is estimated.
What it measures, and what it does not prove
It measures one thing precisely: whether the same input, sent to the same model ten times at temperature 0 with an identical instruction, comes back as the same answer. And then, on the pairs where it does not, whether anything in the output would tell a workflow that something moved.
It is the first dataset published here that does not measure correctness. The three before it asked whether the model was right. This one asks whether it is repeatable, which is a different property and, as the figures show, an independent one.
What it does not prove, stated plainly, because a dataset quoted without its limits does more harm than no dataset at all:
- One day, one hour, one provider. The 360 calls went through OpenRouter on 2026-08-25. Nothing here says what the same models return in a month.
- 12 inputs, four per output shape. A rate computed on 12 cells has a wide margin. It is an order of magnitude, not a constant.
- Level 1 inputs only, the clean level of the three source corpora, the most favourable of the four available.
- The inputs come from corpora built by script, with fixed seeds, declared as constructed in their own protocols. No real invoice, no real address book, no real meeting.
- Nothing about long contexts. All three corpora fit comfortably inside the context window of all three models.
- The classification of silent versus visible depends on the validation we assume. Ours checks keys, types, and for the binary task that each group holds at least two identifiers. A richer validation would see more.
The inputs are reused, and here is what that means
Nothing was created for this test. The 12 inputs are the first four items of each of the three corpora already published on this site, taken at degradation level 1, without a draw. The selection is deterministic and replays identically. The instructions are copied word for word from the original tests: changing one would measure something other than what those tests measured.
That is a deliberate trade and it cuts both ways. What it buys: the ground truth already exists, already published, already contested if anyone wishes to. What it costs: the perimeter is exactly the perimeter of the earlier tests, and inherits their limits along with their data.
This dataset has no seed of its own, because it generates nothing. Its
reproducibility rests on the seeds of the three source corpora, which are
20260810 for the invoices, 20260817 for the address books and 20260818 for
the meetings. Regenerate those three, take the first four items of each at
degradation level 1, and you hold the exact 12 inputs used here.
The three source corpora give three output shapes, which is the variable under test: closed (7 invoice fields, size known in advance), binary (group the duplicates in an address book, a decision), and open (list the action items in meeting notes, free length).
Test conducted on 2026-08-25. The calls were run by the automated testing pipeline of this site: the input builder, the model calls and the analysis are scripts, and all of them are in the archive below.
Raw figures
Stability by comparison level
| Comparison level | Stable cells out of 36 | Share |
|---|---|---|
whole, notes included |
19 | 52.8 % |
payload, notes excluded |
24 | 66.7 % |
| semantic, order ignored | 27 | 75.0 % |
By output shape, payload level
| Shape | Stable cells | Mean variants | Max variants | Silent divergences |
|---|---|---|---|---|
| closed | 12 / 12 | 1.00 | 1 | 0 |
| binary | 7 / 12 | 1.75 | 5 | 5 |
| open | 5 / 12 | 2.08 | 6 | 7 |
By model, payload level
| Model | closed | binary | open | overall | Silent divergences |
|---|---|---|---|---|---|
| anthropic/claude-haiku-4.5 | 4/4 | 4/4 | 4/4 | 12/12 | 0 |
| openai/gpt-4o-mini | 4/4 | 2/4 | 1/4 | 7/12 | 5 |
| google/gemini-2.5-flash-lite | 4/4 | 1/4 | 0/4 | 5/12 | 7 |
Visible against silent
| Count | |
|---|---|
| Calls made | 360 |
| Calls that failed structural validation | 0 |
| Cells that diverged | 12 |
| of which visible to a schema check | 0 |
| of which silent | 12 |
What a single trial is worth
Computed on the 24 cells whose ground truth is cheap and uncontroversial, closed and binary. The open shape is not scored for correctness here.
| Overall | closed | binary | |
|---|---|---|---|
| Cells right on 10 of 10 | 16 / 24 | 12 / 12 | 4 / 12 |
| Cells right on 0 of 10 | 7 / 24 | 0 | 7 / 12 |
| Cells partially right | 1 / 24 | 0 | 1 / 12 |
| P(cell reliable given one random right trial) | 0.947 | 1.000 | 0.816 |
Total measured cost of the 360 calls: 0.247 USD.
What the archive contains
Six files, 697994 bytes uncompressed. The inventory is here so you know what you are downloading before you download it.
| File | What it holds | Size |
|---|---|---|
entrees.py |
builds the 12 inputs from the three source corpora, with their instructions | 5.4 KiB |
conduire-test.py |
the 360 calls, interpreting nothing | 5.0 KiB |
resultats-bruts.json |
the 360 responses, raw, with the 12 instructions used | 624.4 KiB |
analyser.py |
the whole classification, recomputable without calling a model | 10.5 KiB |
chiffres.json |
the computed figures, plus one line per cell | 24.0 KiB |
PROTOCOLE.md |
the protocol, the reading of the figures, and the limits | 12.3 KiB |
The scripts and their comments are in French, which is the working language behind this site. The API key is read from an environment variable and appears in none of these files.
Rerun it
The analysis calls no model at all, so it replays at zero cost on the raw responses
shipped in the archive. Only conduire-test.py spends anything.
unzip 2026-08-temperature-zero-repeatability.zip
python3 conduire-test.py --sortie resultats-bruts.json --repetitions 10 \
--modeles openai/gpt-4o-mini google/gemini-2.5-flash-lite anthropic/claude-haiku-4.5
python3 analyser.py --brut resultats-bruts.json --sortie chiffres.json--rejouer resultats-bruts.json only recalls the lines marked lu: false, so an
interrupted run resumes without paying twice.
Each raw response is one entry of resultats-bruts.json, exactly as the model
returned it, before any classification. This one is rank 9 of the cell that
diverged on rank 10:
{"modele": "google/gemini-2.5-flash-lite", "entree": "binaire-carnet-01",
"forme": "binaire", "rang": 9, "lu": true, "json_valide": true,
"reponse": {"groups": [["1","10"],["3","8"],["6","9"],["7","11"]],
"notes": "Row 5 and 4 have the same first name and last name, but different companies and emails, suggesting they are different people."}}Verify what you downloaded before you trust it:
shasum -a 256 2026-08-temperature-zero-repeatability.zip
# deda8d0f9829ed98807a39b19619cd42f1fe1111b9e25a477551b41deef493fdHow to cite this dataset
Copy one of the two forms below. The reference points at this page, which is the stable address of this dataset; the archive is what that address serves.
Think AI First (2026). Repeatability of an LLM step at temperature 0, 360 raw responses.
Think AI First. Test conducted 2026-08-25, published 2026-09-01.
https://think-ai-first.com/datasets/temperature-zero-repeatability-2026-08. Licensed CC BY 4.0.@dataset{thinkaifirst2026repeatability,
author = {{Think AI First}},
title = {Repeatability of an LLM step at temperature 0, 360 raw responses},
year = {2026},
publisher = {Think AI First},
url = {https://think-ai-first.com/datasets/temperature-zero-repeatability-2026-08},
note = {Test conducted 2026-08-25. Licensed CC BY 4.0. Archive SHA-256 deda8d0f9829ed98807a39b19619cd42f1fe1111b9e25a477551b41deef493fd}
}Licence and reuse
Published under CC BY 4.0. Use it, quote it, contradict it. If you rerun this and get something different, tell us through the contact form: corrections are published on the article itself, dated.
Download the dataset (zip, 37.5 KiB, 6 files)
Other datasets published here
Each one is a separate test, with its own corpus, its own raw responses and its own archive. This one reuses inputs from all three.
- Invoice extraction by three low cost LLMs, 288 raw responses, test conducted 2026-08-10.
- Contact list deduplication by three low cost LLMs, 96 raw responses, test conducted 2026-08-17.
- Meeting action item extraction by three low cost LLMs, 96 raw responses, test conducted 2026-08-18.
- Four error detection guardrails on 288 invoice extractions, 288 raw self-check responses, test conducted 2026-09-04.
- Price against accuracy on invoice extraction, six models, 864 raw responses with their billed cost, test conducted 2026-09-06.
- Two error detection guardrails on 368 proposed contact merges, 96 raw self-check responses, test conducted 2026-09-12.
- Invoice against purchase order matching by four LLMs, 672 raw decisions, test conducted 2026-09-14.