You’ve probably heard the term AI agent tossed around in tech articles, demos, or product pitches, but what exactly is an AI agent, and when should you use one? If you’ve ever wondered whether your project needs one, you’re not alone.

In this article I will try to simply explain what are AI agents, what problem do they solve & when to use & when to avoid them.

Traditionally our system follows static flow, you define certain rules and conditions - a predefined deterministic workflow and based on input, system decides the flow (Using conditional statements). But whenever your system required some reasoning, some decision making which can’t be coded in flow in advance, then such system would need human decision and inputs and can’t act on its own.

But if we look at our decision making, what enables us to make decisions? Those are

  • Sense & Reasoning (Brain)
  • Memory (Past Experiences)
  • Tools & Data
  • Ability to Act

So if we are able to create a system which has these capabilities, where program can reason and plan, sense the environment, gather the required data, make use of tools to further act on the data then such system can be called as termed as Agentic

So in Agentic context

  • LLM becomes the brain, it can Reason, can create Plan and then Execute (Act)
  • Memory can be very easily be implemented or agenting framework such as LangChain, CrewAI etc provide tools to easily manage memory
  • When it comes to tools, either we can implement custom tools such as URL Fetch tool or calculator tool, git operation tool, these are simple functions specific for some kind of work
  • MCP (Model Context Protocol) made tool integration further easier, it simplifies how tools can be easily created and integrated in Agentic System. Also instead of you implementing custom tools for interaction with common services like Web Search, Gmail, Github etc, you can directly use official MCP servers

So if our system has these capabilities then we can term it as Agentic System but level of Agency (Autonomy) may vary, I will explain that briefly but before that to put it simply -

AI Agent are programs where LLM output controls the system flow or work flow by using tools / data / reasoning capability

Let me explain this with some example, lets say we are designing a system which recommends if you should carry Umbrella today or not. And we have few APIs in our toolkit, such as

getRainForecast(Date,Location) //returns rain forecast as percentage


getRainTrendsForPastDays(NumberOfDays, Location) //returns forecast vs if actually it rained for past N days


getTrafficSituation(Location) //return traffic situation around location


getTrafficTrendsForPastDays(NumberOfDays, Location) //returns traffic trends around location for past N days

In static workflow system you would put some conditional logic such as if chances of rain is greater than 70% then carry umbrella. When user ask for umbrella recommendation, program first calls getRainForecast then based on percentage it recommends.

But in our Agentic System, user can generally ask about anything related to travel plans, traffic, weather etc. Now we don’t want to statically define which tools to be used in context of such queries, we just inform Agent that these are available tools, use it as required.

If you observed this is major difference, we have given our program autonomy to decide the tools to be used and flow to be followed, in context of query and then answer

If user ask “Should I carry umbrella today?”, our Agent will first decide which tool to call, lets say it first decides to call

getRainForecast(23/05/2025,Pune)

It doesn’t just stop here then it calls past 7 days trend

getRainTrendForPastDays(7d, Pune)

And based on the data and past trend it recommends if you should carry Umbrella or not.

Here we are not explicitly defining which tools to call or rain percentage threshold, we are letting Agent to decide that for us. (You may give some hints to agent in prompts on making such decision or let it decide completely)

For simplicity I just shown 2 tools calls, in reality, Agent may decide to call multiple tools, go back and forth, gather all information and then decide.

Agency Level

Coming back to Agency Level, to put it simple it’s autonomy that you are willing to give to your Agents

Low Agency -

You just let Agent decide control flow of your program, this flow or that flow

Medium Agency -

You provide tool list and let Agent decide, which all tools to be called, in which all sequence, but you control the iterations and steps

High Agency -

You provide tool list, other Agentic flow and let agent decide tool calls, steps and iteration or call another Agentic flow

When to build agent?

Now coming to most important part, when to use Agents?

Answer is very simple if system flow is deterministic you don’t need Agents, such system are predictable

But if system flow is non-deterministic, you may use Agentic system, such system may not be highly predictable but can be controlled through prompting.

Hope this was helpful!!