বেশিরভাগ AI এজেন্টের চমৎকার রিকল (recall) ক্ষমতা থাকলেও, কোন বিষয়টি মনে রাখা উচিত সে বিষয়ে তাদের বিচারবুদ্ধি খুবই নিম্নমানের। তারা হাজার হাজার পৃষ্ঠা গ্রহণ করতে পারে, কিন্তু তবুও নিজেদের কন্টেক্সটের (context) মধ্যেই ডুবে যায়, কারণ তাদের অপ্রাসঙ্গিক অংশগুলো ভুলে যেতে শেখানো হয়নি। Knowledge and Memory Management ভার্সন 0.0.2 ঠিক এই সমস্যাটি সমাধানের জন্যই তৈরি করা হয়েছে। এটি কোনো সাধারণ প্যাচ নয়। এটি একটি এজেন্ট কীভাবে তার জানা তথ্য সংরক্ষণ, পরিবহন এবং অগ্রাধিকার দেয়, সেই পদ্ধতিটি নতুন করে চিন্তা করে।
মেমরি সমস্যা
এজেন্টরা সাধারণত টেক্সটের প্রতিটি অংশকেই অত্যন্ত গুরুত্বপূর্ণ মনে করে। একটি সাধারণ ওয়েব পেজ তার নেভিগেশন মেনু, কুকি ব্যানার এবং ফুটার লিঙ্কসহ স্টোরেজে জমা হয়ে যায়। একটি ভিডিও ট্রান্সক্রিপ্ট প্রতিটি “um,” টাইমস্ট্যাম্প এবং স্পনসর রিডসহ অক্ষত অবস্থায় আসে। একটি আর্টিকেলে প্রকৃত তথ্যের চেয়ে বিজ্ঞাপনের মারকআপ (markup) বেশি থাকতে পারে। যখন তথ্য পুনরুদ্ধারের (retrieval) প্রয়োজন হয়, সিস্টেমটি প্রয়োজনীয় তথ্য খুঁজে পেতে এই সমস্ত অপ্রাসঙ্গিক শব্দের (noise) মধ্য দিয়ে অনুসন্ধান চালায়। এই অপচয় দুটি জায়গায় প্রভাব ফেলে: আপনার কন্টেক্সট উইন্ডো আবর্জনায় ছোট হয়ে যায়, এবং আপনার ইনফ্রাস্ট্রাকচার বিল বেড়ে যায় কারণ আপনি অর্থহীন টেক্সট প্রসেস এবং এমবেড (embed) করার জন্য অর্থ দিচ্ছেন।
স্কেলিং সমস্যাটিও সমানভাবে হতাশাজনক। বেশিরভাগ প্রাথমিক পর্যায়ের এজেন্ট হার্ডকোডেড পাথের (hardcoded paths) মাধ্যমে একটি মাত্র মেশিনের সাথে আটকে থাকে। প্রজেক্টটি আপনার ল্যাপটপ থেকে সার্ভারে, বা এক VPS থেকে অন্যটিতে সরিয়ে নিলে, আপনি ভাঙা রেফারেন্সগুলো ঠিক করার জন্য কনফিগারেশন ফাইলগুলোতে grep করতে পুরো একটি বিকেল কাটিয়ে দেবেন। তখন এজেন্টটি আর সফটওয়্যার থাকে না, বরং একটি ভঙ্গুর শিল্পকর্মের মতো হয়ে যায় যা কেবল একটি নির্দিষ্ট রুমে টিকে থাকতে পারে।
V0.0.2-এ কী পরিবর্তন হয়েছে
এই রিলিজটি সরাসরি উভয় সমস্যাকেই মোকাবিলা করে। এটি একটি পোর্টেবল পাথিং স্কিম (portable pathing scheme) এবং একটি ইউনিফাইড সামারাইজেশন পাইপলাইন (unified summarization pipeline) নিয়ে এসেছে যা মেমরিতে পৌঁছানোর আগেই জ্ঞান বা তথ্য পরিষ্কার করে দেয়। এর ফলে এমন একটি এজেন্ট তৈরি হয় যা স্থানান্তর করা সহজ এবং চালানো সাশ্রয়ী।
আপনি আপনার ইনফ্রাস্ট্রাকচারের সাথে লড়াই করা বন্ধ করবেন। আপনি সীমিত কন্টেক্সটে বিশাল ডকুমেন্ট ঠাসা বন্ধ করবেন। এজেন্টটি এখন কেবল আরও ভালোভাবে মনে রাখতে পারবে।
$AGENT_HOME-এর মাধ্যমে ডিজাইনেই পোর্টেবল
সবচেয়ে ব্যবহারিক পরিবর্তনটি হলো $AGENT_HOME এনভায়রনমেন্ট ভেরিয়েবল (environment variable)-এর প্রবর্তন। সিস্টেমটি যে প্রতিটি পাথ স্পর্শ করে—নলেজ বেস, ওয়ার্কিং মেমরি, ক্যাশড সামারি, সেশন লগ—সবই এই রুট (root)-এর সাপেক্ষে নির্ধারিত হয়। এর মানে হলো, আপনি কোডের একটি লাইন পরিবর্তন না করেই আপনার পুরো এজেন্ট ডিরেক্টরি যেকোনো জায়গায় সরিয়ে নিতে পারেন।
একটি সাধারণ মাইগ্রেশনের কথা চিন্তা করুন। গতকাল আপনার এজেন্ট একটি DigitalOcean ড্রপলেটে /srv/ai-agent-এ ছিল। আজ আপনি এটি লোকালি চালাতে চান বা কোনো সহকর্মীকে দিতে চান। অতীতে, আপনি JSON কনফিগ, পাইথন স্ক্রিপ্ট এবং শেল র্যাপারগুলোতে ছড়িয়ে থাকা হার্ডকোডেড অ্যাবসলিউট পাথগুলো খুঁজে পেতেন। আপনি ডজন ডজন ফাইলের মধ্য দিয়ে sed চালিয়ে যেতেন, এবং আশা করতেন যেন প্রতিটি রেফারেন্স ঠিকভাবে ধরা পড়ে। ভার্সন 0.0.2-এর সাথে, আপনি এই ঝামেলা পুরোপুরি এড়িয়ে চলবেন। আপনি শুধু ফোল্ডারটি কপি করবেন, export AGENT_HOME=/your/path সেট করবেন এবং রান করবেন। ইনজেশন স্ক্রিপ্ট, মেমরি ইনডেক্স এবং রিট্রিভাল লেয়ার—সবকিছু স্বয়ংক্রিয়ভাবে সাজিয়ে নেবে, কারণ তারা আগে থেকে ধরে না নিয়ে অপারেটিং সিস্টেমকে জিজ্ঞাসা করে যে 'হোম' কোথায়।
এই পোর্টেবিলিটি কেবল সুবিধার জন্য নয়, এটি আরও গুরুত্বপূর্ণ। এটি আপনার সেটআপকে রিপ্রোডিউসিবল (reproducible) করে তোলে। আপনি আপনার নলেজ ডিরেক্টরি ভার্সন কন্ট্রোলে ট্র্যাক করতে পারেন, এমন কোনো পাথ দিয়ে রিপোজিটরি নষ্ট না করে যা কেবল আপনার মেশিনে কাজ করে। একজন সহকর্মী রিপোজিটরি ক্লোন করবেন, $AGENT_HOME-কে তার নিজস্ব ফাইলসিস্টেমের দিকে নির্দেশ করবেন এবং তার নিজস্ব ডেটা ইনজেস্ট করবেন। আপনার CI পাইপলাইন প্রতিটি এনভায়রনমেন্টের জন্য কনফিগ পুনরায় না লিখে একটি নতুন এজেন্ট চালু করতে পারে, একটি ভেরিয়েবল সেট করতে পারে এবং এর কার্যকারিতা যাচাই করতে পারে।
আপনি যদি এজেন্টটিকে একটি systemd সার্ভিস হিসেবে চালান, তবে সার্ভিস ইউনিটে ভেরিয়েবলটি যোগ করুন। আপনি যদি এটিকে কন্টেইনারাইজ করেন, তবে আপনার Dockerfile বা compose ফাইলে এটি পাস করুন। আপনি যদি একাধিক শেলের মধ্যে কাজ করেন, তবে এটি আপনার .bashrc বা .zshrc-এ রাখুন যাতে এটি স্থায়ী হয়। এই সেটআপটি উদ্দেশ্যমূলকভাবে খুব সাধারণ রাখা হয়েছে, কারণ ইনফ্রাস্ট্রাকচার হওয়া উচিত একদম নিরুত্তাপ।
তিনটি উৎস, একটি ক্লিনআপ পাইপলাইন
সিস্টেমটি তিনটি নির্দিষ্ট চ্যানেল থেকে জ্ঞান বা তথ্য গ্রহণ করে:
- ওয়েব পেজ (Web pages)। এগুলো HTML বয়লারপ্লেট (boilerplate)-এ মোড়ানো অবস্থায় আসে। প্রকৃত বিষয়বস্তু হয়তো তিন হাজার শব্দের মার্কআপ, নেভিগেশন এবং কমেন্ট সেকশনের ভেতরে লুকিয়ে থাকা মাত্র তিনশ শব্দ।
- ভিডিও ট্রান্সক্রিপ্ট (Video transcripts)। স্পিচ-টু-টেক্সট আউটপুট সাধারণত অনেক বেশি শব্দবহুল হয়। ফিল্টার শব্দ, পুনরাবৃত্তি, টাইমস্ট্যাম্প এবং অপ্রাসঙ্গিক কথাবার্তা একটি নিম্ন-ঘনত্বের (low-density) প্রবাহ তৈরি করে যা কোনো কার্যকর তথ্য না দিয়ে কেবল টোকেন খরচ করে।
- আর্টিকেল (Articles)। ফরম্যাটগুলো অনেক ভিন্ন হতে পারে। কিছু আর্টিকেল পরিষ্কার টেক্সট প্রকাশ করে। অন্যগুলো বিজ্ঞাপন, নিউজলেটার সাইনআপ বক্স এবং সোশ্যাল এমবেড দিয়ে পড়ার অভিজ্ঞতাকে বিঘ্নিত করে।
ভার্সন 0.0.2 এগুলোকে আলাদা কোনো সাইলো (silo) হিসেবে বিবেচনা করে না যা আলাদাভাবে রক্ষণাবেক্ষণ করতে হবে। পরিবর্তে, এগুলো ওয়ার্কিং মেমোরিতে প্রবেশের আগে একই সামারাইজেশন লেয়ারের (summarization layer) মাধ্যমে পাঠানো হয়। এই লেয়ারটি দাবি (claims), পদ্ধতি (procedures), ডেটা পয়েন্ট এবং সম্পর্কগুলো বের করে আনে। এটি সেই অপ্রয়োজনীয় তথ্য বা নয়েজ (noise) বাদ দিয়ে দেয় যা মানুষ স্বাভাবিকভাবেই এড়িয়ে যায়।
কেন সামারাইজেশন একটি স্কেলিং কৌশল
সামারাইজেশনকে একটি বিলাসিতা বা অতিরিক্ত ফিচার হিসেবে দেখার একটি প্রবণতা রয়েছে, যা থাকা ভালো কিন্তু অপরিহার্য নয়। এটি ভুল। একটি ল্যাঙ্গুয়েজ-মডেল এজেন্টের জন্য, সামারাইজেশন হলো একটি স্কেলিং প্রয়োজনীয়তা।
কনটেক্সট উইন্ডোর (Context window) সীমাবদ্ধতা রয়েছে। রিট্রিভাল বাজেটের (Retrieval budget) খরচ রয়েছে। একটি কুকি ব্যানার বা ভিডিও স্পনসর বার্তার পেছনে ব্যয় করা প্রতিটি টোকেন হলো এমন একটি টোকেন যা আপনি রিজনিং বা যুক্তিনির্ভর কাজের জন্য ব্যবহার করতে পারবেন না। যখন আপনার এজেন্ট একটি উত্তর প্রস্তুত করে, তখন চারপাশে বেশি টেক্সট থাকলেই সেটি আরও বুদ্ধিমান হয়ে ওঠে না। বরং সঠিক টেক্সট থাকলেই সেটি আরও বুদ্ধিমান হয়ে ওঠে।
ইনজেশন (ingestion) করার সময় অপ্রয়োজনীয় তথ্য বা নয়েজ বাদ দেওয়ার মাধ্যমে সিস্টেমটি সিগন্যালকে সংকুচিত করে। আপনার এজেন্ট একই কনটেক্সট বাজেটের মধ্যে আরও বিস্তৃত উৎস ব্যবহার করতে পারে। যেখানে আগে দুটি র (raw) ডকুমেন্টে সমস্যা হতো, সেখানে এখন দশটি সারসংক্ষেপ করা (distilled) ডকুমেন্ট অনায়াসেই জায়গা করে নিতে পারে। এই ঘনত্বের কারণেই এজেন্টটি মাত্র পাঁচটি উৎস পরিচালনা করা একটি ছোট প্রোটোটাইপ থেকে শত শত উৎস পরিচালনা করা একটি প্রোডাকশন সিস্টেমে স্কেল করতে পারে। মেমরি ফুটপ্রিন্ট (memory footprint) নিয়ন্ত্রণযোগ্য থাকে। রিট্রিভালের মান উন্নত হয় কারণ অপ্রাসঙ্গিক ওভারল্যাপ বা পুনরাবৃত্তি দূর হয়ে যায়। টোকেন খরচ কমে যায় কারণ আপনি এখন আর অপ্রয়োজনীয় বা বয়েলারপ্লেট (boilerplate) টেক্সট এমবেড এবং কুয়েরি করার জন্য অর্থ দিচ্ছেন না।
এটি কোনো আক্রমণাত্মক লসি কমপ্রেশন (lossy compression) নয় যা সূক্ষ্ম বিষয়গুলোকে ছুড়ে ফেলে দেয়। এটি হলো পাইপলাইনে এনকোড করা একটি সম্পাদকীয় বিচারবুদ্ধি। সামারি বা সারসংক্ষেপটি প্রযুক্তিগত বিবরণ, নামযুক্ত সত্তা (named entities), কার্যকারণ সম্পর্ক এবং নির্দেশনামূলক ধাপগুলো সংরক্ষণ করে। এটি ফরম্যাটিংয়ের আবর্জনা এবং অপ্রাসঙ্গিক কথোপকথন বাদ দিয়ে দেয়।
শুরু করা যাক
সেটআপটি ইচ্ছাকৃতভাবে খুব সহজ রাখা হয়েছে কারণ সিস্টেমটির লক্ষ্য হলো আপনার কাজে বাধা না দিয়ে কাজ করা।
আপনার টার্মিনাল খুলুন এবং রুট পাথ (root path) সেট করুন:
export AGENT_HOME=/your/path
এই লাইনটি আপনার শেল প্রোফাইলে (shell profile) যোগ করে এটিকে স্থায়ী করুন, অথবা আপনার এজেন্ট যে অর্কেস্ট্রেশন লেয়ারের (orchestration layer) মাধ্যমে চলে সেখানে এটি ইনজেক্ট করুন। নিচের ডিরেক্টরি স্ট্রাকচারটি সামঞ্জস্যপূর্ণ রাখুন। এজেন্ট তার ফোল্ডারগুলো—সেগুলোর নাম knowledge/, memory/, summaries/ বা অন্য কিছু যাই হোক না কেন—সেই রুট পাথের সাপেক্ষে থাকার প্রত্যাশা করে। একবার ভেরিয়েবলটি কার্যকর হয়ে গেলে, আপনার ওয়েব পেজ, ট্রান্সক্রিপ্ট এবং নিবন্ধগুলোর দিকে এজেন্টকে নির্দেশ করুন। ইনজেশন এবং সামারাইজেশন পাইপলাইন বাকি কাজগুলো সামলে নেবে।
আপনি যদি আগের কোনো ভার্সন থেকে মাইগ্রেট করেন, তবে প্রক্রিয়াটি একইভাবে সহজ। আপনার বিদ্যমান ডেটা নতুন $AGENT_HOME হায়ারার্কিতে (hierarchy) সরিয়ে নিন, ভেরিয়েবলটি আপডেট করুন এবং এজেন্ট সঠিকভাবে পাথ (path) খুঁজে পাচ্ছে কিনা তা যাচাই করুন। কোনো মাইগ্রেশন স্ক্রিপ্ট বা ডেটাবেস স্কিমা পরিবর্তনের প্রয়োজন নেই। ডিস্কে এজেন্ট কোথায় অবস্থান করছে তার জন্য কেবল একটি একক সত্য উৎস (single source of truth) থাকবে।
আসল সারমর্ম
উন্নত মেমরি ম্যানেজমেন্ট মানে বেশি ডেটা জমিয়ে রাখা নয়। এটি হলো আপনার কাছে থাকা ডেটাকে সঠিকভাবে সাজানো বা কিউরেট (curate) করা। ভার্সন 0.0.2 পোর্টেবিলিটি এবং সামারাইজেশনকে কোনো afterthought বা afterthought হিসেবে না দেখে বরং প্রধান বিষয় হিসেবে বিবেচনা করে। আপনি কোনো কিছু নষ্ট না করেই এক মেশিন থেকে অন্য মেশিনে আপনার এজেন্ট সরিয়ে নেওয়ার স্বাধীনতা পাবেন এবং এমন একটি কনটেক্সট উইন্ডোর দক্ষতা পাবেন যা প্রকৃতপক্ষে প্রাসঙ্গিক তথ্য ধারণ করে।
আপনার হোম ডিরেক্টরি সেট করুন। এজেন্টকে আসল উৎসগুলো দিন। সিস্টেমটিকে অপ্রয়োজনীয় আবর্জনা বাদ দিতে দিন। আপনি পাথ এরর (path error) ডিবাগ করতে কম সময় এবং নয়েজ প্রসেস করতে কম টাকা ব্যয় করবেন, এবং এজেন্ট যা শিখেছে তা ব্যবহার করতে বেশি সময় পাবেন।
উৎস: https://dev.to/mage0535/thinking-1-analyze-the-request-12go
কমিউনিটি: https://t.me/GyaanSetuAi
