মাল্টি-টেন্যান্সিই হলো এজেন্ট প্ল্যাটফর্মের আসল সমস্যা
বেশিরভাগ এজেন্ট ডেমো কাজ করে কারণ সেখানে মাত্র একজন ব্যবহারকারী থাকে।
একজন ব্যবহারকারী মানে একটি মেমরি স্টোর, একটি টুল সেট এবং একটি হ্যাপি পাথ (happy path)। সেখানে আলাদা রাখার মতো কিছু নেই।
যখন আপনি একটি ডেমোকে প্ল্যাটফর্মে রূপান্তর করেন, তখন কঠিন অংশটি প্রম্পট নয়। কঠিন অংশটি হলো আইসোলেশন (isolation) বা বিচ্ছিন্নকরণ।
প্রতিটি ডাটাবেস কুয়েরি, ক্যাশ কী (cache key), স্ট্রিম, টুল কল এবং মেমরি লুকআপ কি প্রমাণ করতে পারে যে এটি কোন টেন্যান্টের (tenant) অন্তর্গত? যদি একটিও তা না পারে, তবে বুঝবেন একটি ডেটা লিক হওয়ার ঝুঁকি তৈরি হয়েছে।
অনেক টিম মডেল নির্বাচন বা মেমরির গুণমানের ওপর মনোযোগ দেয়। তারা এটি জিজ্ঞাসা করতে ভুলে যায় যে, একজন টেন্যান্টের ডেটা এবং খরচ অন্যজনের থেকে আলাদা থাকছে কি না।
আইসোলেশন এমন কোনো কাজ নয় যা আপনি শেষে যোগ করবেন। এটি আপনার প্ল্যাটফর্মের মূল কাঠামো।
একটি প্রকৃত এজেন্ট প্ল্যাটফর্ম তৈরি করতে, এই মেকানিক্সগুলোর দিকে নজর দিন:
- গ্রাফের মধ্যে বহন করা একটি টাইপড রিকোয়েস্ট কনটেক্সট (typed request context)।
- প্রতিটি বাউন্ডারিতে স্কোপড অ্যাক্সেস (scoped access)।
- এমন টেস্ট যা কোনো ঘটনা ঘটার আগেই টেন্যান্ট লিক শনাক্ত করতে পারে।
নিরাপত্তা উপেক্ষা করেও একটি সিঙ্গেল-ইউজার এজেন্ট চিত্তাকর্ষক মনে হতে পারে। এটি কোনো টেন্যান্ট ফিল্টার ছাড়াই একটি সার্চ টুল কল করতে পারে বা একটি সাধারণ আইডি-র অধীনে হিস্ট্রি সংরক্ষণ করতে পারে। এটি একটি ডেমোর জন্য কাজ করলেও একটি প্ল্যাটফর্মের জন্য ব্যর্থ হবে।
একটি প্ল্যাটফর্মে, এজেন্টকে প্রতিটি ধাপে একটি বাউন্ডারি বা সীমানা বজায় রাখতে হবে। যদি এজেন্ট সেই বাউন্ডারি হারিয়ে ফেলে, তবে সে ভুল ব্যক্তিকে একটি নিখুঁত উত্তর দিয়ে দিতে পারে। সেটিই হলো ব্যর্থতা।
মডেল কাজ করার আগে ডেটা, টুল বা মেমরিতে স্পর্শ করা প্রতিটি অপারেশন অবশ্যই টেন্যান্ট অনুযায়ী স্কোপড হতে হবে। এটি হলো এজেন্ট রানটাইমে প্রয়োগ করা স্ট্যান্ডার্ড ব্যাকএন্ড সিকিউরিটি।
আপনার আর্কিটেকচারের জন্য ব্যবহারিক পদক্ষেপসমূহ:
- লুজ প্যারামিটারের পরিবর্তে একটি একক
RequestContextঅবজেক্ট ব্যবহার করুন। - প্রতিটি বাউন্ডারিকে হয় কনটেক্সট গ্রহণ করতে হবে অথবা ব্যর্থ হতে হবে।
- মডেল দেখার আগেই টুল ক্যাটালগগুলো ফিল্টার করুন।
- অথরাইজেশনের একটি বাধ্যতামূলক অংশ হিসেবে ভেক্টর ফিল্টারিং ব্যবহার করুন।
- নিশ্চিত করুন যে ট্রেস এবং লগগুলোতে সেনসিটিভ ডেটার পরিবর্তে অপেক (opaque) টেন্যান্ট ট্যাগ ব্যবহার করা হয়েছে।
মডেলকে আপনার হয়ে টেন্যান্ট মনে রাখার জন্য বলবেন না। মডেল ডেটার ওপর ভিত্তি করে যুক্তি দিতে পারে, কিন্তু ডেটার মালিক কে তা নির্ধারণ করার সিদ্ধান্ত কখনোই তার নেওয়া উচিত নয়।
স্কোপড পাথ বা নির্ধারিত পথটিকেই সবচেয়ে সহজ পথ হিসেবে তৈরি করুন। আপনি যদি একটি সিঙ্গেল-ইউজার মডেলের ওপর ভিত্তি করে প্ল্যাটফর্ম তৈরি করেন, তবে আপনার প্রথম প্রকৃত সংস্থাটি যুক্ত হওয়ার দিন আপনাকে সবকিছু নতুন করে লিখতে হবে।
একটি এজেন্ট ফ্লো ট্রেস করার মাধ্যমে শুরু করুন। HTTP রিকোয়েস্ট থেকে শুরু করে চূড়ান্ত টুল কল পর্যন্ত টেন্যান্ট কনটেক্সট অনুসরণ করুন। যেখানে যেখানে সেই কনটেক্সট কপি বা ড্রপ করা হচ্ছে, সেই প্রতিটি জায়গা ম্যাপ করুন। সেই ম্যাপেই আপনার আসল ঝুঁকি লুকিয়ে আছে।
Source: https://dev.to/luffy_14/multi-tenancy-is-the-real-agent-platform-problem-1dh2
Optional learning community: https://t.me/GyaanSetuAi
