আমি আগে ভাবতাম একটি AI এজেন্ট তৈরি করা মূলত একটি চ্যাটবটকে প্রম্পট দেওয়ার মতোই। আপনি প্রশ্নটি ভালোভাবে সাজান, মডেলটি উত্তর দেয়, আর কাজ শেষ। তারপর আমি কিছু অ্যাপ্লিকেশন রিলিজ করলাম। বাস্তবতা বেশ কঠিন ছিল। একটি LLM কোনো এজেন্ট নয়। একটি LLM কেবল পরবর্তী টোকেন প্রেডিক্ট করে। এই লুপ বা চক্রটিই একটি এজেন্ট তৈরি করে।

চা বানানোর কথা ভাবুন। আপনি কেবল একটি make_tea() কমান্ড দিয়ে কাজ শেষ করে চলে যান না। আপনি কেটলি ভরেন, বুঝতে পারেন কলের পানির চাপ কম, অপেক্ষা করেন, সুইচ অন করেন, দেখেন সুইচটি নষ্ট, অন্য একটি বার্নার ব্যবহার করেন, বাষ্প পরীক্ষা করেন, ঢালেন, স্বাদ নেন, এবং হয়তো মধু মেশান কারণ চা পাতাগুলো অনেকক্ষণ ভিজিয়ে রাখা হয়েছিল। লক্ষ্য কখনো পরিবর্তন হয় না, কিন্তু ধাপগুলো পরিবর্তন হয়। আপনি পর্যবেক্ষণ করেন, সমন্বয় করেন এবং আবার চেষ্টা করেন। AI এজেন্ট ঠিক এভাবেই কাজ করে।

এজেন্সি তৈরির চক্র

লুপটি কোনো বিমূর্ত তত্ত্ব নয়। এটি আপনার হয়ে কাজ করা যেকোনো সিস্টেমের কার্যক্ষম হৃদস্পন্দন। বাস্তবে এটি দেখতে ঠিক এমন:

  • Think (চিন্তা করা): মডেলটি লক্ষ্য নিয়ে চিন্তা করে এবং সিদ্ধান্ত নেয় তার কী প্রয়োজন। একজন ব্যবহারকারী জিজ্ঞেস করলেন, "আমি কি আগামীকাল পোর্টল্যান্ডে একটি ছাতা নিয়ে যাব?" মডেলটি শনাক্ত করে যে এর জন্য একটি আবহাওয়ার পূর্বাভাস এবং একটি লোকেশন প্রয়োজন।
  • Act (কাজ করা): মডেলটি একটি টুল ব্যবহার করে। এটি "Portland" শনাক্ত করার জন্য একটি geocoding API কল করতে পারে, তারপর সেই কোঅর্ডিনেট দিয়ে একটি weather endpoint-এ হিট করতে পারে।
  • Observe (পর্যবেক্ষণ করা): মডেলটি টুলের আউটপুট পড়ে। API কি একটি JSON পূর্বাভাস দিয়েছে, নাকি একটি 403 error, নাকি একটি HTML maintenance page দিয়েছে?
  • Update (আপডেট করা): যা দেখছে তার ওপর ভিত্তি করে মডেলটি তার পরিকল্পনা সংশোধন করে। যদি geocoder পোর্টল্যান্ড, ওরেগন-এর পরিবর্তে পোর্টল্যান্ড, মেইন প্রদান করে, তবে মডেলটিকে বিষয়টি পরিষ্কার করতে হবে। যদি API ডাউন থাকে, তবে এটি একটি ব্যাকআপ সোর্স ব্যবহার করতে পারে বা ব্যবহারকারীকে জিজ্ঞাসা করতে পারে।
  • Think Again (পুনরায় চিন্তা করা): নতুন প্রেক্ষাপট বা context নিয়ে চক্রটি পুনরায় শুরু হয়।

