Every AI agent uses a language model, but not every use of a language model is an agent. The distinction matters for how you design a system.
A chatbot: input in, text out
A basic chatbot takes a message, generates a text response, and stops - it has no ability to affect anything outside the conversation. It cannot check today's weather, query a database, or send an email; it can only talk about those things based on what it already knows.
An agent: given tools and a goal, it acts
An agent is a language model wired up with tools it can call - a weather API, a database query function, a way to send an email - plus a loop that lets it decide which tool to use, look at the result, and decide what to do next, repeating until the goal is done.
# Conceptual shape of an agent loop:
goal = "Find today's weather in a city and email it to the user"
while not task_complete:
next_action = model.decide_next_step(goal, history)
result = execute_tool(next_action)
history.append(result)
Autonomy is a spectrum, not a switch
Real systems sit anywhere on a spectrum: from "AI suggests one tool call, a human approves it" to "AI plans and executes a ten-step task with no human in the loop." Most production agent systems today sit closer to the human-supervised end, especially for anything with real-world consequences like spending money or sending messages.
Why this distinction matters when you are building
If your feature just needs to answer questions from information you provide, a chatbot pattern is simpler, cheaper, and more predictable - use it. Only reach for an agent architecture when the task genuinely requires taking multiple real actions and adapting based on their results, since agents are harder to test, harder to make reliable, and easier to get expensively wrong.