Agents বর্তমানে প্রতিটি AI আলোচনাতেই প্রাধান্য পাচ্ছে। ডেমো দেখে মনে হতে পারে এগুলো স্বয়ংক্রিয় ডিজিটাল অ্যাসিস্ট্যান্ট যা মানুষের সাহায্য ছাড়াই চিন্তা করতে, কৌশল সাজাতে এবং সমস্যার সমাধান করতে পারে। তবে ইন্টারফেসের গভীরে তাকালে আপনি অনেক সহজ কিছু দেখতে পাবেন। একটি এজেন্ট হলো মূলত একটি লুপের (loop) মধ্যে চলা একটি ল্যাঙ্গুয়েজ মডেল। এটি একটি ডিজাইন প্যাটার্ন, কোনো চেতনা নয়। এই পার্থক্যটি বোঝা অত্যন্ত গুরুত্বপূর্ণ কারণ এটি আপনি কীভাবে এই সিস্টেমগুলো তৈরি করবেন, ডিবাগ করবেন এবং বিশ্বাস করবেন তা বদলে দেয়।
একটি এজেন্ট আসলে কী
একটি সাধারণ চ্যাটবট হলো একটি সিঙ্গেল-শট (single-shot) ফাংশন। আপনি একটি প্রম্পট লিখছেন। মডেলটি পরবর্তী টোকেনগুলো প্রেডিক্ট করে এবং একটি টেক্সট ব্লক প্রদান করে। তারপর এটি থেমে যায়। এর উত্তর সঠিক কি না তা এটি যাচাই করে না। কোনো ওয়েব লিঙ্ক কাজ করছে কি না বা কোনো গণনা সঠিক কি না, তাও এটি পরীক্ষা করে না। এটি একবারে তার সম্ভাব্য সেরা উত্তরটি দিয়ে চুপ হয়ে যায়।
একটি এজেন্ট সেই সিঙ্গেল-শট প্রক্রিয়াটিকে একটি পুনরাবৃত্তিমূলক চক্রে (repeating cycle) বিভক্ত করে। মডেলটি তখনও টেক্সট জেনারেট করে, কিন্তু এখন এটি একটি নিয়ন্ত্রিত লুপের মধ্যে কাজ করে যেখানে এটি বাইরের জগতের ওপর প্রভাব ফেলতে পারে এবং যা ঘটছে তার প্রতিক্রিয়া জানাতে পারে।
চক্রটি দেখতে অনেকটা এরকম:
- লক্ষ্য মূল্যায়ন করা এবং কী করতে হবে তা নিয়ে চিন্তা করা।
- একটি পদক্ষেপ নেওয়া, যা সাধারণত কোনো টুল বা API কল করার মাধ্যমে হয়।
- সেই পদক্ষেপের ফলাফল পর্যবেক্ষণ করা।
- সেই নতুন তথ্যের ভিত্তিতে পুনরায় চিন্তা করা।
কাজটি শেষ না হওয়া পর্যন্ত বা সিস্টেমটি কোনো নিরাপত্তা সীমা (safety limit) অতিক্রম না করা পর্যন্ত এই চক্রটি চলতে থাকে। এটাই আসল রহস্য। এখানে কোনো লুকানো রিজনিং ইঞ্জিন নেই। আসল জাদু হলো মডেলটিকে বাস্তব টুল থেকে প্রাপ্ত বাস্তব ডেটা ব্যবহার করে নিজের পথ সংশোধন করার সুযোগ দেওয়া।
ReAct: Thought-Action-Observation চক্র
এই লুপটি কার্যকর করার সবচেয়ে সাধারণ পদ্ধতি হলো ReAct প্যাটার্ন, যার অর্থ হলো Reason (যুক্তি) প্লাস Act (কাজ)। লুপের প্রতিটি ধাপের মাধ্যমে মডেলটি তিনটি স্বতন্ত্র পর্যায়ের মধ্য দিয়ে যায়।
প্রথমত, মডেলটি একটি Thought (চিন্তা) তৈরি করে। এটি বর্তমান পরিস্থিতি নিয়ে চিন্তা করে, নিজেকে মূল লক্ষ্যের কথা মনে করিয়ে দেয় এবং পরবর্তীতে কী জানা প্রয়োজন তা সিদ্ধান্ত নেয়। দ্বিতীয়ত, এটি একটি Action (পদক্ষেপ) বেছে নেয়। এটি একটি ওয়েব সার্চ, ডাটাবেস কুয়েরি, ক্যালকুলেটর কল বা কোনো ফাইল পড়ার অনুরোধ হতে পারে। তৃতীয়ত, এটি একটি Observation (পর্যবেক্ষণ) গ্রহণ করে। সিস্টেমটি মডেলের বাইরে সেই পদক্ষেপটি কার্যকর করে এবং প্রাপ্ত কাঁচা ফলাফলটি (raw result) কথোপকথনের ইতিহাসে পুনরায় ইনপুট হিসেবে দেয়। এরপর মডেলটি সেই নতুন পর্যবেক্ষণকে তার নতুন বাস্তবতা হিসেবে গ্রহণ করে পরবর্তী লুপ শুরু করে।
একটি সহজ উদাহরণ বিবেচনা করুন। ধরুন আপনি একটি এজেন্টকে জিজ্ঞেস করলেন যে অস্টিনে (Austin) আগামীকাল বৃষ্টি হবে কি না। মডেলটি ভাবতে পারে, "আমার অস্টিনের আবহাওয়ার পূর্বাভাস প্রয়োজন।" এর পদক্ষেপ হলো শহরের নাম দিয়ে একটি weather API কল করা। পর্যবেক্ষণ হিসেবে একটি raw JSON ফিরে আসে: তাপমাত্রা এবং বৃষ্টির সম্ভাবনা। এরপর মডেলটি আবার চিন্তা করে, "পূর্বাভাস অনুযায়ী বৃষ্টির সম্ভাবনা ৭০ শতাংশ," এবং এর চূড়ান্ত পদক্ষেপ হলো সেই তথ্যটিকে আপনার জন্য একটি সহজ ইংরেজি উত্তরে রূপান্তর করা।
এই কাঠামোটি গুরুত্বপূর্ণ কারণ এটি মডেলটিকে বাস্তবতার ওপর ভিত্তি করে কাজ করতে বাধ্য করে। মডেলটিকে যদি পরবর্তী ধাপে যাওয়ার আগে অবশ্যই একটি সার্চ করতে হয় এবং ফলাফল পড়তে হয়, তবে এটি চাইলেই মনগড়া তথ্য দিতে পারে না। পর্যবেক্ষণটি পরবর্তী চিন্তার জন্য একটি কঠোর সীমাবদ্ধতা (hard constraint) হিসেবে কাজ করে। এই লুপটি তথ্য বানিয়ে বলা বা কাল্পনিক তথ্য দেওয়া অনেক কঠিন করে তোলে, কারণ মডেলটিকে কথা বলার আগে দেখে নিতে হয়।
একটি নির্ভরযোগ্য লুপ তৈরির জন্য আপনার যা প্রয়োজন
প্রোডাকশনে এই প্যাটার্নটি চালানোর জন্য কেবল একটি চতুর প্রম্পট যথেষ্ট নয়। আপনার তিনটি ব্যবহারিক গার্ডরেল (guardrails) বা সুরক্ষা ব্যবস্থা প্রয়োজন।
একটি স্টেপ বাজেট (step budget) নির্ধারণ করুন। লুপের পুনরাবৃত্তির (iterations) একটি সর্বোচ্চ সংখ্যা সবসময় নির্ধারণ করে রাখুন। কোনো সীমা না থাকলে, একটি এজেন্ট নিজের পেছনে নিজেই ঘুরতে পারে—সার্চ করা, পর্যবেক্ষণ করা, যুক্তি দেওয়া, আবার সার্চ করা—যতক্ষণ না এটি আপনার API বাজেট শেষ করে ফেলে। একটি স্টেপ লিমিট বা ধাপের সীমা সিস্টেমটিকে বন্ধ করতে বাধ্য করে। সীমা অতিক্রম করার পর আপনি সিদ্ধান্ত নিতে পারেন যে একটি আংশিক ফলাফল প্রদান করবেন, কোনো মানুষের কাছে বিষয়টি হস্তান্তর করবেন, নাকি কেবল সুন্দরভাবে (gracefully) ব্যর্থতা প্রদর্শন করবেন।
কোড এক্সিকিউশন নিজেই পরিচালনা করুন। ল্যাঙ্গুয়েজ মডেল নিজে কোনো টুল চালায় না। এটি কেবল পদক্ষেপের পরামর্শ দেয়, যা সাধারণত একটি টুলটির নাম এবং প্যারামিটারসহ স্ট্রাকচার্ড টেক্সট বা JSON আউটপুট হিসেবে প্রদান করে। আপনার কোডকে অবশ্যই
