ایسی AI ایپلی کیشنز بنانا جو حقیقت میں کام کریں، اس کا تعلق بہترین پرامپٹ (prompt) تیار کرنے سے کم اور اس معلومات کو کنٹرول کرنے سے زیادہ ہے جو آپ ماڈل کو فراہم کرتے ہیں۔ اگر آپ کبھی کسی اسسٹنٹ کے ساتھ طویل چیٹ میں بیٹھے ہوں اور پھر آپ کو احساس ہو کہ وہ وہ بات بھول گیا ہے جو آپ نے دس منٹ پہلے کہی تھی، تو آپ پہلے ہی محسوس کر چکے ہیں کہ جب کانٹیکسٹ انجینئرنگ (context engineering) ناکام ہوتی ہے تو کیا ہوتا ہے۔ یہ فرض کرنا آسان ہے کہ AI کی یادداشت خراب ہے۔ حقیقت میں، آپ کانٹیکسٹ ونڈو (context window) کی سخت حدود سے ٹکرا گئے تھے۔
ایسے سسٹمز بنانے کے لیے جو قابل اعتماد اور فوری جواب دینے والے ہوں، آپ کو تین بنیادی باتوں کو سمجھنے کی ضرورت ہے: ٹوکنز (tokens)، کانٹیکسٹ ونڈوز (context windows)، اور کانٹیکسٹ اور میموری کے درمیان فرق۔
ٹوکنز اصل کرنسی ہیں
ٹوکن کوئی لفظ نہیں ہے۔ جب آپ کسی ماڈل کو ٹیکسٹ بھیجتے ہیں، تو ایک ٹوکنائزر (tokenizer) اسے چھوٹے ٹکڑوں میں تقسیم کر دیتا ہے۔ "cat" یا "the" جیسے مختصر اور عام الفاظ شاید ایک ایک ٹوکن پر مشتمل ہوں۔ "internationalization" جیسا پیچیدہ تکنیکی لفظ کئی حصوں میں تقسیم ہو جاتا ہے۔ رموزِ اوقاف (punctuation)، خالی جگہیں (spaces)، اور خصوصی حروف بھی شمار کیے جاتے ہیں۔ یہ اس لیے اہم ہے کیونکہ ٹوکنز ہی سب کچھ کنٹرول کرتے ہیں: آپ کا API بل، جواب کی رفتار، اور آؤٹ پٹ کا معیار۔
وہ ڈویلپر جو الفاظ گن کر اخراجات کا منصوبہ بناتا ہے، وہ اندھیرے میں تیر رہا ہے۔ کوڈ بریکٹس اور طویل ویری ایبل ناموں سے بھرا ہوا سو الفاظ کا پرامپٹ توقعات سے کہیں زیادہ بڑھ سکتا ہے۔ یہی وجہ ہے کہ ٹوکنائزر آزاد ٹولز کے طور پر موجود ہیں۔ کوئی فیچر لانچ کرنے سے پہلے، اپنے عام پی لوڈز (payloads) کو ایک ٹوکنائزر سے گزاریں۔ آپ اکثر دیکھیں گے کہ سسٹم کی ہدایات، فارمیٹنگ کا اضافی کوڈ (boilerplate)، اور چیٹ کی ہسٹری، صارف کے اصل سوال کے مقابلے میں آپ کے بجٹ کا زیادہ حصہ استعمال کر لیتے ہیں۔ پہلے دن سے ہی ٹوکنز کو ایک نایاب وسیلے کے طور پر دیکھیں۔
کانٹیکسٹ ونڈو ایک مستقل وائٹ بورڈ ہے
کانٹیکسٹ ونڈو معلومات کی وہ کل مقدار ہے جو ایک ماڈل ایک ہی درخواست (request) میں دیکھ سکتا ہے۔ اسے مخصوص پیمائش والے ایک وائٹ بورڈ کے طور پر سمجھیں۔ آپ اسے سسٹم کے قوانین، گفتگو کی ہسٹری، حاصل کردہ دستاویزات، اور موجودہ سوال سے بھر سکتے ہیں۔ لیکن ایک بار جب سطح بھر جائے، تو کچھ نہ کچھ قربان کرنا پڑتا ہے۔ پرانے نوٹس کو مٹانا ہوگا، ان کی تصویر لے کر خلاصہ کرنا ہوگا، یا بورڈ بس بھر جائے گا۔
جدید ماڈلز چند ہزار سے لے کر لاکھوں ٹوکنز تک کی کانٹیکسٹ ونڈوز کا اشتہار دیتے ہیں۔ ایک بڑے ونڈو کو لامحدود اسٹوریج سمجھنا پرکشش لگتا ہے۔ لیکن ایسا نہیں ہے۔ وائٹ بورڈ کی بھی حدود ہوتی ہیں۔ جب ہسٹری حد سے تجاوز کر جائے، تو ایپلی کیشن کو پرانے پیغامات کو ختم کرنا پڑتا ہے یا انہیں کمپریس (compress) کرنا پڑتا ہے۔ اس پابندی کو سمجھنے سے آپ کو ونڈو کو ڈیٹا بیس کے بجائے ایک فعال ورک سپیس (workspace) کے طور پر استعمال کرنے میں مدد ملتی ہے۔
کانٹیکسٹ میموری نہیں ہے
یہاں ایک ایسا فرق ہے جو تجربہ کار ڈویلپرز کو بھی الجھا دیتا ہے۔ ماڈل بذاتِ خود 'اسٹیٹ لیس' (stateless) ہوتا ہے۔ اسے کل، پچھلے ہفتے، یا دس منٹ پہلے کسی دوسرے سیشن میں آپ کی کوئی بات یاد نہیں رہتی۔ جب کوئی AI ایسا لگتا ہے کہ اسے یاد ہے کہ آپ JavaScript کے مقابلے میں Python کو ترجیح دیتے ہیں، یا آپ کو مختصر جوابات پسند ہیں، تو یہ یادداشت ایپلی کیشن لیئر (application layer) میں ہوتی ہے، ماڈل میں نہیں۔
ایپلی کیشن ان حقائق کو ڈیٹا بیس، کیش (cache)، یا میموری اسٹور میں محفوظ کرتی ہے۔ ہر نئی درخواست پر، یہ متعلقہ پروفائل ڈیٹا کو دوبارہ پرامپٹ میں شامل کر دیتی ہے۔ ماڈل محض ایک اسکرپٹ پڑھ رہا ہوتا ہے جس میں پہلے ایکٹ کے مکالمے بھی شامل ہوتے ہیں۔ اس کی اپنی کوئی مستقل پہچان نہیں ہوتی۔ جب آپ اس فرق کو سمجھ لیتے ہیں، تو آپ کا آرکیٹیکچر بدل جاتا ہے۔ آپ ماڈل سے یاد رکھنے کا مطالبہ کرنا چھوڑ دیتے ہیں اور ایسے سسٹمز ڈیزائن کرنا شروع کر دیتے ہیں جو صحیح وقت پر صحیح کانٹیکسٹ حاصل کرتے ہیں۔
زیادہ کانٹیکسٹ کیوں الٹا اثر کر سکتا ہے
عام عقل یہ کہتی ہے کہ پس منظر کی زیادہ معلومات سے بہتر جوابات ملنے چاہئیں۔ اکثر اس کے برعکس ہوتا ہے۔ ضرورت سے زیادہ کانٹیکسٹ شور (noise) پیدا کرتا ہے۔ اگر آپ ماڈل کو پورا کوڈ بیس دے دیتے ہیں جبکہ آپ کو صرف ایک فنکشن ٹھیک کرنا ہو، تو آپ اسے شور میں سے اشارہ تلاش کرنے پر مجبور کر دیتے ہیں۔ محققین نے "Lost in the Middle" اثر کی نشاندہی کی ہے: ماڈلز اکثر پرامپٹ کے آغاز اور اختتام کی تفصیلات پر زیادہ توجہ دیتے ہیں، جبکہ درمیان میں دبی ہوئی معلومات کمزور ہو جاتی ہیں یا نظر انداز کر دی جاتی ہیں۔ یہ کوئی ایسا بگ (bug) نہیں ہے جسے آپ چالاک الفاظ سے ٹھیک کر سکیں۔ یہ ٹرانسفارمر پر مبنی آرکیٹیکچرز (transformer-based architectures) میں موجود ایک ساختی رویہ ہے۔
ضرورت سے زیادہ بھرے ہوئے پرامپٹس آپ کو مالی اور تکنیکی نقصان بھی پہنچاتے ہیں۔ ہر اضافی ٹوکن کے لیے کمپیوٹیشن کی ضرورت ہوتی ہے۔ لیٹنسی (latency) بڑھ جاتی ہے۔ اخراجات بڑھ جاتے ہیں۔ صارف کا صبر کم ہو جاتا ہے۔ غیر متعلقہ دستاویزات سے بھرے ہوئے پرامپٹ تضادات پیدا کرتے ہیں، ماڈل کو غیر ضروری تفصیلات سے بھٹکا دیتے ہیں، اور اس بات کے امکانات بڑھا دیتے ہیں کہ جواب غلط مسئلے پر مرکوز ہو جائے۔ زیادہ مقدار، درستگی کی دشمن ہے۔
بہتر کانٹیکسٹ انجینئرنگ کیسے کریں
اچھی کانٹیکسٹ انجینئرنگ بے رحمانہ ایڈیٹنگ کا نام ہے۔ اسے عملی جامہ پہنانے کا طریقہ یہ ہے:
صرف وہی بھیجیں جس کی کام کے لیے ضرورت ہو۔ اگر کوئی صارف آپ کی ریفنڈ پالیسی کے بارے میں پوچھتا ہے، تو ایمپلائی ہینڈ بک، API ڈاکومنٹیشن، اور گزشتہ سہ ماہی کی مارکیٹنگ کاپی شامل نہ کریں۔ جامعیت سے زیادہ اہمیت متعلقہ معلومات کی ہے۔
متعلقہ دستاویزات حاصل کرنے کے لیے RAG کا استعمال کریں۔ Retrieval-Augmented Generation آپ کو ایک بڑے نالج بیس میں تلاش کرنے اور صرف بہترین مماثل اقتباسات کو پرامپٹ میں شامل کرنے کی اجازت دیتا ہے۔ ونڈو میں ہزار صفحات پر مشتمل مینوئل ڈالنے کے بجائے، آپ اپنی دستاویزات کو ایمبیڈ کرتے ہیں، صارف کے سوال کے خلاف سیمنٹک سرچ چلاتے ہیں، اور تین سب سے زیادہ متعلقہ پیراگراف شامل کرتے ہیں۔ ماڈل کو وہی ملتا ہے جس کی اسے ضرورت ہوتی ہے، اور آپ کا ٹوکن بجٹ بھی محفوظ رہتا ہے۔
پرانی گفتگو کا خلاصہ کریں۔ مکمل چیٹ ٹرانسکرپٹس مہنگے اور شور والے (noisy) ہوتے ہیں۔ طویل پیغام کی تاریخوں کو مسلسل خلاصوں سے بدل دیں۔ مثال کے طور پر، ماڈل کو تیسرے پیوند کے پیغامات دینے کے بجائے، ایک ہی پیراگراف محفوظ کریں: "صارف نے Django deployment کے بارے میں پوچھا، static files error کا سامنا کیا، اور permissions درست کیں۔ موجودہ مسئلہ Postgres 14 پر database migration کا فیل ہونا ہے۔" وہ خلاصہ وائٹ بورڈ کو بھرے بغیر صورتحال کو برقرار رکھتا ہے۔
طویل مدتی میموری کو فعال چیٹ سے الگ کریں۔ صارف کی ترجیحات، پروجیکٹ سیٹنگز، اور اکاؤنٹ کی ہسٹری ایک بیرونی میموری اسٹور میں ہونی چاہیے۔ اس اسٹور سے منتخب طریقے سے معلومات حاصل کریں۔ لائیو کانٹیکسٹ ونڈو میں صرف فوری کام اور تسلسل برقرار رکھنے کے لیے ضروری مختصر ترین ذاتی سیاق و سباق ہونا چاہیے۔
پروڈکشن میں ٹوکن کے استعمال کی نگرانی کریں۔ لیٹنسی (latency) میں اچانک اضافہ اکثر کانٹیکسٹ کے بڑھ جانے کی وجہ سے ہوتا ہے۔ جب درخواستیں آپ کے ماڈل کی حد کے قریب پہنچ جائیں تو الرٹس سیٹ کریں۔ غیر ضروری بوجھ والے پرامپٹس کی نشاندہی کے لیے لاگز کا جائزہ لیں۔ آپٹیمائزیشن ہر بار اسی سوال سے شروع ہوتی ہے: ہم کام کو خراب کیے بغیر کیا کچھ ہٹا سکتے ہیں؟
اصل حاصلِ کلام
بہترین AI ایپلی کیشنز اس لیے نہیں جیتتیں کہ ان کے کانٹیکسٹ ونڈوز سب سے بڑے ہوتے ہیں۔ وہ اس لیے جیتتی ہیں کیونکہ وہ نظم و ضبط کے ساتھ کانٹیکسٹ کو مینیج کرتی ہیں۔ ایک بہت بڑا وائٹ بورڈ بیکار ہے اگر وہ لکیروں سے بھرا ہوا ہو۔ ایسے سسٹم بنائیں جو معلومات حاصل کریں، خلاصہ کریں، اور فلٹر کریں۔ آپ کے صارفین کو تیز جوابات ملتے ہیں، آپ کے انفراسٹرکچر کے اخراجات قابلِ پیشن گوئی رہتے ہیں، اور آپ کے ماڈلز آخر کار اس چیز پر توجہ دیتے ہیں جو واقعی اہم ہے۔
ماخذ: AI Context Engineering: Tokens, Context Windows, & Memory
کمیونٹی: GyaanSetu AI on Telegram
