پرش به محتوای اصلی
پرش به محتوای مقاله

۵ روش کاهش ۷۵ درصدی توکن‌های پرامپت با Schemagate

·۲۲ شهریور ۱۴۰۵۶ دقیقه مطالعه۲ بازدید
کسی نمی‌خواهد کتابخانه شما را وارد کند
کسی نمی‌خواهد کتابخانه شما را وارد کند
اشتراک‌گذاری
واقعاً چه چیز جدید است؟

معرفی یک لایه فیلترینگ پویا برای طرح‌های پایگاه‌داده که به جای حذف دستی، بر اساس نقش کاربر در لحظه تصمیم می‌گیرد چه متادیتایی به مدل ارسال شود.

اگر برای هر پرس‌وجوی ساده از عامل‌های هوش مصنوعی، هزینه‌ی توکن‌های گزافی بابت متادیتای تکراری می‌پردازید، باید بدانید راهکاری برای حذف ۷۵.۶٪ از این هزینه‌ها پیدا شده است. 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 مراجعه کنید.

چرا این موضوع مهم است؟

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

تأثیر برای ایران

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

·نگاه ما
تحریریه دات‌هوش

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

منابع

این گزارش با خط‌لولهٔ خودکار دات‌هوش از منابع معتبر جهانی تدوین و زیر نظر تحریریه منتشر شده است. روش کار ما

گفتگو

پنج‌شنبه‌های هوش‌محور

بسته‌ی هفتگی دات‌هوش

۵ خبر، ۲ ابزار، ۱ پرامپت در هر شماره. به‌زودی راه‌اندازی می‌شود — هر پنج‌شنبه صبح.

خبر کلیدی
ابزار کاربردی
پرامپت حرفه‌ای
تحلیل پژوهش
به‌زودی
زاویه‌ی ایرانی
به‌زودی
تمرین این هفته
به‌زودی

راهنماهای دات‌هوش

راهنماهای کاربردیِ دات‌هوش برای کار با هوش مصنوعی — از همین‌جا شروع کنید:

دات‌هوش

راهنمای فارسی هوش مصنوعی — با نگاه به ایران

اخبار روزانه، معرفی ابزارها و مدل‌ها، و آموزشِ کار با هوش مصنوعی؛ همیشه با این پرسش که از ایران چه چیزی کار می‌کند و چه چیزی نه.