وقتی یک عامل هوش مصنوعی اعتبارنامه‌های خودش را همراه دارد و مستقیماً با سرویس‌های خارجی تماس می‌گیرد، کمتر شبیه به یک نرم‌افزار کارمندی و بیشتر شبیه به پیمانکاری با کارت اعتباری شرکت و بدون هیچ سرپرستی عمل می‌کند. شما نمی‌توانید ببینید به چه چیزی دسترسی پیدا کرده، چه کسی دسترسی را تأیید کرده یا چرا هزینه یک گفتگو ده برابر بیشتر از دیگری بوده است. لاگ‌ها در ده‌ها سرویس مختلف پراکنده می‌شوند و سوالات بی‌پایان می‌گردند.

عامل واقعاً از کدام ابزار استفاده کرد؟ چه کسی به او اجازه دسترسی به آن پایگاه داده را داد؟ چرا اجرای روز سه‌شنبه چهل هزار توکن مصرف کرد در حالی که دوشنبه فقط پنج توکن استفاده شد؟ واقعاً چقدر هزینه کردیم؟

بدون یک لایه کنترل مرکزی که بین کاربران، مدل‌ها و سرویس‌ها قرار بگیرد، این سوالات بی‌پاسخ می‌مانند. شما به یک صفحه واحد نیاز دارید که هر اتصال را تنها یک بار ثبت کند، فقط مجموعه محدودی از توابعی را که یک عامل واقعاً به آن‌ها نیاز دارد نمایش دهد و هر اجرا را به طور کامل ثبت کند. این مقاله یک آزمایشگاه پیشرفته را با استفاده از deco Studio به عنوان آن لایه کنترل محلی بررسی می‌کند. شما آن را راه‌اندازی خواهید کرد، یک سرور Model Context Protocol امن را متصل می‌کنید، دقیقاً یک تابع مجاز را نمایش می‌دهید و مشاهده خواهید کرد که وقتی یک عامل سعی می‌کند فراتر از مرزهای خود عمل کند، چه اتفاقی می‌افتد.

مشکل اعتبارنامه‌های پراکنده

یک چیدمان تیمی معمولی را تصور کنید. یک توسعه‌دهنده یک عامل را با استفاده از یک کلید شخصی به یک API جستجو متصل می‌کند. دیگری همان عامل را به یک پایگاه داده عملیاتی (production) متصل می‌کند چون دمو بی‌خطر به نظر می‌رسید. نفر سوم یک ابزار جستجوی صورت‌حساب اضافه می‌کند تا عامل بتواند «در امور فاکتور کمک کند». هر اتصال برای بقیه نامرئی است. اکنون عامل دسترسی مستقیم به جستجو، داده‌های عملیاتی و سوابق مالی دارد، اما تیم هیچ لیست واحدی از موارد فعال ندارد.

وقتی اعتبارنامه‌ها داخل عامل ذخیره می‌شوند، حاکمیت (governance) از هم می‌پاشد. شما نمی‌توانید دسترسی را به صورت مرکزی لغو کنید زیرا کلید در حافظه عامل یا فایل محیطی محلی آن قرار دارد. شما نمی‌توانید استفاده را حسابرسی کنید زیرا سرویس خارجی فقط یک فراخوانی API از یک کلاینت خودکار ناشناس می‌بیند. غافلگیری‌های هزینه‌ای روزها بعد در صورت‌حساب ابری ظاهر می‌شوند و تا آن زمان دیگر کسی یادش نیست که کدام پرامپت باعث این جهش شده است.

ساخت لایه کنترل خود در deco Studio

deco Studio این مشکل را با عمل کردن به عنوان یک مرکز (hub) محلی حل می‌کند. شما آن را روی ماشین خود اجرا می‌کنید و این ابزار به تنها مکانی تبدیل می‌شود که پیکربندی‌ها در آنجا قرار دارند. به جای پراکنده کردن کلیدهای API و تعاریف ابزار در میان عامل‌ها، شما یک اتصال را یک بار در داخل Studio ثبت می‌کنید. سپس دقیقاً تصمیم می‌گیرید که هر عامل چه توابعی را می‌تواند ببیند.

آن را مانند نصب یک مرکز تلفن (switchboard) تصور کنید. تمام سیم‌ها به یک اتاق می‌آیند. شما انتخاب می‌کنید که کدام خطوط به کدام بخش‌ها متصل شوند و سابقه هر تماس را نگه می‌دارید.

با اجرای deco Studio به صورت محلی شروع کنید. پس از بالا آمدن، پیکربندی را متمرکز کنید. اکنون هر عاملی که می‌خواهد از یک ابزار استفاده کند، باید از لایه کنترل سوال کند، نه مستقیماً از سرویس خارجی. این کار بلافاصله یک گلوگاه (chokepoint) ایجاد می‌کند که در آن می‌توانید مشاهده، فیلتر و لاگ‌گیری کنید.

