मल्टी-टेनेंसी ही असली एजेंट प्लेटफॉर्म की समस्या है
अधिकांश एजेंट डेमो इसलिए काम करते हैं क्योंकि उनमें केवल एक ही उपयोगकर्ता होता है।
एक उपयोगकर्ता का अर्थ है एक मेमोरी स्टोर, एक टूल सेट और एक हैप्पी पाथ (happy path)। यहाँ अलग रखने के लिए कुछ भी नहीं होता।
जब आप एक डेमो को प्लेटफॉर्म में बदलते हैं, तो कठिन हिस्सा प्रॉम्प्ट्स (prompts) नहीं होता। कठिन हिस्सा आइसोलेशन (isolation) है।
क्या हर डेटाबेस क्वेरी, कैश की (cache key), स्ट्रीम, टूल कॉल और मेमोरी लुकअप यह साबित कर सकता है कि वह किस टेनेंट (tenant) से संबंधित है? यदि एक भी ऐसा नहीं कर पाता है, तो डेटा लीक होने का खतरा बना रहता है।
कई टीमें मॉडल के चुनाव या मेमोरी की गुणवत्ता पर ध्यान केंद्रित करती हैं। वे यह पूछना भूल जाती हैं कि क्या एक टेनेंट का डेटा और लागत दूसरे से अलग रहती है।
आइसोलेशन कोई ऐसा कार्य नहीं है जिसे आप अंत में जोड़ते हैं। यह आपके प्लेटफॉर्म का मूल स्वरूप है।
एक वास्तविक एजेंट प्लेटफॉर्म बनाने के लिए, इन मैकेनिज्म (mechanics) पर ध्यान दें:
- ग्राफ में ले जाया जाने वाला एक टाइप्ड रिक्वेस्ट कॉन्टेक्स्ट (typed request context)।
- हर बाउंड्री पर स्कोप किया गया एक्सेस (scoped access)।
- ऐसे टेस्ट जो टेनेंट लीक को घटना बनने से पहले ही पकड़ लें।
एक सिंगल-यूज़र एजेंट सुरक्षा की अनदेखी करते हुए भी प्रभावशाली लग सकता है। यह बिना टेनेंट फ़िल्टर के सर्च टूल को कॉल कर सकता है या एक साधारण ID के तहत हिस्ट्री स्टोर कर सकता है। यह एक डेमो के लिए तो ठीक है, लेकिन एक प्लेटफॉर्म के लिए यह विफल हो जाता है।
एक प्लेटफॉर्म में, एजेंट को हर कदम पर एक बाउंड्री बनाए रखनी चाहिए। यदि एजेंट उस बाउंड्री को छोड़ देता है, तो वह गलत व्यक्ति को एकदम सही उत्तर दे सकता है। यह एक विफलता है।
डेटा, टूल या मेमोरी को छूने वाले हर ऑपरेशन को मॉडल के कार्य करने से पहले टेनेंट के आधार पर स्कोप किया जाना चाहिए। यह एजेंट रनटाइम पर लागू होने वाली मानक बैकएंड सुरक्षा है।
आपके आर्किटेक्चर के लिए व्यावहारिक कदम:
- लूज़ पैरामीटर्स (loose parameters) के बजाय एक सिंगल
RequestContextऑब्जेक्ट का उपयोग करें। - हर बाउंड्री को या तो कॉन्टेक्स्ट स्वीकार करने वाला बनाएं या उसे विफल (fail) कर दें।
- मॉडल के देखने से पहले टूल कैटलॉग को फ़िल्टर करें।
- ऑथोराइजेशन (authorization) के अनिवार्य हिस्से के रूप में वेक्टर फ़िल्टरिंग का उपयोग करें।
- सुनिश्चित करें कि ट्रेसेस (traces) और लॉग्स संवेदनशील डेटा के बजाय ओपेक (opaque) टेनेंट टैग का उपयोग करें।
मॉडल से अपने लिए टेनेंट को याद रखने के लिए न कहें। मॉडल डेटा पर तर्क (reason) कर सकता है, लेकिन उसे यह कभी तय नहीं करना चाहिए कि उस डेटा का मालिक कौन है।
स्कोप किए गए पथ (scoped path) को सबसे आसान पथ बनाएं। यदि आप सिंगल-यूज़र मॉडल के आधार पर प्लेटफॉर्म बनाते हैं, तो जिस दिन आपकी पहली वास्तविक संस्था (organization) जुड़ेगी, आपको पूरे सिस्टम को फिर से लिखना पड़ेगा।
एक एजेंट फ्लो को ट्रेस करने से शुरुआत करें। HTTP रिक्वेस्ट से लेकर अंतिम टूल कॉल तक टेनेंट कॉन्टेक्स्ट का अनुसरण करें। हर उस जगह को मैप करें जहाँ वह कॉन्टेक्स्ट कॉपी या ड्रॉप किया जाता है। वही मैप है जहाँ आपका वास्तविक जोखिम छिपा है।
Source: https://dev.to/luffy_14/multi-tenancy-is-the-real-agent-platform-problem-1dh2
Optional learning community: https://t.me/GyaanSetuAi
