আপনি ChatGPT-কে বললেন, "আগামী শুক্রবার ঢাকা থেকে একটা ফ্লাইট বুক করে দাও" — আর ও কী করল? একটা paragraph লিখে দিল কীভাবে আপনি নিজে বুক করতে পারেন। এই যে "বলে দেওয়া" আর "করে দেওয়ার" মধ্যে ফাঁকটা, ঠিক এইখান থেকেই "AI Agent" শব্দটার জন্ম, আর এই কারণেই এখন প্রতিটা SaaS landing page-এ "agentic" শব্দটা গায়ে লেগে আছে।
একটা AI Agent হলো এমন একটা সিস্টেম, যেটা একটা LLM-কে কেন্দ্র করে বানানো, যে নিজে সিদ্ধান্ত নিতে পারে পরের ধাপে কী করবে, বাইরের কোনো tool বা API call করে সেটা আসলেই execute করতে পারে, ফলাফলটা দেখে আবার নতুন সিদ্ধান্ত নেয় — আর এই loop-টা চলতেই থাকে যতক্ষণ না লক্ষ্য পূরণ হয়। শুধু একটা text response দিয়ে থেমে যাওয়া একটা chatbot, আর loop চালিয়ে যাওয়া একটা agent — পার্থক্যটা মডেলে না, পার্থক্যটা এই loop-এ।
Chatbot আর Agent এক জিনিস না — যদিও প্রায়ই একই মডেল ব্যবহার হয়
আমার প্রথম "chatbot" বানিয়েছিলাম আমার পোর্টফোলিওর contact page-এ — OpenAI API সরাসরি একটা Next.js route-এ বসিয়ে দিয়েছিলাম। প্রশ্ন আসলে উত্তর যায়। কাজ করছিল, কিন্তু প্রতিবার একটাই জিনিস: এক request ঢুকল, এক text বেরোল। যেদিন চাইলাম ও নিজে থেকে check করুক আমি ওই visitor-কে আগে reply দিয়েছি কিনা — কিছুই করার উপায় ছিল না। Model-টার কথা বলা ছাড়া আর কিছু করার ক্ষমতাই ছিল না।
তখন মনে হয়েছিল হয়তো prompt-টাই আরেকটু ভালো লিখলে সমস্যা মিটে যাবে — system prompt-এ লিখে দিয়েছিলাম "তুমি একজন helpful assistant, ভিজিটরের সব প্রশ্নের উত্তর দাও আর প্রয়োজনে follow-up নাও।" কাজ হয়নি, কারণ ভুল জায়গায় সমাধান খুঁজছিলাম। Model যতই ভালো prompt পাক, ওর হাতে যদি database check করার বা email পাঠানোর মতো কোনো real tool-ই না থাকে, তাহলে ও শুধু অনুমান করে গল্প লিখে যাবে — বাস্তবে কিছুই ঘটবে না।
এইটাই পুরো পার্থক্য। একটা chatbot মানে text ঢুকল, text বেরোল — একটা function। একটা agent মানে সেই একই model, কিন্তু একটা loop-এর ভেতরে বসানো, যেটা নিজের বাইরে হাত বাড়াতে পারে।
প্রতিটা Agent-এর ভেতরে যে loop-টা আসলে চলে
Framework আর marketing বাদ দিলে, একটা GitHub issue-triage করা ছোট bot থেকে শুরু করে একটা multi-step research agent — সবগুলোই একই চার ধাপের loop চালায়:
- Perceive — বর্তমান অবস্থা পড়া: ইউজারের request, আগের tool-এর output, একটা file, একটা API response।
- Decide — LLM চিন্তা করে পরের ধাপে কী করা উচিত, লক্ষ্য আর এখন পর্যন্ত যা জানা গেছে তার ভিত্তিতে।
- Act — একটা tool call করে: API hit করা, query চালানো, file লেখা, message পাঠানো।
- Observe — সেই action-এর ফলাফল আবার নতুন input হিসেবে ফিরে আসে, আর loop আবার শুরু হয়।
graph TD
A[Perceive: লক্ষ্য + সর্বশেষ observation পড়া] --> B[Decide: LLM পরের ধাপ ঠিক করে]
B --> C[Act: একটা tool/API call করা]
C --> D[Observe: ফলাফল ধরা]
D --> A
B --> E[লক্ষ্য পূরণ: থেমে গিয়ে শেষ উত্তর দেওয়া]সহজ কথায়: এজেন্ট perceive → decide → act → observe এই loop-টা ঘুরাতেই থাকে, যতক্ষণ না model নিজেই বুঝে যে লক্ষ্য পূরণ হয়ে গেছে — তখন loop থেকে বেরিয়ে final answer দেয়।
নিচে কোনো framework ছাড়া একদম plain code-এ loop-টা দেখানো হলো, যাতে বোঝা যায় এখানে আসলে কোনো জাদু নেই:
// agent-loop.js
async function runAgent(goal, tools, llm) {
let observations = [];
let steps = 0;
while (steps < 10) {
const decision = await llm.decide(goal, observations);
if (decision.type === "final_answer") {
return decision.content;
}
const tool = tools[decision.toolName];
const result = await tool.run(decision.args);
observations.push({ tool: decision.toolName, result });
steps++;
}
throw new Error("Agent did not converge within step limit");
}
LangChain বা CrewAI-এর মতো "agent framework"-গুলো ভেতরে মূলত এই loop-টাই চালায় — শুধু plumbing-টা ওরা সামলে দেয় (model-এর tool call parse করা, error হলে retry করা, memory manage করা), যাতে প্রতিবার নতুন করে এই loop হাতে লিখতে না হয়।
Tool হলো হাত, Model হলো মস্তিষ্ক
এর কোনোটাই কাজ করবে না tool calling ছাড়া — model-এর সেই ক্ষমতা, যেখানে ও শুধু prose লেখার বদলে বলতে পারে "এই function-টা এই argument দিয়ে call করো।" আধুনিক model (Claude, GPT-4-class, এবং তার পরের generation) specifically train করা হয়েছে structured tool call output দেওয়ার জন্য, যখন কাজটার জন্য সেটা দরকার। এই ক্ষমতা ছাড়া কোনো agent নেই — শুধু একটা খুব সুন্দর করে কথা বলা autocomplete আছে।
"Chatbot" আর "Agent"-এর মাঝের লাইনটা আসলে কোথায়
প্রতিটা agent-ই যে পুরোপুরি autonomous হতে হবে, তা না। একটা support tool যেটা আসা ticket পড়ে reply draft করে দেয়, কিন্তু পাঠানোর আগে মানুষ approve করে — সেটাও একটা agent, কারণ ও perceive আর decide করছে, শুধু "act" ধাপটা মানুষের হাতে। যেটা নিজে থেকেই reply পাঠিয়ে দেয় আর CRM update করে দেয়, সেটা একই spectrum-এ শুধু আরেকটু এগিয়ে। Autonomy একটা dial, কোনো on/off switch না — আর বেশিরভাগ real product ইচ্ছাকৃতভাবেই মাঝামাঝি কোথাও থাকে।
এটা বুঝতে পারলে পরে framework বা architecture বাছাই করাও সহজ হয়ে যায় — কারণ প্রশ্নটা তখন আর "agent বানাব কিনা" থাকে না, প্রশ্নটা হয়ে যায় "কোন ধাপ পর্যন্ত ওকে autonomy দেব, আর কোন ধাপে মানুষের approval রাখব।" একটা internal tool-এর জন্য পুরো autonomy ঠিক আছে, কিন্তু কোনো ইউজার-facing পেমেন্ট বা ইমেইল পাঠানোর মতো কাজে শুরুতে সবসময় human-in-the-loop রাখাই বাস্তবসম্মত।
২০২৬-এই কেন হঠাৎ এত আলোচনা
Concept-টা নতুন কিছু না — "agent" শব্দটা AI research-এ ১৯৯০-এর দশক থেকেই আছে। যা বদলেছে সম্প্রতি:
- Tool calling reliable হয়ে গেছে। দুই বছর আগেও একটা model-কে দিয়ে consistently valid, parseable function call output করানো সত্যিই কঠিন ছিল। এখন frontier model-গুলোর জন্য এটা প্রায় solved একটা সমস্যা।
- MCP wiring-টা standardize করে দিয়েছে। প্রতিটা developer আলাদা আলাদা API-এর জন্য custom glue code লেখার বদলে, Model Context Protocol একটা common way দেয় tool discover আর call করার — অনেকটা USB যেভাবে "এটা ওটার সাথে লাগাও" ব্যাপারটা standardize করেছিল, সেভাবে।
- Inference যথেষ্ট সস্তা হয়ে গেছে loop চালানোর জন্য। একটা agent হয়তো একটা কাজ শেষ করতে model-কে পাঁচ, দশ, বিশবার call করে। এটা economically sane তখনই হয়, যখন per-token cost যথেষ্ট নিচে নামে — যেটা এখন হয়েছে।
- Framework-গুলো mature হয়ে গেছে। LangChain, CrewAI, AutoGen, আর Vercel AI SDK — এগুলো "loop নিজে বানাও" কাজটাকে "loop import করো"-তে বদলে দিয়েছে।
সব মিলিয়ে, এমন কিছু বানানো যেটা আসলেই কিছু "করে" — শুধু বর্ণনা করে না — এটা আর research demo থাকেনি, এখন একটা weekend-এই ship করার মতো জিনিস হয়ে গেছে।
যে ভুলটা প্রায় সবাই প্রথমে করে
সবচেয়ে common ভুল — আমিও করেছিলাম — কোনো জিনিসকে "agent" বলে ফেলা, যদিও সেটা আসলে একটা লম্বা system prompt-ওয়ালা chatbot মাত্র। Model-কে বললে "তুমি একটা autonomous agent, নিজে থেকে কাজ করো" — এটা কিছুই বদলায় না, যদি ওকে call করার মতো কোনো tool-ই না দেওয়া হয়। Autonomy আসে tool access আর loop থেকে, prompt-এর ভাষা থেকে না।
Practical fix: কোনো কিছুকে agent বলার আগে নিজেকে জিজ্ঞেস করুন, text generate করা ছাড়া ও আসলে কী "করতে" পারে। উত্তর যদি সৎভাবে "কিছুই না" হয়, তাহলে আপনি একটা সুন্দর করে সাজানো chatbot বানিয়েছেন — সেটা খারাপ কিছু না, শুধু ভুল নামে চালাবেন না।
এই সিরিজে আসলে কী বানানো হবে
এই loop-টা ধরেই সামনের পোস্টগুলোতে একটা real agent Next.js backend-এ বসানো, নিজের tool দেওয়া, UI-তে output stream করা, আর সবশেষে proper error handling আর cost control সহ production-এ নেওয়া পর্যন্ত পুরো path-টা দেখানো হবে। একটা পোস্ট যেখানে শেষ হবে, পরেরটা ঠিক সেখান থেকেই শুরু হবে।
প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী (FAQ)
AI Agent কি AGI-এর মতো জিনিস? না। Agent হলো একটা engineering pattern — একটা model-এর চারপাশে tool আর loop বসানো — এটা general intelligence নিয়ে কোনো দাবি না। একটা ছোট, single-purpose agent (যেমন শুধু GitHub issue triage করে) সেটাও পুরোপুরি "agent," যদিও general intelligence-এর ধারেকাছেও নেই।
Agent বানাতে কি LangChain-এর মতো framework লাগবেই? না — উপরের loop-টা মাত্র ২০ লাইনের কোড। Framework সময় বাঁচায় memory management, retry, আর multi-tool orchestration জটিল হয়ে গেলে, কিন্তু framework ছাড়াও একটা real, কাজ করা agent বানিয়ে ship করা যায়।
Chatbot আর AI Agent-এর মধ্যে আসল পার্থক্য কী? Chatbot একটা input-এ একটা text response দেয়। Agent perceive → decide → act → observe এই loop-টা চালায়, real tool call করে, ফলাফলে react করে, যতক্ষণ না লক্ষ্য পূরণ হয় — আর এই পুরো সময় কোনো মানুষকে step-by-step আগে বাড়াতে হয় না।



কাস্টম ওয়েব অ্যাপ বা এআই অটোমেশন বানাতে চান?
আমি স্টার্টআপ ও আধুনিক ব্যবসার জন্য স্কেলেবল ফুল-স্ট্যাক ওয়েব অ্যাপ্লিকেশন (Next.js, React, Node, PostgreSQL) এবং ইন্টেলিজেন্ট এআই এজেন্ট সলিউশন তৈরি করি। আপনার প্রজেক্টের আইডিয়া নিয়ে কথা বলা যাক!
আর্টিকেলটি কি আপনার ভালো লেগেছে?
তন্ময়ের কাজকে সাপোর্ট করতে তালি (Clap) দিয়ে উৎসাহিত করুন!
জাহিদ হাসান তন্ময়
সফটওয়্যার ডেভেলপার
MERN ফুল-স্ট্যাক ডেভেলপার এবং AI এজেন্ট ডেভেলপার, ঢাকা, বাংলাদেশ। ওয়েব ডেভেলপমেন্ট, রিঅ্যাক্ট, লারাভেল এবং আমার লার্নিং জার্নি নিয়ে লিখছি।