Home »
Blog »
AI/ML Engineer সিরিজ » Series 08 » Episode 07
AI Agents: tools, function calling, memory — workflow বনাম agent
agent ≠ chatbot (Series 08, Episode 07)
🔴 ADVANCED
Series 08 — Generative AI Engineering
Episode 07 / 09
📑 এই পর্বে যা যা আছে
- ১. গল্প: assistant উত্তর দেয়, কিন্তু কাজ করে না
- ২. সমস্যা: LLM নিজে হিসাব/API/action পারে না
- ৩. Tools ও Function Calling
- ৪. তিন স্তরে বোঝা
- ৫. Agent বনাম Workflow — গুরুত্বপূর্ণ পার্থক্য
- ৬. Agent ≠ Chatbot ≠ RAG
- ৭. Memory: short-term বনাম long-term
- ৮. Code: function calling হাতে-কলমে
- ৯. একটা simple agent loop
- ১০. কখন agent, কখন নয় (সততার সাথে)
- ১১. বাস্তব উদাহরণ: বাংলাদেশের context
- ১২. Boss Question
- ১৩. Job Requirement Decoder
- ১৪. সাধারণ ভুল
- ১৫. Interview Prep
- ১৬. হাতে-কলমে
- ১৭. Project Connection
- ১৮. সারসংক্ষেপ ও পরবর্তী পর্ব
🧩 ১. গল্প: assistant উত্তর দেয়, কিন্তু কাজ করে না
Rahim-এর RAG assistant দারুণ উত্তর দেয়। কিন্তু একজন user লিখল: "আমার skill Python আর SQL —
আমি কোন কোন job-এ apply করার যোগ্য, আর কী skill গ্যাপ আছে সেটা বের করে দাও।" এখানে শুধু তথ্য
খুঁজলেই হবে না — matching JD খুঁজতে হবে, প্রতিটার সাথে skill তুলনা করতে হবে, গ্যাপ হিসাব করতে হবে।
একটা সাধারণ RAG এতে আটকে যায়।
Maya: "এখন তোমার assistant-কে শুধু 'জানা' নয়, কয়েক ধাপে কাজ করা
শিখতে হবে — কোন tool কখন ব্যবহার করবে সেটা নিজে ঠিক করা। এটাই agent। তবে সাবধান —
সব কাজে agent লাগে না; অনেক সময় একটা নির্দিষ্ট workflow-ই যথেষ্ট ও নিরাপদ।"
❓ ২. সমস্যা: LLM নিজে হিসাব/API/action পারে না
LLM একটা text generator — সে 17 * 349 ভুল করতে পারে, আজকের তারিখ জানে না, database
query চালাতে পারে না, email পাঠাতে পারে না। কিন্তু সে চমৎকার একটা কাজ পারে — কোন tool
দরকার আর কী argument দিতে হবে, সেটা ঠিক করা। এই ক্ষমতাকেই আমরা কাজে লাগাই।
মূল ধারণা: LLM = "মস্তিষ্ক/planner"; tools = "হাত"। LLM ঠিক করে কী করতে হবে, আমাদের code সেই tool
চালিয়ে ফলাফল LLM-কে ফেরত দেয়। এটাই function calling / tool use।
🔧 ৩. Tools ও Function Calling
Function calling মানে — আপনি LLM-কে কিছু function-এর "বর্ণনা" (নাম, কী করে, কী argument) দেন। LLM
প্রশ্ন বুঝে বলে দেয় "এই function-টা এই argument দিয়ে ডাকো"। আপনার code সেটা চালিয়ে ফল ফেরত দেয়।
User: "Python job কয়টা আছে?"
↓
LLM: "search_jobs(skill='Python') ডাকো" ← tool + argument ঠিক করল
↓
তোমার code: search_jobs('Python') → 42
↓
LLM: "Python-এ ৪২টা job আছে।" ← ফল দিয়ে উত্তর
গুরুত্বপূর্ণ: LLM নিজে function চালায় না — সে শুধু "কী ডাকতে হবে" বলে; আসল execution
আপনার নিয়ন্ত্রণে। এটাই security-র জন্য সবচেয়ে জরুরি বোঝাপড়া।
🪜 ৪. তিন স্তরে বোঝা
Level 1 — সহজ intuition
একজন দক্ষ office manager ভাবুন। সে সব কাজ নিজে করে না — কোন কাজ accountant-কে, কোনটা IT-কে দেবে,
সেটা ঠিক করে, ফল একত্র করে সিদ্ধান্ত জানায়। LLM এখানে manager, tools হলো দল।
Level 2 — technical ভাবে কী হচ্ছে
Model-কে JSON schema-তে tool definition দেওয়া হয়। model প্রয়োজন হলে একটা structured "tool call"
(নাম + arguments) output করে। runtime সেটা parse করে function চালায়, ফল আবার model-কে দেয়, model
পরের পদক্ষেপ ঠিক করে — যতক্ষণ না চূড়ান্ত উত্তর।
Level 3 — engineer perspective
Engineer tool গুলো নিরাপদ, sandboxed ও idempotent রাখে; loop-এ max-step limit দেয় (নাহলে খরচ/লুপ);
প্রতিটা tool call log করে; আর sensitive action-এ human approval বসায়। agent যত ক্ষমতাশালী, তত বেশি
guardrail দরকার।
⚖️ ৫. Agent বনাম Workflow — গুরুত্বপূর্ণ পার্থক্য
Workflow
ধাপগুলো আপনি আগেই ঠিক করেন (fixed)
LLM প্রতিটা ধাপে নির্দিষ্ট কাজ করে
predictable, সস্তা, debug সহজ
যেমন: retrieve → summarize → format
Agent
LLM নিজে ঠিক করে পরের ধাপ কী (dynamic)
কোন tool, কতবার — model-এর সিদ্ধান্ত
flexible, কিন্তু ব্যয়বহুল ও কম predictable
যেমন: নিজে পরিকল্পনা করে multi-step কাজ
নিয়ম: ধাপগুলো আগে থেকে জানা থাকলে → workflow (বেশিরভাগ বাস্তব কাজ এখানেই পড়ে)।
ধাপ অনিশ্চিত, model-কে নিজে decide করতে হবে → agent। agent "cool" শোনায়, কিন্তু
অপ্রয়োজনে ব্যবহার করলে খরচ, বাগ ও unpredictability বাড়ে।
🚫 ৬. Agent ≠ Chatbot ≠ RAG
| জিনিস | কী করে |
| Chatbot | কথোপকথন করে; নিজে কোনো external action নেয় না |
| RAG | document retrieve করে context-ভিত্তিক উত্তর দেয় |
| Agent | tool ব্যবহার করে কাজ/action করে, ধাপ নিজে ঠিক করতে পারে |
একটা agent-এর ভেতরে RAG একটা tool হতে পারে, আর interface-টা chatbot হতে পারে — কিন্তু ধারণাগুলো
আলাদা। interview-তে "agent মানেই chatbot" বললে ভুল হবে।
🧠 ৭. Memory: short-term বনাম long-term
- Short-term memory: চলতি conversation-এর history (context window-এ থাকে)। session শেষ = মুছে যায়।
- Long-term memory: আগের session-এর গুরুত্বপূর্ণ তথ্য একটা store-এ (প্রায়ই vector DB) রাখা, পরে retrieve করা।
মনে রাখুন — long-term memory প্রায়ই আসলে একটা RAG: গুরুত্বপূর্ণ কথা embed করে রাখা, দরকারে retrieve
করা। তাই আগের episode-গুলোর ভিত্তি এখানেও কাজে লাগছে।
💻 ৮. Code: function calling হাতে-কলমে
কেন এই code? — আমাদের job assistant-কে একটা search_jobs tool দিচ্ছি, যাতে সে JD count
হিসাব করতে পারে (যা LLM নিজে পারে না)। এখানে দেখাই কীভাবে tool define করে ও tool call handle করি।
from openai import OpenAI
import json
client = OpenAI()
# ১. আসল function (আমাদের code-এই থাকে)
def search_jobs(skill: str) -> int:
# বাস্তবে এটা pgvector/SQL query চালাবে
fake_db = {"Python": 42, "SQL": 30, "Docker": 18}
return fake_db.get(skill, 0)
# ২. LLM-কে tool-এর বর্ণনা দিই (schema)
tools = [{
"type": "function",
"function": {
"name": "search_jobs",
"description": "একটা skill-এ কয়টা job আছে তা ফেরত দেয়",
"parameters": {
"type": "object",
"properties": {
"skill": {"type": "string"},
},
"required": ["skill"],
},
},
}]
def ask(question: str) -> str:
messages = [{"role": "user", "content": question}]
resp = client.chat.completions.create(
model="gpt-4o-mini", messages=messages, tools=tools,
)
msg = resp.choices[0].message
# ৩. LLM tool চাইলে আমরা চালাই, ফল ফেরত দিই
if msg.tool_calls:
call = msg.tool_calls[0]
args = json.loads(call.function.arguments)
result = search_jobs(**args) # আমরা execute করি
messages.append(msg)
messages.append({
"role": "tool",
"tool_call_id": call.id,
"content": str(result),
})
final = client.chat.completions.create(
model="gpt-4o-mini", messages=messages,
)
return final.choices[0].message.content
return msg.content
print(ask("Python-এ কয়টা job আছে?")) # → "Python-এ ৪২টা job আছে।"
🔁 ৯. একটা simple agent loop
একটা agent মূলত এই function-calling-কে একটা loop-এ বসানো — যতক্ষণ না LLM বলে
"আর tool লাগবে না, এই চূড়ান্ত উত্তর":
loop (সর্বোচ্চ N বার):
LLM ভাবে → tool লাগবে?
হ্যাঁ → tool চালাও, ফল যোগ করো, আবার loop
না → চূড়ান্ত উত্তর দাও, loop শেষ
Guardrail বাধ্যতামূলক: max_steps দিন (নাহলে infinite loop ও বিল বাড়ে),
প্রতিটা tool call log করুন, আর sensitive tool-এ (payment, delete) human approval বসান। "ক্ষমতা +
দায়িত্ব একসাথে" — এটাই agent engineering।
🤔 ১০. কখন agent, কখন নয় (সততার সাথে)
- Agent দরকার: ধাপ অনিশ্চিত, একাধিক tool-এর মধ্যে model-কে নিজে বাছতে হবে, open-ended কাজ।
- Agent দরকার নেই: ধাপ জানা (retrieve→answer), একটাই tool, বা নির্ভুলতা+খরচ গুরুত্বপূর্ণ — তখন workflow ভালো।
Senior engineer-রা প্রায়ই বলেন: "আগে workflow দিয়ে চেষ্টা করো; workflow-তে না হলে তবেই agent।"
অপ্রয়োজনীয় agent = বেশি খরচ, কম নির্ভরযোগ্যতা।
🇧🇩 ১১. বাস্তব উদাহরণ: বাংলাদেশের context
- একটা fintech support agent — balance check tool + FAQ RAG + escalation tool একসাথে, model ঠিক করে কোনটা লাগবে।
- একটা e-commerce order assistant — order-status API, refund policy (RAG), আর "মানুষের কাছে পাঠাও" tool।
- আমাদের career assistant —
search_jobs + skill_gap tool দিয়ে multi-step skill-gap analysis।
💼 ১২. Boss Question
Boss: "সবাই তো 'AI agent' বানাচ্ছে, আমরাও কি সব agent বানাব?"
উত্তর: না। agent শক্তিশালী কিন্তু ব্যয়বহুল ও কম predictable — প্রতিটা ধাপে LLM call
মানে বেশি খরচ, বেশি latency, বেশি ভুলের সুযোগ। আমাদের বেশিরভাগ কাজের ধাপ জানা, তাই সেগুলো সস্তা ও
নির্ভরযোগ্য workflow দিয়ে হবে; যেখানে সত্যিই dynamic সিদ্ধান্ত লাগে শুধু সেখানে agent। এতে খরচ কমে,
নির্ভরযোগ্যতা বাড়ে — সেটাই business-এর জন্য ভালো।
🔎 ১৩. Job Requirement Decoder
JD: "Experience with AI agents / function calling / tool use"।
১. কী বোঝায়? LLM-কে tool-এর সাথে জুড়ে action নেওয়া system বানাতে পারা।
২. কেন চায়? শুধু চ্যাট নয়, কাজ করা AI (search, হিসাব, API) product-এর নতুন চাহিদা।
৩. কোন সমস্যা সমাধান করে? LLM-এর নিজে action/হিসাব না পারার সীমাবদ্ধতা।
৪. junior-এর কী জানা লাগে? function calling কীভাবে কাজ করে, agent vs workflow, guardrail, agent≠chatbot।
৫. এখনই কী master লাগে না? multi-agent orchestration, জটিল planning framework internals।
৬. GitHub-এ কীভাবে দেখাবে? একটা ছোট tool-using assistant — ২টা tool, একটা agent loop, max-step guard, log।
৭. interview প্রশ্ন? "agent vs workflow?", "function calling-এ LLM কি নিজে function চালায়?", "agent-কে নিরাপদ কীভাবে রাখবে?"
⚠️ ১৪. সাধারণ ভুল
ভুল ১: ভাবা LLM নিজে function চালায়। → না; আপনার code চালায়, LLM শুধু বলে কী চালাতে হবে।
ভুল ২: সব কাজে agent। → ধাপ জানা থাকলে workflow ভালো।
ভুল ৩: max-step limit না দেওয়া। → infinite loop, বিল বিস্ফোরণ।
ভুল ৪: agent-কে সরাসরি sensitive action (delete/payment) দেওয়া। → human approval বসান।
ভুল ৫: agent = chatbot = RAG গুলিয়ে ফেলা। → এগুলো আলাদা ধারণা।
🎤 ১৫. Interview Prep
প্র: Agent আর workflow-এর পার্থক্য?
উ: Workflow-এ ধাপ আগে থেকে ঠিক করা; agent-এ LLM নিজে পরের ধাপ/tool ঠিক করে।
প্র: Function calling-এ LLM কি নিজে code চালায়?
উ: না — LLM কোন function কী argument-এ ডাকতে হবে বলে; execution আমাদের code করে।
প্র: Agent কি chatbot?
উ: না — chatbot কথা বলে, agent tool দিয়ে action নেয় ও ধাপ নিজে ঠিক করতে পারে।
প্র: Agent নিরাপদ কীভাবে রাখবে?
উ: max-step, tool sandbox, logging, sensitive action-এ human approval।
✍️ ১৬. হাতে-কলমে
দুটো tool বানান: search_jobs(skill) আর required_skills(job_title)। এমন
একটা প্রশ্ন করুন যাতে assistant-কে দুই ধাপ করতে হয় (আগে job খুঁজে, তারপর তার skill বের করে)।
একটা max_steps=4 loop লিখে দেখুন model কীভাবে tool গুলো ক্রমে ব্যবহার করে।
🚀 ১৭. Project Connection
এটাই flagship-এর V7 — skill-gap agent step। "Bangladesh Tech Career Assistant"
এখন শুধু উত্তর দেয় না, বরং tool ব্যবহার করে: user-এর skill নেয়, matching JD খোঁজে (RAG/search
tool), required skill তুলনা করে গ্যাপ বের করে। আমরা এটা দায়িত্বশীলভাবে করছি — max-step ও logging
সহ, অপ্রয়োজনে agent না বানিয়ে। পরের episode-এ শেষ বড় ধারণা — fine-tuning কখন লাগে, কখন লাগে না।
📌 ১৮. সারসংক্ষেপ ও পরবর্তী পর্ব
✓ LLM = planner, tools = হাত; function calling দিয়ে action
✓ LLM নিজে function চালায় না — শুধু কী ডাকতে হবে বলে
✓ agent (dynamic ধাপ) বনাম workflow (fixed ধাপ) — বেশিরভাগ কাজে workflow যথেষ্ট
✓ agent ≠ chatbot ≠ RAG
✓ short-term (context) ও long-term (প্রায়ই RAG) memory
✓ max-step, logging, human approval — guardrail বাধ্যতামূলক
পরবর্তী Episode: "Fine-tuning কখন করবে, কখন করবে না" — prompting, RAG-এর পরও কি
model train করা লাগবে? LoRA, QLoRA, dataset ও evaluation; আর RAG বনাম fine-tuning বনাম prompting-এর
চূড়ান্ত সিদ্ধান্ত-নিয়ম।