The most consequential design decision after "is this a Claude task?" is who controls the flow: your code, or the model. Anthropic's vocabulary is worth using precisely. The augmented LLM is the building block: a model enhanced with retrieval, tools and memory. Workflows are systems where LLMs and tools are orchestrated through predefined code paths. Agents are systems where the LLM dynamically directs its own process and tool usage. Scenario questions describe a task and ask for the pattern; the defensible answer is normally the simplest pattern that meets the success criteria, with the reason stated.
The ladder of autonomy
| Pattern | Who decides the next step | Fits when | What you pay |
|---|---|---|---|
| Single call | You (there is one step) | The answer follows from the input: classify, extract, summarise, draft | Lowest cost and latency |
| Augmented call | Your code fetches context, or the model picks a tool within a turn | One logical step that needs outside knowledge or an action | Extra round trip per tool call |
| Workflow | Your code, along a predefined path | Steps are known in advance; you need predictability and per-step testing | More calls, more latency, no adaptivity |
| Agent | The model, in a loop | Steps cannot be predicted or hardcoded and you can trust its judgement | More tokens, latency and variance; needs guardrails |
| Multi-agent | A model orchestrating other models | Covered in lesson 2.4 | Highest |
Anthropic's guidance is to start with simple prompts, optimise them with evaluation, and add multi-step agentic systems only when simpler solutions fall short, because agentic systems trade latency and cost for task performance. Treat every step up the ladder as a cost you must justify with eval results.
When a single augmented call is enough
If you already know what to fetch, fetch it in code and put it in the context. The account record for the authenticated user, the ticket text, the top retrieved passages: none of these needs a loop. Let the model choose tools only when what to fetch depends on the request. Anthropic's tool-use documentation is explicit that tool use does not fit when the model can answer from training alone, when the interaction is one-shot Q&A with no side effects, or when tool-call latency would dominate a trivial response; every tool call is at least one extra round trip.
Memory belongs here too. The memory tool lets Claude store and retrieve information across conversations, but it is executed client-side by your application against storage you control. A single call that consults memory is still an augmented call; it becomes an agent only when the model keeps steering a multi-step process. Structured extraction, classification and summarisation with schema-constrained output are the archetypal single-call tasks.
When a workflow beats an agent
Choose a workflow when you can write the steps down before seeing the input. Anthropic describes five recurring workflow shapes: prompt chaining, routing, parallelization (sectioning and voting), orchestrator-workers and evaluator-optimizer. Lesson 2.5 covers chaining, routing, sectioning and plan-then-execute in depth, and lesson 2.4 covers orchestration. What matters for pattern choice is what a workflow gives you:
- Controllability. The path is the same every run, so behaviour is consistent and auditable.
- Testability. Each step has its own input, output and eval, and a failure points to a step.
- Predictable cost and latency. The number of calls is bounded by your code.
The price is rigidity: a workflow cannot change course when step 2 uncovers something unexpected. Also separate the pattern from the application shape. Independent items with no latency need (nightly re-tagging of a ticket archive) suit the Message Batches API, which the documentation prices at 50% less with most batches finishing within an hour and a 24-hour expiry. Batching is a delivery choice for independent single calls or per-item workflows, not a substitute for an agent, and it is the wrong choice for a user waiting on a reply. One product routinely mixes shapes: synchronous chat, a background agentic task, and a nightly batch job.
Common exam distractor
Three distractors recur. "Use an agent because the task is complex." Complexity is not the test; unpredictability of the steps is. A long but fixed procedure is a workflow. "Use an agent for thousands of independent items." Items that do not depend on each other need no loop; a batch of single calls is simpler, cheaper and more reliable. "Use the Batches API because it is cheaper" for anything a person is waiting on. The opposite error also exists: forcing a rigid pipeline onto open-ended investigation where the next step depends on what the last one found.
When an agent is warranted
Anthropic describes agents as suited to open-ended problems where it is difficult or impossible to predict the number of steps and you cannot hardcode a path, where you have some trust in the model's decision-making, and in trusted environments, with extensive testing in sandboxes and appropriate guardrails. Turn that into architect checks before you approve one:
- Ground-truth feedback. Does each step return something real (tool output, test results, a record) that lets the agent detect it is wrong? Without it, errors compound silently.
- Bounded blast radius. Are actions reversible or scoped by least privilege?
- Economics. Anthropic's research-system write-up reports that agents typically use about four times the tokens of chat interactions. Is the value per task high enough?
- Bounds you can enforce. A maximum number of turns and a spend cap. The Agent SDK exposes a per-agent turn limit and a query-level budget option for exactly this.
- An evaluation plan that grades outcomes, not just steps (Domain 3).
Framework choice is a separate, smaller decision. Anthropic advises starting with direct API calls because many patterns take a few lines and frameworks add abstraction that can hide prompts and responses; if you adopt one, such as the Claude Agent SDK, understand what it does underneath. The SDK earns its place when you need its loop, built-in tools and subagent support rather than code you would otherwise own and debug.
Key concept: pattern follows control flow
Ask in order: (1) Is there more than one model step? If not, use a single or augmented call. (2) Can the steps be written down in advance? If yes, use a workflow. (3) Are the items independent and is nobody waiting? If yes, batch them. (4) Only if the path genuinely cannot be predicted, and you can bound and verify the loop, use an agent. State the trade-off you accepted: what you paid in cost, latency or variance, and what you got in adaptability.
Worked comparison
One team, one week, three requests. (1) "Answer an account question within two seconds": a single augmented call with the account record fetched in code, streamed. (2) "Re-tag every ticket from last year under the new taxonomy": independent items with no latency need, so a batch of single structured-output calls. (3) "Investigate this production incident across three services": each query depends on what the last one returned and the step count is unknown, so a bounded agent with read-only tools. Same model family, three architectures, because the requirements chose the shape.