ملٹی ٹیننسی (Multi-Tenancy) ہی ایجنٹ پلیٹ فارم کا اصل مسئلہ ہے
زیادہ تر ایجنٹ ڈیمو اس لیے کام کرتے ہیں کیونکہ ان کا صرف ایک ہی صارف ہوتا ہے۔
ایک صارف کا مطلب ہے ایک میموری اسٹور، ایک ٹول سیٹ، اور ایک ہی 'ہیپی پاتھ' (happy path)۔ وہاں الگ رکھنے کے لیے کچھ بھی نہیں ہوتا۔
جب آپ ایک ڈیمو کو پلیٹ فارم میں تبدیل کرتے ہیں، تو مشکل حصہ پرامپٹس (prompts) نہیں ہوتا۔ مشکل حصہ آئسولیشن (isolation) یعنی علیحدگی ہے۔
کیا ہر ڈیٹا بیس کوئری، کیش کی (cache key)، اسٹریم، ٹول کال، اور میموری لک اپ یہ ثابت کر سکتا ہے کہ وہ کس ٹیننٹ (tenant) سے تعلق رکھتا ہے؟ اگر ایک بھی ایسا نہیں کر سکتا، تو آپ کے پاس ڈیٹا لیک ہونے کا خطرہ موجود ہے۔
بہت سی ٹیمیں ماڈل کے انتخاب یا میموری کے معیار پر توجہ دیتی ہیں۔ وہ یہ پوچھنا بھول جاتی ہیں کہ کیا ایک ٹیننٹ کا ڈیٹا اور اخراجات دوسرے سے الگ رہتے ہیں۔
آئسولیشن کوئی ایسا کام نہیں ہے جسے آپ آخر میں شامل کریں۔ یہ آپ کے پلیٹ فارم کی بنیاد ہے۔
ایک حقیقی ایجنٹ پلیٹ فارم بنانے کے لیے، ان میکانزم پر غور کریں:
- گراف میں لے جایا جانے والا ایک ٹائپڈ ریکوسٹ کانٹیکسٹ (typed request context)۔
- ہر حد (boundary) پر اسکوپڈ رسائی (scoped access)۔
- ایسے ٹیسٹ جو ٹیننٹ لیکس کو حادثے بننے سے پہلے پکڑ لیں۔
ایک سنگل یوزر ایجنٹ سیکیورٹی کو نظر انداز کرتے ہوئے بھی متاثر کن لگ سکتا ہے۔ یہ ٹیننٹ فلٹر کے بغیر سرچ ٹول کو کال کر سکتا ہے یا ایک سادہ آئی ڈی کے تحت ہسٹری اسٹور کر سکتا ہے۔ یہ ایک ڈیمو کے لیے تو ٹھیک ہے، لیکن ایک پلیٹ فارم کے لیے ناکام ہے۔
ایک پلیٹ فارم میں، ایجنٹ کو ہر مرحلے پر ایک حد (boundary) برقرار رکھنی چاہیے۔ اگر ایجنٹ اس حد کو چھوڑ دیتا ہے، تو وہ غلط شخص کو بالکل درست جواب دے سکتا ہے۔ یہ ایک ناکامی ہے۔
ڈیٹا، ٹولز، یا میموری کو چھونے والا ہر آپریشن ماڈل کے عمل کرنے سے پہلے ٹیننٹ کے ذریعے اسکوپڈ ہونا چاہیے۔ یہ ایجنٹ رن ٹائم پر لاگو ہونے والی معیاری بیک اینڈ سیکیورٹی ہے۔
آپ کے آرکیٹیکچر کے لیے عملی اقدامات:
- بکھرے ہوئے پیرامیٹرز کے بجائے ایک واحد
RequestContextآبجیکٹ استعمال کریں۔ - ہر حد (boundary) کو یا تو کانٹیکسٹ قبول کرنے والا بنائیں یا اسے ناکام (fail) کر دیں۔
- ماڈل کے دیکھنے سے پہلے ٹول کیٹلاگز کو فلٹر کریں۔
- اتھارائزیشن کے لازمی حصے کے طور پر ویکٹر فلٹرنگ (vector filtering) کا استعمال کریں۔
- اس بات کو یقینی بنائیں کہ ٹریسز اور لاگز حساس ڈیٹا کے بجائے غیر واضح (opaque) ٹیننٹ ٹیگز استعمال کریں۔
ماڈل سے اپنے لیے ٹیننٹ کو یاد رکھنے کا نہ کہیں۔ ماڈل ڈیٹا پر استدلال (reason) کر سکتا ہے، لیکن اسے کبھی بھی یہ فیصلہ نہیں کرنا چاہیے کہ اس ڈیٹا کا مالک کون ہے۔
اسکوپڈ راستے کو سب سے آسان راستہ بنائیں۔ اگر آپ سنگل یوزر ماڈل کے گرد پلیٹ فارم بناتے ہیں، تو جس دن آپ کی پہلی حقیقی تنظیم شامل ہوگی، آپ کو اسے مکمل طور پر دوبارہ لکھنا پڑے گا۔
ایک ایجنٹ فلو کو ٹریس کرنے سے آغاز کریں۔ ایچ ٹی ٹی پی (HTTP) ریکوسٹ سے لے کر آخری ٹول کال تک ٹیننٹ کانٹیکسٹ کا پیچھا کریں۔ ہر اس جگہ کا نقشہ بنائیں جہاں وہ کانٹیکسٹ کاپی یا ڈراپ ہوتا ہے۔ وہی نقشہ ہے جہاں آپ کا اصل خطرہ چھپا ہے۔
Source: https://dev.to/luffy_14/multi-tenancy-is-the-real-agent-platform-problem-1dh2
Optional learning community: https://t.me/GyaanSetuAi
