"AI agent" has become one of those terms that gets applied to everything from a genuinely autonomous multi-step system to a chatbot with a slightly longer system prompt. Here's a definition grounded in what actually distinguishes an agent architecturally, not in marketing language.
Table of Contents
- A Working Definition
- What Separates an Agent from a Chatbot
- The Core Components of an Agent
- A Concrete Example
- Where the Term Gets Overstretched
- Levels of Agentic Autonomy
- When You Actually Need an Agent vs a Simpler System
- FAQs
- Key Takeaways
A Working Definition
An AI agent is a system where an LLM decides its own sequence of actions — which tools to call, in what order, whether to loop back and try again — based on the current state of a task, rather than following a fixed, developer-defined sequence. The defining feature isn't "uses an LLM" (that's true of any LLM-powered feature) or "has memory" (many non-agentic systems have memory) — it's that the control flow itself is determined by the model at runtime, not hardcoded by a developer in advance.
What Separates an Agent from a Chatbot
A chatbot, even a sophisticated one with tool access, typically follows a fixed pattern: receive message, optionally call one tool, respond. An agent, by contrast, can chain multiple tool calls, evaluate intermediate results, and decide whether it needs to take another action before producing a final response — the loop continues until the model itself decides the task is complete, not until a developer-defined number of steps has run.
# Chatbot pattern: fixed, single-step tool use def chatbot_respond(message): if needs_search(message): results = search_tool(message) return llm.invoke(f"Answer using: {results}") return llm.invoke(message) # Agent pattern: the model decides the loop def agent_respond(task): state = {"task": task, "steps": []} while not is_complete(state): action = llm.decide_next_action(state) # model chooses: search, calculate, ask user, or finish result = execute(action) state["steps"].append(result) return state["steps"][-1]
The Core Components of an Agent
- A goal or task description the agent is working toward.
- Tools the model can invoke — search, code execution, database queries, API calls — each with a defined interface the model can reason about.
- State/memory tracking what's happened so far in the current task, so the model's next decision is informed by prior steps.
- A loop with a termination condition — the model needs a way to recognize the task is done (or has failed) and stop, rather than looping indefinitely.
Frameworks like LangGraph (see my multi-agent systems piece) provide structured ways to build this loop with explicit state and conditional branching, rather than hand-rolling it.
A Concrete Example
A genuinely agentic customer support system: given a ticket, the agent might first search a knowledge base, decide the results are insufficient, then query a database for the customer's account history, then decide it needs to escalate to a human, and finally draft a summary for the human agent — all without a developer having pre-scripted that exact sequence for that exact ticket. A non-agentic version of the same feature would have a developer-defined flowchart: if category X, search KB; if not resolved, escalate. The agentic version's sequence emerges from the model's own reasoning about the specific ticket.
Where the Term Gets Overstretched
- A single LLM call with a system prompt calling it "an agent" because it has a persona — no actual decision-making loop is happening.
- A fixed two-step pipeline (retrieve then generate) labeled agentic when it's actually just RAG (see my RAG explainer) with no model-driven branching.
- Marketing materials describing any LLM product as "agentic AI" regardless of whether there's genuine autonomous multi-step decision-making under the hood — this is the most common source of the term's dilution.
Levels of Agentic Autonomy
A useful mental model, roughly ordered by increasing autonomy: tool-augmented response (one tool call, no looping) → planning agent (model creates a plan upfront, then executes it, limited replanning) → fully autonomous agent (model continuously reassesses and can change its plan based on intermediate results, with minimal fixed structure) → multi-agent system (multiple specialized agents collaborating, potentially with a supervisor coordinating them). Most production systems sit at the tool-augmented or planning-agent level — fully autonomous, open-ended agents are still relatively rare in production due to reliability and cost concerns at that level of unconstrained autonomy.
When You Actually Need an Agent vs a Simpler System
If your task has a predictable, small number of steps that a developer can reasonably enumerate in advance, a fixed pipeline is simpler, cheaper, more predictable, and easier to debug than an agent — don't reach for agentic architecture by default. Agents earn their complexity when the actual sequence of steps genuinely can't be predetermined because it depends on information only available mid-task (what a search returns, what a user says next, what an intermediate calculation yields).
FAQs
Is ChatGPT with plugins/tools an AI agent? It has agentic characteristics (the model decides whether and which tool to call), though the degree of autonomous multi-step looping varies by implementation — it sits somewhere on the "tool-augmented" to "planning agent" end of the spectrum depending on the specific feature.
Do I need LangGraph or a similar framework to build an agent? Not strictly — you can hand-roll the loop with plain code, as shown above. Frameworks earn their value once you need more sophisticated state management, branching, or persistence (resuming a paused agent) than a simple while-loop provides.
Are AI agents reliable enough for production use? Depends heavily on the task and the level of autonomy — constrained, tool-augmented agents with clear termination conditions and human review for consequential actions are production-viable today; fully open-ended autonomous agents with no guardrails are riskier and less predictable.
What's the difference between an agent and a workflow automation tool (like Zapier)? Workflow automation tools execute a fixed, developer/user-defined sequence of steps — no model-driven decision-making about what to do next. An agent's defining feature is that an LLM decides the sequence at runtime, not a human predefining it.
Key Takeaways
- The defining feature of an agent is that an LLM determines its own action sequence at runtime, not that it "uses AI" or "has memory."
- Most production systems today sit at the tool-augmented or planning-agent level of autonomy, not fully open-ended autonomous agents.
- Use a fixed pipeline when the steps are predictable in advance — agents earn their complexity only when the sequence genuinely can't be predetermined.
Related Reading
- Multi-Agent Systems with LangGraph: A Practical Introduction
- RAG Explained: When Retrieval Actually Helps
- Prompt Engineering Patterns That Hold Up in Production
Next Steps
Evaluating whether your product actually needs an agentic architecture, or want help scoping one that's production-reliable? Let's talk.