Building agents in ChatGPT - so why a platform?
Yes, you can click an agent together in ChatGPT or pick a finished one off the shelf. It works - until it gets serious. This page shows four concrete cases where clicked-together agents break, and which building block explains each one.
The short answer
Yes, you can click an agent together in ChatGPT. You can give it an instruction, drop some files next to it, hook up a few actions and use it. That is not a compromise and not a beginner's path - for a whole class of tasks it is the right solution, and if you are done in an hour, you did nothing wrong.
There is only one thing at the end of that sentence: until it gets serious. Serious doesn't mean "big" here, it means something very concrete - the agent should do the same thing again tomorrow, it should do it while nobody is watching, and if it doesn't, somebody should notice. That is exactly where clicking things together stops carrying the weight, and not because the tool is bad, but because the questions that show up then aren't answered inside the tool at all.
This page tries not to assert that but to show it. Four cases familiar to anyone who has used a clicked-together agent for longer than a week - and for each one, the place on this platform that covers what's missing behind it.
What is genuinely good about it
The concession first, and it is meant seriously.
A custom GPT takes care of all the machinery that sits in the LLM call and the message history: the call, the record, building the context, executing tools. You write an instruction - technically a system prompt - and get a running agent for it. That is an enormous lever, and the same arithmetic holds for a finished agent you set up instead of building. We have one ourselves: Hermes is the reference agent a lot of the material here is demonstrated on.
The price is no surprise either: you don't just get the machinery for free, you get it hidden. As long as everything runs, that is an advantage. It stops being one the moment something doesn't run - because then you need some idea of where to look, and that part doesn't come with it.
Case 1: The agent forgets mid-run what it was supposed to do
The pattern is always the same. At the start the agent sticks to its instruction; twenty minutes into the work it drifts back into small talk, ignores formatting rules and answers the last message instead of the task. No error, no warning - it is simply somewhere else.
The reason isn't a mood, it is arithmetic. The model has no memory; what looks like memory is the message history, which the harness resends in full on every call. That list grows with every tool output, every attached document, every intermediate answer - the context window does not grow with it. At some point the actual instruction sits so far back that it competes with twenty pages of fresh material. What you are seeing is exactly that.
What's missing is called context management: deciding what travels along in each call and what does not. Summarise instead of appending, select instead of dragging everything along, restate the instruction instead of hoping. A clicked-together interface has no switch for this, because it isn't a setting, it is a design decision. It is covered under message history and - as soon as knowledge has to outlast a single run - under memory.
Case 2: A tool call fails and the agent carries on regardless
The second case is the most expensive one, because it doesn't look like a failure. The calendar query times out, the agent gets an empty response - and writes: "Nothing is scheduled for tomorrow." It isn't lying; it was never taught that empty and nothing are two different things. The result is a fluent, factually wrong statement at the head of a chain, and everything after it builds on that.
The place where this gets decided is not the model, it is the harness. The model only proposes a call - it is executed by the code around it, and that code also decides what comes back when it fails: a usable message, an abort, a second attempt with different parameters. An agent that never gets to see the error can't work around it either.
In production this turns into a volume problem: a single tool call almost always succeeds, twenty in a row almost never do, because the rates multiply. 95 percent per step is 36 percent after twenty steps. What you build against that - retries, intermediate checks, tools that return something usable on failure - is covered under tool calling in production. And everything the agent must not do in the first place belongs to guardrails.
Case 3: The same prompt returns something different today than yesterday
You change one line in the instruction because one case went badly. Afterwards that case goes better. Whether the other seven still work you don't know - you didn't look at them. Two weeks later a model is updated in the background, and the same instruction behaves differently. Nobody noticed, because there is nothing that could notice.
That is the difference between trying things and measuring them. An agent whose behaviour cannot be reproduced is not a reliable agent, it is a gamble with a good hit rate. Reproducibility starts at the LLM call - temperature, stop words and model version are settings, not constants of nature - and ends with a fixed set of test cases you run after every change. How to compare models and setups without fooling yourself is covered under benchmarks; what such a measurement looks like in practice you can play through on a single variable in the input-format lab.
Case 4: It runs with three documents and collapses at three hundred
The demo is convincing: three PDFs uploaded, questions asked, every answer lands. With three hundred documents the same agent answers more slowly, more expensively and worse - it cites the wrong paper, misses the right one and suddenly seems dumber than before.
With three documents everything simply fits into the context at once. Selection isn't a job then, it doesn't arise. With three hundred, selection is the only job: which five excerpts travel along for this one question? That is memory - search, selection, placement in the prompt - and it is the point where an upload turns into a system.
The same holds for tools instead of documents. Out of two hundred available capabilities the model only sees the ones you show it, and the outputs of the rest flood its context. Why selection is the actual construction work here is covered under tiny agents and the compression boundary.
The difference in one sentence
Clicked-together agents are good at working once. Everything beyond that - again tomorrow, unattended, demonstrably, with more material than in the demo - hangs on decisions made outside the tool: what travels along in the context? What happens when something fails? How do we notice it got worse? What must the agent never do?
That is four questions, not forty. They have names, they have known answers, and they are precisely the material this platform lays out in three blocks: the harness, everything that stands next to it, and what it all runs on.
Where to start
Not with a framework, and not by throwing your custom GPT away. Keep it - from here on it is your benchmark.
The cheapest first step is to see the machinery once yourself: a single LLM call, then a message history around it, then one tool and a loop. After that you read every finished product for what it is - a collection of defaults for exactly the questions above.
The fundamentals of every building block are free to read, without an account, and start at fifteen minutes. If you want to come in one step earlier: What is an AI agent? answers the question before this one - what an agent even is and which parts it is made of. You can build all of it along real code in the tutorials.
Every building block at a glance.
Each part has its own page, with fundamentals for everyone, experiments for members and deep dives for Pro. The entry point is part one of Block I.
- The LLM CallOne request, one response - the raw building block everything else grows from. And the key insight right at the start: the brain is not inside the agent. It's at the other end of the line.
- Message HistoryAfter every answer we hang up - the next call starts from zero. Context only exists because we read the full transcript aloud at the start of every call.
- System Promptsoul.md - who am I today? Personality, role and rules as the very first message: how an agent gets its identity.
- Tools & LoopThe LLM can only talk - acting is the harness's job. Tool definitions, execution and routing: this is where the agent loop emerges, and the language model becomes an agent.
- GuardrailsThe agent's house rules: what it must never do, how errors are caught - and why boundaries aren't distrust, they're architecture.
- MemoryAn agent never remembers - it re-sends. How information gets into the context at all, what travels once per session versus once per request, and when that justifies a service of its own next to the agent.
- SidecarsWhat sits at the other end of a tool: a stateless service next to the agent that offers one capability and keeps nothing once it has answered. Why that is its own container rather than a function inside the agent process.
- Tool calling in productionTool calls work in the prototype and break in production - not because of the model but because of six translations in between. What goes wrong, why it is so hard to see, and what you build against it.
- Tiny Agents and the Compression BoundaryTwo hundred tools do not fit into any context - and the tool list is the cheaper of the two problems. Why dynamic filtering falls short, and what a compression boundary does instead.
- Guardrails in productionThe house rules inside the harness are the first defence - but the harness is a party: it executes what the model says. In production a second control plane therefore sits outside it. What it sees, what it prevents, what it can only prove.
- How an LLM worksAt the other end of the line sits no knowledge and no plan - just a machine guessing the next token. Why exactly that kind of guessing is enough to translate, program and argue is the founding question of Block III.
- The model landscapeThere is no such thing as "the LLM" - there are hundreds of models, in every size, open and closed. The good news: your harness stays the same. Only the number it dials changes.
- What's inside a model download"Running it locally" means: a folder with a few gigabytes in it. Which file does what - and why the smallest one of them, the chat template, decides whether your model answers or stutters.
- Inference enginesA model file is just a bag of numbers. Turning it into an API that answers your call is the job of the inference engine - the record player that plays the record.
- HardwareWhy does everyone talk about graphics cards when LLMs come up? Because memory is the hard limit: it decides which models you can even choose - and what every answer costs.
- BenchmarksEvery week a new model "beats" all the others. Benchmarks turn that noise into numbers - useful for rough sorting, dangerous when trusted blindly.
Prefer to go in order, or straight to the code? Both routes cover the same ground.