That's how the chain-of-thought approach works. You can make the model do it inline, or you can run the loop yourself, possibly summarising the progress as you go. (Although with prompt caching it's not that important anymore) You can encourage it to print out assumptions/steps/ideas as it goes.
This is probably the truth behind the black magic I’m imagining. You could have it explicitly spit out this process, in which case you would see it’s first rough draft, followed by a “My first paragraph is probably wrong”, followed by a third paragraph where it attempts to fix the first paragraph. There is no outside RAG in this process.
The mumbo jumbo part of all this is that I’ve told it to “hide” this process from the user where it doesn’t explicitly output anything but its final answer, and the accuracy has been just as good (for my use case at least).
:Shrugs:
By asking it to reconsider half its generated response, aren’t I essentially asking it to formulate the second half of its response from the first half internally? I’m bypassing the manual process of feeding in the extra prompt.
We are constantly having to tell the LLM close, but no cigar, iterate again, more or less.