Designing Agentic Systems

Treating a model as an external dependency that is non-deterministic, fallible and costly — and keeping the invariants in code the moment they have to hold.

Designing a System That Has a Model In It

The design question is not how to prompt. It is which decisions you are delegating to a component that will answer differently tomorrow, and which ones you are keeping in code.

Q · Which decisions in this feature am I handing to a non-deterministic component, and which ones must stay deterministic?
The Model Is a Dependency

Non-deterministic, fallible, mutable under you, priced per call and slow. Four of those five you already know how to design around; the fifth is the only genuinely new thing.

Q · What kind of dependency is a language model, and which of my existing techniques still apply to it?
Business Logic Hiding in a Prompt

A rule that exists only in prompt text is hard to test, hard to enforce, hard to audit, and changes silently when someone edits a sentence or upgrades a model.

Q · This rule lives in the prompt. Is that a reasonable place for it, or is it logic that escaped the codebase?
Designing a Tool Interface

An API whose caller will not read the documentation carefully, will pass malformed arguments, and will invent plausible parameters that do not exist. Design for that caller.

Q · What does an interface look like when the caller is capable, confident, and unable to be held to a contract?
Where the Probabilistic System Ends

Four boundaries — workflow, permission, output and fallback — and the argument that each one must be a thing in the code rather than an understanding in someone's head.

Q · Where exactly does my deterministic system stop and the probabilistic one begin, and can a new engineer see that line without being told?