There is a clear line between deterministic code and what comes out of an LLM. One of the bigger problems there is that LLMs have a rather large "context window" they operate from, and human operators don't readily "grok" how the content of that context window enhances and degrades the desirability of the outputs you get.
I almost exclusively use LLMs to generate, review and test deterministic code, then use that code for "the real tasks" with zero LLM involvement. The output of LLMs is still unpredictable, but once they've "said" something valuable, recognizing and using that value is a deterministic activity.