فاز 19 · درس 87

پروژه جامع 87: پیاده‌سازی گیت ایمنی سرتاسری برای مدل‌های زبانی

نوع
ساختنی
زمان
حدود 90 دقیقه
زبان‌ها
Python
پیش‌نیاز
درس‌های ایمنی فاز 18، درس‌های 25 تا 29 از مسیر A فاز 19
یک سیستم کنترل و بازرسی صنعتی با سه دروازه‌ی متوالی، سنسورهای دیجیتال و یک داشبورد مانیتورینگ متصل به آن‌ها بدون متن
فهرست مطالب
  1. صورت‌مسئله
  2. مفهوم
  3. پیاده‌سازی از صفر
  4. استفاده از ابزارهای واقعی
  5. خروجی این درس
  6. تمرین‌ها
  7. اصطلاحات کلیدی
  8. برای مطالعه‌ی بیشتر

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

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

پیش از تولید، حین تولید، پس از تولید. سه چک‌پوینت، یک حکم نهایی، و یک ردگیری محاسبات (audit trail) به ازای هر درخواست.

صورت‌مسئله

درس‌های 82 تا 86 این سرفصل هر کدام یک قطعه‌ی مجزا تحویل دادند: یک رده‌بندی، یک شناساگر ورودی، یک چارچوب ارزیابی، یک دسته‌بند خروجی، و یک موتور قوانین. اما یک گیت ایمنی (safety gate) واقعی باید قطعات محیط اجرا (شناساگر درس 83، دسته‌بند درس 85، و موتور قوانین درس 86) را با هم ترکیب کند، آن‌ها را در زمان درست از چرخه‌ی حیات درخواست اجرا کند، هنگام تناقض آرا تصمیم بگیرد چه اقدامی انجام شود، و در نهایت ردی تحویل دهد که بازبین بتواند صبح شنبه آن را بخواند. اصل درس در همین ترکیب‌بندی است.

این گیت در سه چک‌پوینت مستقر می‌شود. پیش از تولید (pre-gen) قبل از فراخوانی مدل اجرا می‌شود: شناساگر درس 83 پرامپت را بررسی می‌کند و یا اجازه‌ی عبور می‌دهد، یا به‌طور کامل آن را مسدود می‌کند (در حملاتی با قطعیت بالا)، یا پرچمی روی آن می‌گذارد تا لایه‌های بعدی وزن آن را بسنجند. حین تولید (during-gen) هم‌زمان با تولید توکن‌ها توسط مدل اجرا می‌شود: یک فیلتر استریمینگ تکه‌ها (chunks) را بافر می‌کند و اگر عبارت ممنوعه‌ای پیدا شود، استریم را پیش از موعد متوقف می‌کند (اگر گیت فقط خروجی نهایی را بررسی کند، تزریق پیشوند از این فیلتر قسر درمی‌رود). پس از تولید (post-gen) بعد از پایان کار مدل اجرا می‌شود: مسیریاب دسته‌بند درس 85 و موتور قوانین درس 86 کل خروجی را بازرسی می‌کنند، گیت نظر نهایی آن‌ها را با سیگنال مرحله‌ی پیش از تولید ترکیب می‌کند، و اقدام نهایی را اعمال می‌نماید.

گیت به‌صورت خودپایان‌یافته طراحی شده است: همه‌ی نمونه‌های آزمایشی رده‌بندیِ درس 82 به‌صورت سرتاسری اجرا می‌شوند، گیت به ازای هر درخواست یک ردگیری محاسبات ثبت می‌کند، و اجرای دمو با کد خروج صفر به پایان می‌رسد؛ چه همه‌ی حملات را مسدود کرده باشد و چه نه. هدف اصلی، قابلیت مشاهده‌پذیری (observability) و صحت ساختاری است، نه ثبت یک امتیاز بی‌نقص.

مفهوم

سه چک‌پوینت، یک درخت تصمیم.