اتصال یک سرور MCP امن

در این آزمایشگاه، شما یک سرور Model Context Protocol را متصل می‌کنید. MCP یک استاندارد باز برای اجازه دادن به مدل‌ها جهت تعامل با ابزارهای خارجی است، اما استانداردها امنیت را تضمین نمی‌کنند. مرحله حیاتی در اینجا «انتخاب‌گری» (selectivity) است. شما نباید هر نقطه پایانی (endpoint) را که سرور ارائه می‌دهد، کورکورانه در معرض قرار دهید. شما سرور را در deco Studio ثبت می‌کنید، سپس تنها یک تابع مجاز را به عامل آزمایشی خود نمایش می‌دهید.

به عنوان مثال، سرور MCP شما ممکن است ده تابع ارائه دهد: خواندن فایل، نوشتن فایل، پرس‌وجوی پایگاه داده، دریافت شبکه و موارد دیگر. شما یک عملیات بی‌خطر را انتخاب می‌کنید، شاید یک ماشین‌حساب ایزوله (sandboxed) یا یک جستجوی فقط‌خواندنی در داده‌های مصنوعی، و فقط همان را نمایش می‌دهید. نه مورد دیگر برای عامل نامرئی می‌شوند. اگر عامل آن‌ها را درخواست کند، لایه کنترل یک رد کردن قاطع را برمی‌گرداند.

این همان اصل «حداقل امتیاز» (least privilege) است که به صورت مکانیکی اجرا شده است. عامل قابلیت‌ها را نه از طریق یک دستور مؤدبانه، بلکه از طریق یک مرز نرم‌افزاری دریافت می‌کند.

آزمایش مرزها

یک عامل آزمایشی بسازید و آن را به لایه کنترل deco Studio خود متصل کنید. وظیفه‌ای به آن بدهید که نیاز به تنها تابع مجاز داشته باشد. موفقیت آن را تماشا کنید. لاگ‌های داخل Studio درخواست مدل، مسیریابی فراخوانی ابزار از طریق لایه کنترل، اجرای تابع و بازگشت نتیجه به مدل را نشان خواهند داد. شما می‌توانید کل مسیر را در یک ردپای (trace) پیوسته بخوانید.

حالا به ایجنت وظیفه دوم را بدهید که نیازمند تابعی است که شما عمداً حذف کرده‌اید. ایجنت ممکن است سعی کند با استدلال از این محدودیت عبور کند، یا ممکن است دچار توهم شود که آن ابزار وجود دارد. در هر دو صورت، فراخوانی به کنترل پلین (control plane) می‌رسد، لیست مجاز (allowlist) آن را رد می‌کند و اجرا با شکست مواجه می‌شود. این شکست، مدرک شماست که نشان می‌دهد مرزها توسط نرم‌افزار اعمال شده‌اند، نه صرفاً تئوری.

ابتدا این کار را با وظایف مصنوعی انجام دهید. یک پایگاه داده جعلی پر از پروفایل‌های کاربری تولیدشده بسازید. اجازه دهید ایجنت آن را کوئری بزند. لیست مجاز و موارد رد شده را بررسی کنید. تنها زمانی که به این مرز اعتماد کردید، باید به فکر متصل کردن ایجنت به سیستم‌های عملیاتی (production) باشید. عجله برای دسترسی به داده‌های واقعی پیش از تأیید دیوار حفاظتی، همان راهی است که باعث نشت اطلاعات حساس می‌شود.

خواندن مسیر کامل یک اجرا

deco Studio به شما اجازه می‌دهد هر لایه از یک اجرا را بازرسی کنید. شما درخواست خام مدل را می‌بینید: پرامپت، پنجره کانتکست و قالب‌بندی. شما فراخوانی ابزاری را که مدل تصمیم به انجام آن گرفته است، می‌بینید. شما مسیر فراخوانی در کنترل پلین، اجرای تابع و بازگشت پیلود (payload) را مشاهده می‌کنید. در نهایت، می‌بینید که مدل چگونه آن نتیجه را برای شکل دادن به پاسخ خود مصرف می‌کند.

این شفافیت به سوالات اساسی بازرسی پاسخ می‌دهد. شما می‌دانید کدام ابزار فعال شده است، زیرا کنترل پلین آن را ثبت کرده است. می‌دانید چه کسی دسترسی را داده است، زیرا سوابق پیکربندی در یک رجیستری محلی قرار دارند. می‌دانید چرا هزینه اجرا بالا بوده است، زیرا می‌توانید توکن‌ها را بشمارید.

شمارش آنچه اهمیت دارد

