These three get conflated constantly, and the distinction is mostly about who controls the steps.
**Chatbot:** responds to each message in turn. No goal-directed multi-step autonomy of its own; it answers what you ask. Great for Q&A, support deflection, and conversation.
**Workflow:** a fixed, pre-defined sequence of steps that you, the developer, wired up. An LLM may be one step in it ('summarize this', 'classify that'), but the control flow is hard-coded. Predictable, cheap, easy to test.
**Agent:** the LLM decides the steps dynamically using tools in a loop. Flexible and capable of handling open-ended tasks, but less predictable, harder to test, and more expensive (more model calls).
The practical rule: if you can write the steps down in advance, build a workflow. If the steps genuinely depend on what's discovered along the way, an agent earns its complexity. Our deeper guide covers this tradeoff in production: agents vs workflows: when to use each.
Use a workflow when: you can specify the steps in advance, you want predictable cost and behavior, and the task is the same shape every time.
Use an agent when: the required steps depend on what's discovered mid-task, the input space is open-ended, and dynamic tool use genuinely beats a fixed pipeline.