Chain of thought asks the model to reason through a problem before giving an answer.
The instruction can be as short as think step by step.
It works because a model generating one token has one forward pass to do it in.
A hard problem does not fit into one pass, so the answer is a guess dressed as fluent text.
Writing the steps out spreads the work across many passes.
Each step it writes becomes context that the next step is conditioned on.
The model is effectively using its own output as a scratchpad.
Arithmetic, logic puzzles, planning and multi-step word problems benefit most.
Simple lookups gain nothing and are just made slower and more expensive.
Few-shot chain of thought, showing worked reasoning in the examples, is stronger still.
Self-consistency samples several reasonings and takes the majority answer.
The written steps are a plausible account rather than a transcript of the real computation.
A model can produce sound-looking reasoning and then state an answer that does not follow.
So the reasoning is a debugging aid, not a proof.
Reasoning models now do this internally, which is why they are slower and better at hard problems.