এটি এমন পাঁচটি আলাদা ফাংশন নয় যা আপনি একবার লিখে ভুলে যাবেন। এটি একটি নিরবচ্ছিন্ন ইঞ্জিন যা লক্ষ্য অর্জিত না হওয়া পর্যন্ত বা কোনো কঠোর বাধা (hard stop) না আসা পর্যন্ত চলতে থাকে। মডেলটি কোনো স্ক্রিপ্টের মতো কোড এক্সিকিউট করছে না। এটি বিশ্বের অবস্থা সম্পর্কে চিন্তা করছে, একটি পদক্ষেপ বেছে নিচ্ছে, তার ফলাফল পড়ছে এবং পরবর্তী পদক্ষেপ কী হবে তা সিদ্ধান্ত নিচ্ছে। একটি উন্নত autocomplete এবং কাজ সম্পন্ন করা একটি এজেন্টের মধ্যে এটাই পার্থক্য।

কেন সব ফ্রেমওয়ার্ক দেখতে একই রকম

আপনি যদি LangGraph, CrewAI, বা AutoGen নিয়ে কাজ করে থাকেন, তবে আপনি হয়তো লক্ষ্য করেছেন যে এগুলো একে অপরের সাথে মিলে যেতে শুরু করে। LangGraph প্রবাহটিকে নোড এবং এজ (edges) এর একটি স্থায়ী গ্রাফ হিসেবে মডেল করে। CrewAI এজেন্টদের বিভিন্ন ভূমিকা (roles) এবং ক্রু (crews)-তে সংগঠিত করে। AutoGen মাল্টি-এজেন্ট কথোপকথন পরিচালনা করে। প্যাকেজিং আলাদা, কিন্তু মূল কাঠামো একই।

এগুলো দেখতে একই রকম কারণ এগুলো সবই এই একই লুপিং নীতির ওপর ভিত্তি করে তৈরি। LangGraph স্পষ্টভাবে টুল কল এবং মডেল ইনফারেন্সের মধ্যে স্টেট ট্রানজিশন হিসেবে চক্রটিকে সাজায়। CrewAI লুপটিকে রোল-ভিত্তিক এজেন্টের ভেতরে রাখে, কিন্তু প্রতিটি ক্রু মেম্বার তবুও পরিকল্পনা, কাজ এবং পর্যবেক্ষণের মাধ্যমে চক্রটি সম্পন্ন করে। AutoGen অ্যাক্টরদের মধ্যে মেসেজ আদান-প্রদান করে, তবুও প্রতিটি ধাপ মূলত generate, execute, reflect, এবং route-এর একটি ভিন্ন রূপ।

এই ফ্রেমওয়ার্কগুলো লুপের ওপর গুরুত্ব দেয় কারণ এখানেই এজেন্সি বা কার্যক্ষমতা নিহিত। অন্তর্নিহিত মডেলটি GPT-4, Claude, বা কোনো ফাইন-টিউন করা ওপেন-ওয়েট মডেল হতে পারে। লুপ ছাড়া, আপনার কাছে কেবল একটি অত্যন্ত ব্যয়বহুল বাক্য পূরণকারী (sentence completer) রয়েছে। লুপ থাকলে, আপনার কাছে এমন একটি সিস্টেম থাকে যা একাধিক প্রচেষ্টার মাধ্যমে একটি লক্ষ্যের দিকে এগিয়ে যেতে পারে।

যখন আসল কাজ শুরু হয়

লোকাল ডেমো দেখতে জাদুকরী মনে হয়। কিন্তু প্রোডাকশন হলো সেই জায়গা যেখানে জাদু বাস্তবতার বিশৃঙ্খলার মুখোমুখি হয়। প্রোটোটাইপিং শেষ করার পর, আপনি আর AI সমস্যা সমাধান করেন না, বরং সিস্টেম ইঞ্জিনিয়ারিং সমস্যা সমাধান করতে শুরু করেন।

