| > I would say [whether nondeterminism is bad] is unambiguously defined by the problem you're solving. Sure. You gave an example where it can work. Another example is something like a PCB or chip layout engine. That particular domain (layout) is NP-complete. You'll never have an exhaustive brute force search for the optimal layout, but... You can subsequently easily check whether the produced layout meets all your acceptance criteria or not. Another example that successfully utilizes non-determinism for good outcomes is the application of genetic algorithms to things like antenna design. This works because (a) you have a relatively cheap fitness test; and (b) as with real evolution, the mix of combining working designs and randomly introducing mutations often eventually produces outstanding results. Presumably, if you applied genetic algorithm techniques to, e.g., creating your LLM prompts, you could also get good results, but that would probably quickly get expensive in terms of tokens. So we're left with people just semi-randomly modifying prompts in order to try to tweak results. When it works, it can be amazing. When it doesn't work, it's like a brick wall. I like your "embarrassingly nondeterministic" term, but I somewhat disagree with: > A "bug" then would be considered "weak accuracy" not "crash" or "incorrect behavior", When a lawyer asks an LLM for citations of cases that support his position, he is arguably doing something stupid, because embedding an assertion such as "Show me cases which support X" is just asking for hallucinatory trouble with many current LLMs. Nonetheless, I submit that hallucinations are, by definition, "incorrect behavior" and not merely "weak accuracy." Now, nondeterminism could certainly be useful to the lawyer, in that it could help an LLM make connections that LexisNexis might not have in their database. So asking an LLM for help with legal issues is theoretically not an insane thing to do, but the results need to be checked very carefully. |
Chip design, etc would go to the latter category which is actually a huge space for innovation regardless of how you do it, while I was focusing more on the former which I think a lot of discussion seems to be concerned about.
Now if you are "running" your "generated code" that's where people will have strong opinions because it conflates the two completely different processes in the worst way possible.