مسدودسازی در ریسک بالاجریان دادهقطع زودهنگامتکمیلپرامپت کاربرپیش از تولید: شناساگرامتناع مدل + ردگیری محاسباتمدل زبانی شبیه‌سازی‌شدهحین تولید: فیلتر توکنخروجی ناقص + ردگیری محاسباتپس از تولید: دسته‌بند + قوانینتجمیعاقدام نهایی + ردگیری محاسبات

تجمیع‌کننده چهار سیگنال شدت خطر را با هم ترکیب می‌کند: اطمینان شناساگر (درس 83)، تریگر فیلتر توکن (یک مقدار بولی)، بیشینه‌ی شدت خطر دسته‌بند (درس 85)، و بیشینه‌ی شدت خطر موتور قوانین (درس 86). تابع تجمیع یک جدول قطعی (deterministic) است.

وضعیت سیگنال اقدام
اطمینان شناساگر >= 0.85 در دسته‌بندی غیربی‌خطر مسدودسازی پیش از تولید
هر سیگنال با شدت خطر بالا (high) مسدودسازی
هر سیگنال با شدت خطر متوسط (اطمینان شناساگر بین 0.5 تا 0.85، یا توقف زودهنگام استریم) پالایش متن (redact)
هر سیگنال با شدت خطر پایین (اطمینان شناساگر زیر 0.5 در دسته‌بندی غیربی‌خطر) هشدار
اعلام بی‌خطر بودن توسط شناساگر و نبود هیچ سیگنال دیگر مجاز

مسدودسازی (block) منجر به امتناع مدل (refusal) می‌شود. پالایش متن (redact) متن سانسورشده توسط دسته‌بند را ارسال می‌کند و اصلاح‌کننده‌ی موتور قوانین را به کار می‌گیرد. هشدار (warn) متن اصلی را همراه با یک پیام ملایم می‌فرستد. در حالت مجاز (allow) متن اصلی بدون دستکاری ارسال می‌شود. هر درخواست یک RequestTrace با این فیلدها ثبت می‌کند: request_id، prompt، pre_gen (حکم شناساگر)، during_gen (تریگر فیلتر توکن)، post_gen (اقدام دسته‌بند + گزارش قوانین)، final_action، final_output و latency_ms.

فیلتر حین تولید یک لایه‌ی انتزاعی استریمینگ است. مدل زبانی ماکت (mock LLM) خروجی را در قالب تکه‌ها تولید می‌کند (به‌طور پیش‌فرض هر تکه 4 توکن). فیلتر حداکثر دو تکه را بافر می‌کند و عبارات باقاعده (regex) را برای توکن‌های ادامه‌ی شناخته‌شده جستجو می‌نماید (مانند Sure, here is the procedure، step 1: take و غیره). در صورت تطابق، پیمایشگر را متوقف می‌کند و خروجی ناقص را با برچسب terminated_early=True برمی‌گرداند. تجمیع‌کننده‌ی بعدی این توقف زودهنگام را به‌عنوان سیگنالی با شدت خطر متوسط در نظر می‌گیرد.

مدل زبانی ماکت بر اساس پرامپت دو نوع رفتار نشان می‌دهد: حملات قابل‌تشخیص را رد می‌کند (عبارت ... I cannot را برمی‌گرداند) و به پرامپت‌های بی‌خطر پاسخ می‌دهد (یک رشته‌ی مفید عمومی تولید می‌کند). برای دسته‌ی کوچکی از حملات (به‌ویژه ترفندهای کدگذاری که در پایپ‌لاین ورودی کشف نشده‌اند)، ادامه‌ای ناقص و مخرب تولید می‌کند که قرار است فیلتر حین تولید مچ آن را بگیرد. این طراحی تعمدی است. ارزش گیت به لایه‌های دفاعی تو‌در‌توی آن است؛ این دمو نشان می‌دهد که لایه‌ها چطور به‌درستی با یکدیگر تعامل دارند.

