اگر برای هر پرسوجوی ساده از عاملهای هوش مصنوعی، هزینهی توکنهای گزافی بابت متادیتای تکراری میپردازید، باید بدانید راهکاری برای حذف ۷۵.۶٪ از این هزینهها پیدا شده است. Schemagate یک کتابخانه پایتونی است که اجازه نمیدهد عاملهای هوش مصنوعی به جداولی دسترسی داشته باشند که کاربر اجازه مشاهده آنها را ندارد. سازنده این پروژه در تشریح جزئیات، از یک تغییر استراتژیک در طراحی صحبت کرده است؛ عبور از یک API خالص به سمت «سطوحی که نیازی به وارد کردن (Import) هیچ چیزی ندارند».
بسیاری از توسعهدهدهندگان هنگام ادغام ابزارهای جدید با مشکل «شکل درخواست» مواجه میشوند. تصور کنید عاملی دارید که دادههای حساس را لو میدهد — یعنی جداولی را به مدل نشان میدهد که کاربر حق خواندن آنها را ندارد — اما شما فرصت ندارید یک بعدازظهر کامل را صرف سیمکشی یک شیء کاتالوگ جدید در کد قدیمی خود کنید. این اصطکاک باعث میشود حتی ابزارهای کاربردی نادیده گرفته شوند، حتی زمانی که تز اصلی آنها کاملاً درست باشد.
همانطور که در تحلیلهای قبلی ما دربارهی بهینهسازی پنجره متنی اشاره کردیم، مدیریت دقیق دادههای ورودی کلید کاهش هزینه است. Schemagate برای حل این مشکل، پنج روش مختلف برای فیلتر کردن طرح (Schema) — که شبیه به یک نقشه راهنما برای مدل است تا بداند هر داده کجا قرار دارد — ارائه میدهد که بر اساس میزان تغییرات مورد نیاز در کد مرتب شدهاند.
رابطهای بدون کد
اولین روش، یک رابط خط فرمان (CLI) است که اجازه میدهد پرسوجوهایی مثل «کدام مشتریان به ما بدهکارند» را مستقیماً اجرا کنید. طبق مستندات این پروژه، با استفاده از پرچم --answer و ارائهدهندگانی مثل Anthropic، ابزار تنها جداول مرتبط را انتخاب کرده و SQL تولید میکند. برای مثال، اجرای دستور schemagate demo "which customers owe us money" --answer --provider anthropic روی یک طرح bundled شامل ۴۲ شیء، منجر به انتخاب تنها ۹ شیء (مانند main.crm_customer و main.v_customer_balance) میشود، به جای اینکه کل لیست ارسال شود.
در یک محک (Benchmark) روی همین طرح ۴۲-شیئی، میانگین توکنهای پرامپت از ۲۵۸۳ به ۶۳۱ توکن کاهش یافت. این کاهش ۷۵.۶ درصدی با اجرای python tests/bench.py قابل تأیید است. برای استفاده در محیط عملیاتی، دستور schemagate select یک URL (مثلاً postgresql://localhost/app) میگیرد. اگر پرچم --provider حذف شود، ابزار تنها پرامپتی را چاپ میکند که کاربر باید آن را در پنجره چت خود کپی کند، و دستور schemagate select --url ... --sql "SELECT ..." پرسوجوی نهایی را اجرا میکند.
اگر اسکریپت در مسیر PATH سیستم نباشد، همین قابلیتها از طریق python -m schemagate در دسترس هستند. نکته مهم این است که مرحله انتخاب (Selection) در هیچکدام از این مسیرها، هرگز مستقیماً با یک مدل ارتباط برقرار نمیکند.
عیبیابی بصری و استودیو
برای کسانی که رویکرد بصری را ترجیح میدهند، Schemagate Studio یک صفحه وب محلی فراهم میکند که از طریق دستور schemagate studio --url postgresql://localhost/app فعال میشود. این ابزار اجازه میدهد سؤال را تایپ کنید، نقشهای فراخواننده را تغییر دهید و راهنماها (Hints) را در لحظه ویرایش کنید تا دقیقاً ببینید چه دستوراتی (DDL) به مدل ارسال میشود.
ارزش واقعی این ابزار در «فضای منفی» است؛ پنلی اختصاصی که دقیقاً لیست میکند چه مواردی از کاربر پنهان شده است. نسخه عمومی این صفحه در آدرس ashishsinha1602.github.io/schemagate فعال است و روی شش طرح bundled اجرا میشود. این نسخه مرورگر-محور از یک پورت جاوااسکریپتی از انتخابگر پایتون استفاده میکند. برای اطمینان از تطابق کامل، تستی روی ۱۷۸۹ مورد اجرا میشود؛ اگر لیست اشیاء، دلایل انتخاب و امتیازها تا ۱۰ رقم اعشار یکسان نباشند، فرآیند Build با خطا مواجه میشود.
ادغامهای عاملمحور
برای معماریهای مدرن، این کتابخانه اکنون از پروتکل زمینه مدل (MCP) — که مثل یک استاندارد مشترک برای ارتباط مدل با ابزارهای خارجی است — پشتیبانی میکند. با نصب pip install 'schemagate[mcp]' و اجرای schemagate.mcp_server عاملها به پنج ابزار دسترسی پیدا میکنند:
- ابزارهای اصلی:
select_schema،list_objectsوdescribe_object(که هر کدام هویت اصلی و نقشها را میگیرند). - ابزارهای عملیاتی:
refresh_catalogوhealthبرای نگهداری سیستم.
اگر آرگومانهای مربوط به هویت حذف شوند، فراخواننده به عنوان کاربر ناشناس تلقی شده و تنها اشیاء بدون محدودیت را میبیند. برای جلوگیری از نشت امنیتی، سرور MCP اشیاء محدود شده و اشیاء موجود نیست را یکسان تلقی میکند تا وجود یک جدول از طریق پیامهای خطا لو نرود.
این سرور برای پایداری حداکثری ساخته شده است. ایندکس پس از استارتآپ در حافظه (Memory) قرار میگیرد، به این معنی که حتی اگر پایگاهداده از دسترس خارج شود، سرور زنده میماند؛ select_schema همچنان بر اساس آخرین بازتاب صحیح پاسخ میدهد در حالی که refresh_catalog خطا را گزارش میکند. هر ابزار تمام استثناها (Exceptions) را میگیرد و {"error": ...} برمیگرداند تا یک درخواست بد باعث پایان نشست برای سایر کلاینتها نشود. این سیستم در برابر ۱۲۵ مورد ورودی «زباله» — از جمله None، ۱۰۰,۰۰۰ حرف x، تلاشهای تزریق SQL مانند '; DROP TABLE users; -- و ۵۰۰ ایموجی آتش — تست شده تا اطمینان حاصل شود که یک درخواست صحیح، حتی پس از هر شکست، پاسخ درست را برمیگرداند.
ادغام با فریمورکها
برای کاربران LangChain، یک SchemagateRetriever اختصاصی تعریف شده است که اجازه میدهد هویت در زمان ساخت (Construction) متصل شود. با استفاده از ماژول schemagate.integrations.langchain توسعهدهندگان میتوانند یک بازیابیکننده (Retriever) با یک هویت و نقش خاص تعریف کنند (مثلاً Principal("okta:jdoe", roles={"finance"})).
با ساخت یک بازیابیکننده برای هر فراخواننده، هویت در داخل خودِ Retriever نگه داشته میشود و نیازی نیست در هر فراخوانی ارسال شود. این کار باعث حذف دستهای از باگهای رایج میشود که در آن یک زنجیره (Chain) «فراموش میکند» هویت کاربر را به لایه پایگاهداده منتقل کند؛ این دقیقاً همان مشکل اصلی است که این کتابخانه برای حل آن ساخته شده است.
استقرار ابری و OCI
در نهایت، استقرار یککلیکی از طریق زیرساخت ابری اوراکل (OCI) فراهم شده است. این استک Resource Manager یک سرور MCP را روی یک Autonomous Database (چه جدید و چه موجود) مستقر میکند. در اولین بوت، Instance Principal از OCI Generative AI برای نوشتن توصیفات تکجملهای برای هر جدول و View استفاده میکند.
این توصیفات برای دقت حیاتی هستند. در تستهای روی طرح ۴۲-شیئی، وقتی سؤالات از کلماتی استفاده میکردند که شبیه نام ستونها بود، recall@6 برابر ۱۰۰٪ بود، اما وقتی سؤالات با زبان تجاری (Business Language) مطرح میشدند، این مقدار به ۵۰٪ سقوط میکرد. توصیفات باکیفیت این شکاف را پر میکنند.
کاربران باید به مدل امنیتی این استقرار دقت کنند:
- احراز هویت: نقطه اتصال MCP هیچ احراز هویت داخلی ندارد؛ هویت در هر فراخوانی از طریق Principal ادعا میشود. امنیت کاملاً به
allowed_cidrوssh_cidrمتکی است (استک درخواست0.0.0.0/0را رد میکند). - دسترسی به استودیو: استودیو به
127.0.0.1متصل میشود و نیاز به تونل SSH دارد و هیچ صفحه لاگینی ندارد. - مسیر تایید شده: برای یک مسیر سریعتر و تایید شده، کاربران میتوانند
pip install --user 'schemagate[oracle,oci]'را در OCI Cloud Shell اجرا کنند که حدود یک دقیقه زمان میبرد و نیازی به VM یا Terraform ندارد.
این تغییر در نحوه ارائه، نشاندهنده یک روند گستردهتر در ابزارهای هوش مصنوعی است. ارزش دیگر در خودِ کتابخانه نیست، بلکه در «فضای منفی» است — یعنی توانایی اثبات اینکه هوش مصنوعی چه چیزهایی را نمیتواند ببیند. برای کسانی که هنوز API خام را میخواهند، کتابخانه از طریق pip install schemagate (تحت لایسنس Apache-2.0) در دسترس است. این ابزار روی Oracle 26ai تایید شده است و اسکریپت scripts/certify_dialect.py برای کسانی که میخواهند آن را روی SQL Server یا MySQL تایید کنند، موجود است.
گام بعدی شما
- اگر از عاملهای متصل به پایگاهداده استفاده میکنید، استراتژی پرامپت خود را بررسی کنید تا متوجه شوید چه مقدار توکن را صرف متادیتای غیرضروری میکنید.
- دمو عمومی در ashishsinha1602.github.io/schemagate را برای تست منطق فیلترینگ امتحان کنید.
- در صورت استفاده از LangChain، از
SchemagateRetrieverبرای جلوگیری از نشت دادههای حساس استفاده کنید.
اما داستان سختافزاری این تحول حتی شگفتانگیزتر است — به تحلیل ما دربارهی تراشههای Blackwell مراجعه کنید.




گفتگو