We need to talk about how we use AI.

When we hand off our processes to a machine, most of the time, we want it to do the same thing over and over. Until now it’s what computers have more or less always done for us. But generative AI is different.

LLMs are not designed to be consistent. LLMs rely on probabilistic selection of responses based on the prompt you give it. That means there is a high probably they will do something different with each request. They generate a new answer every time you ask for one. That’s pretty cool when we’re chatting with one because it gives you variety. It’s acceptable when generating code or images because there are lots of ways to solve the same problem. It’s terrible when you’re trying to use them to drive a business process where you want consistent behavior.

For a business process, most of the time, we want testable and repeatable solutions. Generative AI is neither of those things.

Trying to Make Machines Understand English

For decades we have tried to get computers to understand natural language. We want to be able to tell the computer, in our regular language, what we wanted it to do. It hasn’t gone well.

There were always two problems:

  1. Natural human languages are imprecise; we miscommunicate with each other all the time.
  2. We want the machine to be consistent and do the right thing every time.

Generative AI has suddenly changed that. We finally have a tool that can react the natural language prompts and take meaningful action. To some extent this fulfills that dream, but people are taking it too far because those two problems still exist.

An old-style cartoon of a man yelling at a computer 'I asked for a recipe for Pie not pi' the computer displays code to estimate pi.
Generated by Gemini

We want computers to be consistent and reliable.

Science fiction examples of AI being inconsistent generally do not end well for the people involved.

Deterministic processes

We invented mechanical and electronic computers to do math. They were employed to replace the humans that did math (also called computers). The whole point of these machines was to reliably give us consistent answers.

The vast majority of the time we want that math to work out the same way every time. I want my tax software to give me the same answer every time I have it calculate my return. I don’t want there to be a 99% chance it did the arithmetic right, I want a 100% chance. That’s what we’re all used to.

Outside of a philosophical debate, we want 1 + 1 = 2 to be the answer every time. There is an extremely high probability that an LLM knows that after the tokens 1, +, 1, and = the next token should be 2. Even so it’s taken several years to get LLMs to do even basic math consistently. While current models are starting to recognize when the prompt requires a deterministic calculation, they still require a massive amount of computer power calculate 1+1 compared to a simple adder logic circuit. That’s computing power users are increasingly paying for.

AI’s Nondeterministic Problem Solving

LLMs, because they are really good at suggesting the next word (well token really), generate vast amounts of text to answer our questions. Often, correctly. But that doesn’t make them the best solution to every problem.

AIs are great when you have natural language inputs, and need to break them down to determine the result – once. But if you want the same answer over and over again, they aren’t good at that. There has been plenty of research looking at this issue including:

The tools aren’t consistent enough for operators to truly be in control of what they generate. That challenge is fundamental to the US copyright office’s choice to refuse to issue copyrights to AI generated work.

I can’t think of a better example of companies trying to make AI behave consistently than Salesforce’s Agent Script. Since the AI can’t really be trusted to be reliable, they created a scripting language to embed in prompts to try to make them less unreliable.

Why does this matter?

We use generative AI to provide answers to questions that weren’t purely language based:

  • What block of code gives me a program to calculate pi?
  • What collection of pixels will give me a picture of a cat?
  • Please create the next killer app so I can retire next week.

They do a remarkably good job at answering those questions, but not repeatedly.

A set of 6 AI generated pictures of cats. They are good pictures but all different.
All cute cat pictures generated by Gemini, but not the same cat or even same pose. On the plus side I can’t copyright this image so it’s all yours to steal and use.

For some reason lots of people have decided that because an LLM can give a passably good answer to a question, we should trust it to be consistent over time.

Instead of having the AI generate static code that solves a problem we decide to ask the AI to re-solve the problem from scratch each time. We create prompts that are crafted to try to get it be consistent. Maybe if we call them “skills” people won’t notice they don’t always work.

Instead of using real security, we tell the LLM not to misbehave. We create prompts that are stored as instructions the LLM must include in each discussion. Hopefully if we call those guardrails people, or the AI, won’t break through them.

Use AI for the natural language processing. Use AI for a chatbot. Don’t use it for a repeatable solution you care about.

What should we do?

If you want the computer to do the same thing over and over, have it write you traditional code. Then run that code

We should use AI as a tool to accelerate our work, not replace existing functional processes. As long as you don’t care about copyrights, AI can help developers write more code, better, and faster. It can generate and edit content allowing us to do the final edits.

Of course if you want to own the results of your work, make sure you do substantive work beyond prompting the AI.

Generative AI is a great tool to help us build reliable automations. It is rarely a good tool for the actual automation.