برای هر اجرا، چهار متریک خاص را دنبال کنید. اول، توکن‌های ورودی و خروجی. این‌ها بخش عمده هزینه‌های مدل را تشکیل می‌دهند و شما به شمارش دقیق نیاز دارید، نه تخمین‌های تقریبی. دوم، تأخیر مدل را از تأخیر ابزار جدا کنید. زمان بین پرامپت شما و پاسخ مدل با زمانی که سرویس خارجی برای پاسخ به یک فراخوانی ابزار نیاز دارد، متفاوت است. اشتباه گرفتن این دو منجر به تشخیص نادرست کندی سیستم می‌شود. سوم، هزینه را بر اساس نرخ‌های تأیید شده ارائه‌دهنده محاسبه کنید. حدس نزنید. برگه قیمت ارائه‌دهنده خود را چک کنید و آن را با توکن‌های اندازه‌گیری شده مطابقت دهید. چهارم، فراخوانی‌های موفق را با فراخوانی‌های غیرمجاز رد شده مقایسه کنید. تعداد بالای موارد رد شده به این معناست که ایجنت شما در حال آزمودن مرزهاست یا لیست مجاز شما با نیازهای واقعی همخوانی ندارد.

این اعداد، عملیات ایجنت را از یک اشتراک «جعبه سیاه» به یک سیستم قابل مشاهده تبدیل می‌کنند. شما می‌توانید بودجه‌بندی کنید، بهینه‌سازی کنید و توضیح دهید.

تفاوت بین کنترل محلی و اجرای محلی

این درسی است که حتی سازندگان دقیق را هم به اشتباه می‌اندازد. اجرای deco Studio روی سیستم خودتان به شما کنترل محلی روی پیکربندی می‌دهد، اما اجرای محلی خودِ مدل را تضمین نمی‌کند. اگر ایجنت را برای فراخوانی یک ارائه‌دهنده خارجی مانند OpenAI، Anthropic یا هر API میزبانی شده دیگری پیکربندی کنید، پرامپت‌های شما سیستم خودتان را ترک می‌کنند. Studio دروازه را مدیریت می‌کند، اما داده‌ها همچنان از شبکه عبور می‌کنند.

همیشه این مرزها را دنبال کنید. بدانید کدام بخش‌های پایپ‌لاین روی localhost باقی می‌مانند و کدام بخش‌ها به سرور شخص دیگری ارسال می‌شوند. اگر داده‌های شما حساس هستند، کنترل محلی لایه ابزار کافی نیست. شما همچنین باید بدانید استنتاج مدل (model inference) کجا انجام می‌شود. راحتیِ یک داشبورد محلی را با واقعیتِ یک مدل از راه دور اشتباه نگیرید.

دستورالعمل‌ها به معنای مجوز نیستند

یک میان‌بر خطرناک، تلاش برای ایمن‌سازی ایجنت از طریق پرامپت‌نویسی است. گفتن این جمله به مدل که «هرگز تابع delete را فراخوانی نکن»، یک کنترل امنیتی نیست؛ بلکه فقط یک پیشنهاد است. مدل‌ها ممکن است دستورالعمل‌ها را اشتباه تفسیر کنند، دچار جیل‌بریک (jailbreak) شوند یا صرفاً در استدلال دچار خطا شوند. امنیت واقعی در مرز نرم‌افزاری نهفته است.

از لیست‌های مجاز (allowlists) در داخل deco Studio استفاده کنید تا دقیقاً مشخص کنید کدام توابع قابل فراخوانی هستند. این محدودیت‌ها را با بررسی‌های سمت سرور در کنترل پلین اعمال کنید. ایجنت باید قابلیت‌های خود را همان‌طور کشف کند که یک کاربر دسترسی‌های فایل را کشف می‌کند: با برخورد به یک محدودیت سخت، نه با خواندن یک یادداشت دوستانه. امنیت متعلق به معماری است، نه زبان طبیعی.

کوچک شروع کنید، شکاک باقی بمانید

کنترل پلین خود را قدم به قدم بسازید. یک سرور MCP. یک تابع در دسترس. یک وظیفه مصنوعی. تأیید کنید که ایجنت در جایی که باید موفق می‌شود، موفق می‌شود و در جایی که باید شکست بخورد، شکست می‌خورد. تریس (trace) را بخوانید. تعداد توکن‌ها را تأیید کنید. سپس ابزار بعدی را اضافه کنید.

کنترل، کلیدی نیست که فقط آن را بزنید. کنترل، عادتی است برای اثبات مرزها پیش از اعتماد به آن‌ها. deco Studio فضای محلی را برای تمرین این عادت در اختیار شما قرار می‌دهد. از آن استفاده کنید تا یک دسته از ایجنت‌های خودمختار را به یک سیستم مدیریت‌شده، قابل مشاهده و محدود تبدیل کنید.

Source: Controlling AI Agents in deco Studio: Tools, Permissions, and Cost

جامعه یادگیری اختیاری: GyaanSetu AI در تلگرام