টুলের ব্যর্থতা অনিবার্য। API টাইম-আউট হয়। সেগুলো ভুল ফরম্যাটের JSON প্রদান করে। সেগুলো HTML-এ মোড়ানো 500 error দেয়। যদি আপনার লুপ প্রতিটি টুলের আউটপুট অন্ধভাবে বিশ্বাস করে, তবে আপনার এজেন্ট সাফল্যের বিভ্রম (hallucinate success) তৈরি করবে বা বিভ্রান্তিতে নিমজ্জিত হবে। আপনার প্রতিটি রিটার্ন পেলোড-এর জন্য retry logic, circuit breakers এবং schema validation প্রয়োজন।

মেমরি পুরনো হয়ে যায়। আপনার এজেন্ট মনে রাখে যে ব্যবহারকারীর পছন্দের ডেটাবেস হলো PostgreSQL, কিন্তু গত রাতে ইনফ্রাস্ট্রাকচার টিম একটি নতুন ক্লাস্টারে মাইগ্রেট করেছে। কনটেক্সট রিফ্রেশ বা এক্সপায়ার করার কোনো ব্যবস্থা না থাকলে, এজেন্ট আত্মবিশ্বাসের সাথে মৃত এন্ডপয়েন্টের বিরুদ্ধে কমান্ড জারি করতে থাকবে। মেমরির জন্য টাইমস্ট্যাম্প, কনফিডেন্স স্কোর এবং নিজেকে ইনভ্যালিডেট করার ক্ষমতা থাকা প্রয়োজন।

ইনফিনিট লুপ হলো নীরব ঘাতক। একটি এজেন্ট ওয়েব সার্চ করে, কোনো কাজের জিনিস পায় না, কুয়েরিটি সামান্য পরিবর্তন করে আবার সার্চ করে, আবারও কিছু পায় না এবং এটি বারবার করতে থাকে। সর্বোচ্চ ইটারেশন সীমা (maximum iteration ceiling) বা সিম্যান্টিক ডুপ্লিকেট ডিটেকশন না থাকলে, ব্যবহারকারী অপেক্ষা করার সময় এটি টোকেন এবং অর্থ খরচ করতে থাকবে। আপনাকে গার্ডরেল তৈরি করতে হবে: রিট্রাই করার ওপর কঠোর সীমা, ডাইভারজেন্স চেক এবং মানুষের হস্তক্ষেপের পথ (human escalation paths)।

Irrelevant data drowns reasoning. Retrieval-Augmented Generation pipelines often dump fifty paragraphs of vaguely related documentation into the context window. The agent chokes on noise and selects the wrong tool or hallucinates a parameter. You need filtering, ranking, and concise summarisation before the model ever sees the retrieved text.

An agent needs more than intelligence. It needs a system: managed memory, explicit state tracking, strict guardrails, and observable telemetry. The better the model, the better that surrounding system must be. A powerful model inside a brittle loop just produces more articulate failures.

Finishing the Job

True intelligence in agents is not about nailing the first answer. It is about navigating the gap between intention and outcome when nothing goes according to plan. The first attempt is easy. Anyone can script a happy path. The hard part is the fourth iteration, when the primary API is down, the context window is shrinking, the user is getting impatient, and the agent still needs to deliver something useful.

That persistence is what separates a demo from a product. It is the ability to learn from every step, not by updating model weights in real time, but by updating the plan. The agent holds the goal steady while the tactics change. That is the looping principle in action.

So does the future belong to larger models or to better execution loops? Scale certainly helps. A more capable model reasons better within each cycle. But a smaller model running inside a tight, observable, and resilient loop will almost always outperform a giant model asked to solve everything in a single shot. The loop is what turns prediction into action. Invest there.

Source: The Looping Principle: A Simple Mental Model for Understanding AI Agents

For more discussions like this, join the GyaanSetu learning community on Telegram.