زیادہ تر AI ایجنٹس کی یادداشت (recall) تو بہترین ہوتی ہے لیکن اس بارے میں ان کا فیصلہ (judgment) بہت ناقص ہوتا ہے کہ کس چیز کو یاد رکھنا ضروری ہے۔ وہ ہزاروں صفحات کو جذب (ingest) کر سکتے ہیں، لیکن پھر اپنے ہی سیاق و سباق (context) میں ڈوب جاتے ہیں کیونکہ کسی نے انہیں غیر متعلقہ حصوں کو بھولنا نہیں سکھایا۔ Knowledge and Memory Management ورژن 0.0.2 کو بالکل اسی مسئلے کو حل کرنے کے لیے بنایا گیا ہے۔ یہ کوئی معمولی پیچ (patch) نہیں ہے۔ یہ اس بات پر نئے سرے سے غور کرتا ہے کہ ایک ایجنٹ اپنی معلومات کو کیسے محفوظ کرتا ہے، منتقل کرتا ہے، اور انہیں ترجیح دیتا ہے۔
میموری کا مسئلہ
ایجنٹس معمول کے مطابق متن کے ہر ٹکڑے کو مقدس سمجھتے ہیں۔ ایک خام ویب پیج اپنے نیویگیشن مینیو، کوکی بینرز اور فوٹر لنکس کے ساتھ اسٹوریج میں ڈال دیا جاتا ہے۔ ایک ویڈیو ٹرانسکرپٹ ہر “um”، ٹائم اسٹیمپ اور اسپانسر کے اشتہارات کے ساتھ مکمل طور پر آ جاتا ہے۔ ایک آرٹیکل میں اصل معلومات سے زیادہ اشتہاری مواد (ad-copy markup) ہو سکتا ہے۔ جب معلومات کی واپسی (retrieval) ہوتی ہے، تو سسٹم اصل معلومات (signal) تلاش کرنے کے لیے اس تمام شور (noise) میں سے چھان بین کرتا ہے۔ یہ ضیاع دو جگہوں پر نظر آتا ہے: آپ کا کانٹیکسٹ ونڈو (context window) فضول مواد سے بھر کر سکڑ جاتا ہے، اور آپ کا انفراسٹرکچر بل بڑھ جاتا ہے کیونکہ آپ بے معنی متن کو پروسیس اور ایمبیڈ کرنے کے پیسے دے رہے ہوتے ہیں۔
اسکیلنگ (scaling) کا مسئلہ بھی اتنا ہی مایوس کن ہے۔ زیادہ تر ابتدائی مرحلے کے ایجنٹس ہارڈ کوڈڈ (hardcoded) راستوں کے ذریعے ایک ہی مشین سے جڑے ہوتے ہیں۔ اگر آپ پروجیکٹ کو اپنے لیپ ٹاپ سے سرور پر، یا ایک VPS سے دوسرے پر منتقل کریں، تو آپ ٹوٹے ہوئے حوالوں (references) کو ٹھیک کرنے کے لیے کنفیگریشن فائلوں میں grep کرنے میں پورا دوپہر گزار دیتے ہیں۔ ایجنٹ سافٹ ویئر رہنا چھوڑ دیتا ہے اور ایک ایسی نازک آرٹ انسٹالیشن بن جاتا ہے جو صرف ایک ہی کمرے میں رہ سکتی ہے۔
V0.0.2 میں کیا بدلا
یہ ریلیز دونوں مسائل کا براہ راست مقابلہ کرتی ہے۔ یہ ایک پورٹیبل پاتھنگ اسکیم (portable pathing scheme) اور ایک متحد خلاصہ نگاری پائپ لائن (unified summarization pipeline) متعارف کرواتی ہے جو معلومات کو میموری تک پہنچنے سے پہلے ہی صاف کر دیتی ہے۔ اس کا نتیجہ ایک ایسا ایجنٹ ہے جسے منتقل کرنا آسان اور چلانا سستا ہے۔
آپ اپنے انفراسٹرکچر سے لڑنا چھوڑ دیتے ہیں۔ آپ محدود کانٹیکسٹ میں بھاری بھرکم دستاویزات بھرنا بند کر دیتے ہیں۔ ایجنٹ بس بہتر طریقے سے یاد رکھتا ہے۔
$AGENT_HOME کے ساتھ ڈیزائن کے لحاظ سے پورٹیبل
سب سے عملی تبدیلی $AGENT_HOME انوائرمنٹ ویری ایبل (environment variable) کا تعارف ہے۔ ہر وہ راستہ جسے سسٹم چھوتا ہے—knowledge bases، ورکنگ میموری، کیش شدہ خلاصے (cached summaries)، سیشن لاگز—اس روٹ کے لحاظ سے حل (resolve) ہوتا ہے۔ اس کا مطلب ہے کہ آپ کوڈ کی ایک لائن کو چھوئے بغیر اپنی پوری ایجنٹ ڈائریکٹری کہیں بھی منتقل کر سکتے ہیں۔
ایک عام مائیگریشن (migration) کا تصور کریں۔ کل آپ کا ایجنٹ /srv/ai-agent پر ایک DigitalOcean droplet پر موجود تھا۔ آج آپ اسے مقامی طور پر (locally) چلانا چاہتے ہیں یا کسی ساتھی کے حوالے کرنا چاہتے ہیں۔ ماضی میں، آپ کو JSON کنفیگز، Python اسکرپٹس اور شیل ریپرز (shell wrappers) میں بکھرے ہوئے ہارڈ کوڈڈ ایبزولیوٹ پاتھ (hardcoded absolute paths) ملتے۔ آپ درجن بھر فائلوں میں sed استعمال کرتے، امید کرتے کہ شاید آپ نے ہر حوالہ پکڑ لیا ہو۔ ورژن 0.0.2 کے ساتھ، آپ یہ سب مکمل طور پر چھوڑ دیتے ہیں۔ آپ فولڈر کاپی کرتے ہیں، export AGENT_HOME=/your/path سیٹ کرتے ہیں، اور چلا دیتے ہیں۔ انجیشن اسکرپٹس (ingestion scripts)، میموری انڈیکس، اور ریٹریول لیئر (retrieval layer) سب خود بخود ترتیب میں آ جاتے ہیں کیونکہ وہ یہ فرض کرنے کے بجائے کہ انہیں پہلے سے معلوم ہے، آپریٹنگ سسٹم سے پوچھتے ہیں کہ ہوم (home) کہاں ہے۔
یہ پورٹیبلٹی محض سہولت سے بڑھ کر ہے۔ یہ آپ کے سیٹ اپ کو دوبارہ تخلیق کرنے کے قابل (reproducible) بناتی ہے۔ آپ اپنی نالج ڈائریکٹری کو ورژن کنٹرول میں ٹریک کر سکتے ہیں بغیر ریپوزٹری کو ایسے راستوں سے خراب کیے جو صرف آپ کی مشین پر ہی درست ہوتے ہیں۔ ایک ساتھی ریپوزٹری کلون کرتا ہے، $AGENT_HOME کو اپنے فائل سسٹم کی طرف اشارہ کرتا ہے، اور اپنا ڈیٹا انجیسٹ کرتا ہے۔ آپ کا CI پائپ لائن ایک نیا ایجنٹ شروع کر سکتا ہے، ایک ویری ایبل سیٹ کر سکتا ہے، اور ہر ماحول کے لیے کنفیگز کو دوبارہ لکھے بغیر اس کے طرزِ عمل کی تصدیق کر سکتا ہے۔
اگر آپ ایجنٹ کو systemd سروس کے طور پر چلاتے ہیں، تو ویری ایبل کو سروس یونٹ میں شامل کریں۔ اگر آپ اسے کنٹینرائز (containerize) کرتے ہیں، تو اسے اپنے Dockerfile یا compose فائل میں پاس کریں۔ اگر آپ متعدد شیلز (shells) پر کام کرتے ہیں، تو اسے اپنی .bashrc یا .zshrc میں ڈال دیں تاکہ یہ برقرار رہے۔ یہ سیٹ اپ جان بوجھ کر سادہ (boring) رکھا گیا ہے کیونکہ انفراسٹرکچر کو سادہ ہی ہونا چاہیے۔
تین ذرائع، ایک کلین اپ پائپ لائن
سسٹم تین مخصوص چینلز سے معلومات جذب کرتا ہے:
- ویب پیجز۔ یہ HTML بوائلر پلیٹ (boilerplate) میں لپٹے ہوئے آتے ہیں۔ اصل مواد تین ہزار الفاظ کے مارک اپ، نیویگیشن اور کمنٹ سیکشنز کے اندر چھپے ہوئے محض تین سو الفاظ ہو سکتے ہیں۔
- ویڈیو ٹرانسکرپٹس۔ اسپیچ ٹو ٹیکسٹ (Speech-to-text) کا آؤٹ پٹ اپنی طوالت کے لیے مشہور ہے۔ غیر ضروری الفاظ (fillers)، تکرار، ٹائم اسٹیمپس، اور موضوع سے ہٹ کر باتیں ایک کم کثافت (low-density) والا بہاؤ پیدا کرتی ہیں جو معلومات فراہم کیے بغیر ٹوکنز (tokens) ضائع کرتی ہیں۔
- آرٹیکلز۔ فارمیٹس میں بہت فرق ہوتا ہے۔ کچھ صاف ستھرا متن شائع کرتے ہیں۔ دوسرے اشتہارات، نیوز لیٹر سائن اپ باکسز، اور سوشل ایمبیڈز کے ساتھ پڑھنے کے تجربے کو خراب کر دیتے ہیں۔
ورژن 0.0.2 ان کو الگ تھلگ حصوں (silos) کے طور پر نہیں دیکھتا جن کی دیکھ بھال کرنی پڑے۔ اس کے بجائے، یہ ورکنگ میموری میں داخل ہونے سے پہلے ان تینوں کو ایک ہی خلاصہ کرنے والے لیئر (summarization layer) سے گزارتا ہے۔ یہ لیئر دعووں، طریقہ کار، ڈیٹا پوائنٹس اور تعلقات کو نکالتی ہے۔ یہ اس شور (noise) کو ختم کر دیتی ہے جسے انسان قدرتی طور پر نظر انداز کر دیتے ہیں۔
خلاصہ کرنا (Summarization) ایک اسکیلنگ حکمت عملی کیوں ہے
خلاصہ کرنے کو ایک اضافی فیچر سمجھنے کا رجحان پایا جاتا ہے، یعنی کوئی ایسی چیز جو اچھی تو ہے لیکن ضروری نہیں۔ یہ غلط ہے۔ ایک لینگویج ماڈل ایجنٹ کے لیے، خلاصہ کرنا ایک اسکیلنگ کی ضرورت ہے۔
کانٹیکسٹ ونڈوز (Context windows) کی حدود ہوتی ہیں۔ ریٹریول بجٹ (Retrieval budgets) کی قیمت ہوتی ہے۔ کوکی بینر یا ویڈیو اسپانسر کے اشتہار پر خرچ ہونے والا ہر ٹوکن وہ ٹوکن ہے جسے آپ استدلال (reasoning) پر خرچ نہیں کر سکتے۔ جب آپ کا ایجنٹ جواب تیار کرتا ہے، تو وہ زیادہ متن ہونے سے ذہین نہیں بنتا، بلکہ صحیح متن ہونے سے ذہین بنتا ہے۔
ڈیٹا وصولی کے وقت شور (noise) کو ختم کر کے، سسٹم سگنل کو کمپریس کر دیتا ہے۔ آپ کا ایجنٹ اسی کانٹیکسٹ بجٹ کے اندر ذرائع کا ایک وسیع مجموعہ استعمال کر سکتا ہے۔ جہاں پہلے دو خام (raw) دستاویزات مشکل سے کام چلاتی تھیں، وہاں اب دس خلاصہ شدہ دستاویزات سما سکتی ہیں۔ یہی کثافت (density) ایجنٹ کو پانچ ذرائع سنبھالنے والے ایک ابتدائی نمونے (toy prototype) سے سینکڑوں ذرائع سنبھالنے والے پروڈکشن سسٹم تک اسکیل کرنے کی اجازت دیتی ہے۔ میموری کا استعمال قابو میں رہتا ہے۔ ریٹریول کا معیار بہتر ہو جاتا ہے کیونکہ غیر متعلقہ تکرار ختم ہو جاتی ہے۔ ٹوکن کی لاگت کم ہو جاتی ہے کیونکہ آپ بورنگ اور غیر ضروری معلومات (boilerplate) کو ایمبیڈ اور کوئری کرنے پر پیسے خرچ کرنا بند کر دیتے ہیں۔
یہ ایسی جارحانہ 'لوسی کمپریشن' (lossy compression) نہیں ہے جو باریکیوں کو ختم کر دے۔ یہ پائپ لائن میں شامل کردہ ادارتی فیصلے (editorial judgment) کے بارے میں ہے۔ خلاصہ تکنیکی تفصیلات، نامزد اداروں (named entities)، وجوہاتی روابط اور ہدایاتی مراحل کو برقرار رکھتا ہے۔ یہ فارمیٹنگ کے فضول مواد اور گفتگو کے اضافی حصوں کو ہٹا دیتا ہے۔
آغاز کیسے کریں
سیٹ اپ کو جان بوجھ کر انتہائی سادہ رکھا گیا ہے کیونکہ سسٹم کا مقصد آپ کے کام میں مداخلت نہ کرنا ہے۔
اپنا ٹرمینل کھولیں اور روٹ پاتھ (root path) سیٹ کریں:
export AGENT_HOME=/your/path
اس لائن کو اپنے شیل پروفائل (shell profile) میں شامل کر کے اسے مستقل بنائیں، یا اسے اس آرکیسٹریشن لیئر (orchestration layer) میں شامل کر دیں جو آپ کے ایجنٹ کو چلا رہی ہے۔ نیچے ڈائریکٹری کا ڈھانچہ مستقل رکھیں۔ ایجنٹ توقع کرتا ہے کہ اس کے فولڈرز—چاہے آپ انہیں knowledge/، memory/، summaries/ یا کچھ اور نام دیں—اس روٹ کے لحاظ سے موجود ہوں۔ ایک بار جب ویری ایبل فعال ہو جائے، تو ایجنٹ کو اپنے ویب صفحات، ٹرانسکرپٹس اور مضامین کی طرف اشارہ کر دیں۔ ڈیٹا وصولی اور خلاصہ کرنے والا پائپ لائن باقی کام سنبھال لیتا ہے۔
اگر آپ کسی پرانے ورژن سے منتقل ہو رہے ہیں، تو عمل اتنا ہی سادہ ہے۔ اپنے موجودہ ڈیٹا کو نئی $AGENT_HOME ہائیرارکی میں منتقل کریں، ویری ایبل کو اپ ڈیٹ کریں، اور تصدیق کریں کہ ایجنٹ راستوں (paths) کو درست طریقے سے پہچان رہا ہے۔ کوئی مائیگریشن اسکرپٹس نہیں۔ ڈیٹا بیس اسکیما میں کوئی تبدیلی نہیں۔ بس ڈسک پر ایجنٹ کے مقام کے لیے ایک واحد مستند ذریعہ (single source of truth)۔
اصل حاصل
بہتر میموری مینجمنٹ کا مطلب زیادہ ڈیٹا جمع کرنا نہیں ہے۔ یہ اس ڈیٹا کی ترتیب (curating) کے بارے میں ہے جو آپ کے پاس پہلے سے موجود ہے۔ ورژن 0.0.2 پورٹیبلٹی اور خلاصہ کرنے کو محض بعد کے خیالوں کے بجائے بنیادی اہمیت دیتا ہے۔ آپ کو کسی بھی چیز کو خراب کیے بغیر اپنے ایجنٹ کو مشینوں کے درمیان منتقل کرنے کی آزادی ملتی ہے، اور آپ کو ایک ایسے کانٹیکسٹ ونڈو کی کارکردگی ملتی ہے جس میں واقعی کانٹیکسٹ موجود ہوتا ہے۔
اپنی ہوم ڈائریکٹری سیٹ کریں۔ ایجنٹ کو اصل ذرائع فراہم کریں۔ سسٹم کو فضول مواد ہٹانے دیں۔ آپ پاتھ کی غلطیوں کو ٹھیک کرنے (debugging) میں کم وقت اور شور پر کارروائی کرنے میں کم پیسہ خرچ کریں گے، اور وہ وقت زیادہ گزاریں گے جو ایجنٹ نے اصل میں سیکھا ہے۔
بنیادی ذریعہ: https://dev.to/mage0535/thinking-1-analyze-the-request-12go
کمیونٹی: https://t.me/GyaanSetuAi
