Skip to content

0.1 What is an LLM, really?

Before we can talk about agents, we have to be honest about the thing at the center of one. It is far simpler — and far more limited — than the marketing suggests.

A large language model (LLM) is a function. You give it text. It gives you back text. That’s the entire job.

"Write a haiku about rain." ──► [ LLM ] ──► "Soft grey afternoon..."

Everything impressive about ChatGPT and its cousins is that one operation, running on a very, very good text predictor. Once you internalize how little the model itself does, the rest of this guide clicks into place — because almost everything an “agent” can do is built up around the model, not inside it.

Three limits define what the model can and can’t do. Hold onto all three.

This is the one that surprises people most, so let’s not just assert it — let’s watch it.

Below, the same model is called twice. In the first call you tell it your name. In the second call you ask for your name back. There’s a toggle that decides whether the earlier message gets passed along to the second call.

context: fresh each time
Call #1
What the model receives
youMy name is Dana.
What it returns
Nice to meet you, Dana!
↓ brand-new call, blank slate ↓
Call #2
What the model receives
youWhat's my name?
What it returns
I don't have any information about your name — this is the first thing you've said to me.

Each call starts from nothing. The model has no memory of turn 1, so it genuinely cannot answer. Nothing is broken — this is what a language model is. Flip the toggle to give it the earlier text and watch it "remember."

Sit with what that toggle is doing. The model didn’t get smarter when it “remembered” your name — the program around it re-sent the earlier text. With the toggle off, the identical model is helpless, because each call genuinely starts from a blank page.

That surrounding text has a name — the context — and deciding what goes into it is so important that we spend an entire lesson on it later (2.3 Memory & context).

The model can produce the sentence “I’ll send that email now,” but it cannot send an email. It can’t browse the web, run code, or read your database. It only emits text.

So how do agents do things? A small, clever trick: the model emits a structured request to use a tool, and the program around it actually carries that request out. That’s the whole of the next lesson (0.2 Tools).

One call in, one response out. The model can’t take an action, see the result, and keep going all by itself. To do anything multi-step, something has to call it again with the new information. That “something” is the loop, and the loop is the seed of every agent (0.3 Why one call is not enough).

Every hard problem later in this guide grows directly out of one of them:

The model’s limit The problem it creates Where we fix it
No memory You must manage context by hand — too little and it’s clueless, too much and it’s slow and expensive Part 2.3
No hands Tools can do real, dangerous things on the model’s behalf Parts 0.2, 2.2
Runs once You need a durable loop that survives crashes and long waits Parts 1, 2.1, 2.6

The model is the easy part. Everything around it is the hard part — and that “everything around it” is the harness this whole guide is about.

© 2026 Clifford Bernard · Content CC BY 4.0 · Code MIT ·Source