گیت ایمنیپیش، حین و پس از تولید
SAFETY GATEOne request crosses three checkpoints. Pre-gen the detector can block outright; during-gen a token filter can terminate the stream early on a forbidden phrase; post-gen the classifier and rules engine inspect the full output. The gate aggregates the verdicts, applies a final action, and draws an audit trace every reviewer can read.پیش‌تولیدآشکارسازمدلLLM ساختگیحین تولیدفیلتر توکنپس از تولیددسته‌بندی‌کنندهمسدودسازیتوقفاقدام نهاییردگیری محاسبات به ازای درخواست
یک درخواست از سه چک‌پوینت عبور می‌کند: پیش از تولید، آشکارساز می‌تواند مستقیماً جلوی آن را بگیرد؛ حین تولید، فیلتر توکن می‌تواند با دیدن یک عبارت ممنوعه استریم را فوراً متوقف کند؛ و پس از تولید، دسته‌بندی‌کننده و موتور قوانین خروجی نهایی را ارزیابی می‌کنند. گیت این آرا را تجمیع، اقدام نهایی را اعمال و یک ردگیری محاسبات قابل‌بررسی برای بازبین ثبت می‌کند.

پیاده‌سازی از صفر

فایل code/safety_gate.py کلاس SafetyGate را تعریف می‌کند. این کلاس شناساگر، مسیریاب دسته‌بند و موتور قوانین درس‌های پیشین را با مسیرهای نسبی فایل‌ها وارد می‌کند. فایل code/mock_llm_stream.py یک مدل زبانی ماکتِ استریمینگ با سه پرسوناژ برنامه‌ریزی‌شده (clean، attacker-honest، attacker-lazy) تعریف می‌کند. فایل code/main.py پیکره‌ی متنی درس 82 را به‌صورت سرتاسری از گیت عبور می‌دهد و خروجی را در outputs/gate_trace.json می‌نویسد.

این دمو تمام 50 نمونه‌ی آزمایشی رده‌بندی به اضافه‌ی 10 پرامپت بی‌خطر را اجرا می‌کند. خلاصه‌ی ردگیری محاسبات شامل این موارد است: مسدودسازی‌ها، پالایش‌ها، هشدارها، اجازه‌ی عبورها، توقف‌های زودهنگام، تفکیک نتایج به ازای هر دسته، و میانگین تاخیر. اعداد هدف اصلی نیستند؛ اصل ماجرا ثبت ردگیری محاسبات به ازای تک‌تک درخواست‌هاست.

استفاده از ابزارهای واقعی

دستور python3 main.py را اجرا کنید. دمو همه‌چیز را بارگذاری می‌کند، پایپ‌لاین را به‌صورت سرتاسری اجرا می‌نماید، جدول خلاصه را چاپ می‌کند و دست‌سازه‌ی ردگیری را می‌نویسد. کد خروج صفر خواهد بود. دمو به معنای واقعی کلمه خودپایان‌یافته است: هر درخواست یا تا انتها پیش می‌رود یا زود متوقف می‌شود و گیت بلافاصله به سراغ درخواست بعدی می‌رود.

خروجی این درس

مستند outputs/skill-end-to-end-safety-gate.md چرخه‌ی حیات درخواست، جدول تجمیع، و فرمت ردگیری را مستند می‌کند. خروجی اصلی این گیت، فرمت ردگیری محاسبات و منطق ترکیب‌بندی آن است؛ هر دو را می‌توانید مستقیماً بردارید و در بک‌اند سیستم خود پیاده کنید.

تمرین‌ها

  1. یک چک‌پوینت پنجم اضافه کنید: یک policy-check که قبل از مرحله‌ی پیش از تولید روی پرامپت سیستم اصلی اجرا شود. این بررسی باید پرامپت‌هایی را که نام یک ابزار داخلیِ شناخته‌شده را هدف گرفته‌اند رد کند.
  2. تجمیع‌کننده‌ی قطعی را با یک امتیاز وزنی جایگزین کنید: هر سیگنال یک اطمینان بین 0 تا 1 تولید کند و گیت در یک آستانه‌ی مشخص فعال شود. آستانه را تغییر دهید و موازنه‌ی بین دقت و بازخوانی (precision-recall trade-off) را روی پیکره‌ی درس 82 گزارش کنید.
  3. یک نسخه‌ی استریمینگ ناهمگام (async) بسازید که مرحله‌ی حین تولید در یک ترد (thread) اجرا شود؛ مطمئن شوید اثر منفی بر تاخیر در محدوده‌ی بودجه‌ی 50 میلی‌ثانیه‌ای باقی می‌ماند.

اصطلاحات کلیدی

اصطلاح کاربرد عام مفهوم دقیق
گیت ایمنی (safety gate) یک فیلتر ساده ترکیبی سه‌چک‌پوینتی از شناساگر، فیلتر استریمینگ، دسته‌بند، و قوانین همراه با یک جدول تجمیع
پیش از تولید (pre-gen) بررسی ورودی لایه‌ی شناساگر که قبل از فراخوانی مدل روی پرامپت اجرا می‌شود
حین تولید (during-gen) فیلتر استریمینگ پایش بافرشده روی تکه‌های تولیدشده که می‌تواند استریم را زود متوقف کند
پس از تولید (post-gen) بررسی خروجی اجرای مسیریاب دسته‌بند و موتور قوانین روی پاسخ کامل‌شده‌ی مدل
ردگیری محاسبات (trace) یک خط لاگ رکورد ساختاریافته به ازای هر درخواست شامل حکم هر چک‌پوینت، اقدام نهایی، و تاخیر

برای مطالعه‌ی بیشتر

پنج درس پیشین همین سرفصل. گیت، آن‌ها را با هم ترکیب می‌کند؛ جزء سازنده‌ی جدیدی به سیستم ایمنی اضافه نمی‌کند.

خودآزمایی

به سؤال‌ها جواب بدهید تا ببینید چقدر از درس در ذهنتان مانده است.

  1. پیش از درسسه چک‌پوینت در چه مراحلی از چرخه حیات درخواست قرار دارند؟
  2. پیش از درسهدف از فیلتر کردن حین تولید چیست؟
  3. حین درستجمیع‌کننده چگونه درباره اقدام نهایی تصمیم می‌گیرد؟
  4. حین درسچرا گیت به ازای هر درخواست یک RequestTrace ساختاریافته صادر می‌کند؟
  5. حین درسوقتی میزان اطمینان در پیش از تولید از آستانه مسدودسازی فراتر رود، چه رخ می‌دهد؟
  6. پس از درسچرا دموی برنامه عمداً اجازه می‌دهد برخی پرامپت‌های با ترفند انکودینگ به مرحله حین تولید برسند؟

سؤالات متداول

سه چک‌پوینت اصلی یک گیت ایمنی در مدل‌های زبانی چیستند؟

چک‌پوینت پیش از تولید (Pre-gen) برای تحلیل و مسدودسازی پرامپت، حین تولید (During-gen) برای بافر و قطع زودهنگام استریم در صورت مشاهده‌ی عبارات غیرمجاز، و پس از تولید (Post-gen) برای اعتبارسنجی و پالایش خروجی کامل.

هنگام تناقض میان نتایج لایه‌های مختلف امنیتی چه تصمیمی گرفته می‌شود؟

یک جدول تجمیع قطعی وجود دارد که بر اساس بالاترین سطح شدت خطر (بالا، متوسط یا پایین) اقدام نهایی را از میان مسدودسازی کامل، پالایش خروجی، اخطار یا ارسال پاسخ تعیین می‌کند.

ردگیری محاسبات (RequestTrace) چه نقشی در گیت ایمنی ایفا می‌کند؟

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

ما رو توی گوگل بیشتر ببین

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