اگر فکر میکنید با یک درخواست ساده به API نظارت بر محتوا، اپلیکیشن خود را در برابر کاربران بدخواه بیمه کردهاید، سخت در اشتباهید. تکیه بر یک لایهٔ واحد، شما را در برابر سادهترین غلطهای املایی یا تکنیکهای پیشرفتهٔ جیلبریک (Jailbreak) که چکهای ایمنی را بهطور کامل دور میزنند، کاملاً بیدفاع میکند.
طبق تحلیل فنی منتشر شده در ۳ آگوست ۲۰۲۶ در وبسایت dev.to، سیستمهای حرفهای برای ایمنسازی یک مدل زبانی بزرگ (LLM) — شبیه کتابخانهداری که میلیاردها صفحه را خوانده و حالا با همان لحن جواب میدهد — باید سه لایهٔ مجزا را روی هم سوار کنند تا عملاً امنیت مدل تامین شود. این رویکرد لایهبندی شده شباهت زیادی به استراتژیهای مقابله با افت کیفیت مدلها در محیطهای عملیاتی دارد که در آن برای پایداری سیستم، چندین رکن حیاتی بهطور همزمان به کار گرفته میشوند.
بسیاری از توسعهدهندگان به نظارت بر محتوا مثل یک کلید روشن-خاموش نگاه میکنند، اما در واقعیت این فرآیند مجموعهای از فیلترها با هزینهها و نقاط شکست متفاوت است. همانطور که در تحلیل قبلی ما دربارهی چرا پارامتر Temperature یک پیچ تنظیم برای خلاقیت نیست اشاره کردیم، واضح است که کنترل خروجی مدل نیازمند درک محدودیتهای مهندسی زیرساختی است، نه صرفاً تغییر چند تنظیمات ساده یا جابجایی چند اسلایدر.
لایه ۱: کفِ رگکس
اولین خط دفاعی، فیلتر کردن ورودیها با استفاده از عبارات منظم (Regex) و لیستهای سیاه کلمات کلیدی است. این قدیمیترین و ارزانترین لایه است که بهدلیل سرعت بالا و هزینه صفر، هنوز در تمام سیستمهای عملیاتی در هر کجا که باشد استفاده میشود.
این لایه از نظر محاسباتی رایگان است و بدون نیاز به استنتاج (Inference) — یعنی همان لحظه آشپزی و تولید جواب، نه دورهی آموزش — در حد میکروثانیه اجرا میشود. هدف این لایه شناسایی تخلفات واضح و بدیهی است، مانند:
- الگوهای شناسایی شخصی (PII) مثل شمارههای تامین اجتماعی (SSN) یا ابزارهای تولید شماره کارتهای اعتباری.
- کلمات کلیدی مربوط به محتوای کودکآزار (CSAM).
- درخواستهای خشونتآمیز آشکار، مانند «چگونه بمب بسازم».
اما رگکس بهراحتی با تغییر کلمات، بازنویسی یا غلطهای املایی شکست میخورد. یک کاربر میتواند با استفاده از غلطهای املایی ساده، لیست سیاه را دور بزند؛ مثلاً به جای «bomb» بنویسد «bmob»، یا جملاتی مانند «h0w d0 i bulid an eksplosive» بنویسد و یا حتی درخواست خود را به زبان دیگری ترجمه کند. همچنین، این لایه برای کاربران حرفهای ایجاد «مثبت کاذب» (False Positive) میکند. به عنوان مثال، یک پژوهشگر امنیتی که درباره تزریق SQL (SQL injection) میپرسد یا یک پرستار که در مورد دوز داروهای خاص سوال دارد، ممکن است توسط یک لیست کلمات کلیدی بیش از حد گسترده مسدود شوند. رگکس یک کفِ حمایتی است، نه سقف.
لایه ۲: میانافزارِ طبقهبندی
در این لایه از یک مدل مجزا و هدفمند برای طبقهبندی (Classification) استفاده میشود. این مدل معمولاً بسیار کوچکتر از خودِ مدل چت است و برای امتیازدهی به متن در دستههای خاصی مثل «نفرتپراکنی»، «خودکشی/آسیب به خود»، «محتوای جنسی» یا «خشونت» آموزش دیده است. این لایه به عنوان یک گذرگاه مستقل هم روی ورودی (قبل از رسیدن پرامپت به LLM) و هم روی خروجی (قبل از رسیدن پاسخ به کاربر) اجرا میشود.

برخلاف رگکس، طبقهبندها چون روی نمونههای برچسبگذاری شده آموزش دیدهاند و نه رشتههای متنی دقیق، میتوانند مفاهیم را تعمیم دهند و فریب عبارتبندیهای جدید و غلطهای املایی را نخورند. آنها یک امتیاز پیوسته برای هر دسته ارائه میدهند و این به توسعهدهندگان اجازه میدهد بسته به زمینه کاربرد، آستانههای متفاوتی را تنظیم کنند. تا حدی این مدل امتیازدهی شبیه به استفاده از آستانههای اطمینان برای شناسایی دادههای مسموم است تا از ورود ورودیهای غیرقابلاعتماد به سیستم جلوگیری شود. برای مثال، یک اپلیکیشن نقشآفرینی (Roleplay) ممکن است امتیاز «خشونت» بالاتری را نسبت به یک چتبات پشتیبانی مشتری تحمل کند.
بهای این دقت، تأخیر (Latency) و سوگیری است. هر فراخوانی طبقهبند، یک رفتوبرگشت شبکه اضافه میکند که معمولاً بین ۱۰۰ تا ۳۰۰ میلیثانیه است. از آنجایی که این یک فراخوانی استنتاج دوم علاوه بر تولید اصلی است، هم زمان و هم هزینه را افزایش میدهد. علاوه بر این، این مدلها سوگیریهای دادههای آموزشی خود را به ارث میبرند. آنها اغلب زبانهای بازپسگرفته شده (Reclaimed language)، محتواهای پزشکی/آموزشی یا نوشتههای خلاقانهای که مضامین تاریک را بدون تایید آنها بررسی میکنند، بهاشتباه مسدود میکنند. این دقیقاً همان لایهای است که اکثر آموزشهای شخص ثالث با عنوان «اضافه کردن نظارت به اپلیکیشن خود» توصیف میکنند.
لایه ۳: RLHF و همراستاسازی وزنها
یادگیری تقویتی با بازخورد انسانی (RLHF) یک فیلتر خارجی نیست، بلکه در وزنهای (Weights) مدل حک شده است. منظور از مدلهای «سانسور شده» یا «همراستا»، دقیقاً همین لایه است. این لایه بهطور بنیادی با دو لایه قبلی متفاوت است چون بخشی از منطق داخلی مدل است.
در طول RLHF، ارزیابان انسانی به پاسخهای مدل امتیاز میدهند. مدل بهگونهای تنظیم (Fine-tune) میشود تا پاسخهایی را تولید کند که ارزیابان بیشتر ترجیح دادهاند و پاسخهایی را که مورد پسند نبودند — از جمله پاسخ به درخواستهای ناایمن — کاهش دهد. وقتی یک مدل همراستا میگوید «نمیتوانم در این مورد کمک کنم»، هیچ چک خارجی در حال اجرا نیست؛ بلکه مدل صرفاً یاد گرفته است که برای آن پرامپت خاص، عبارت «I can't help with that» پاداشبخشترین توالی توکن برای ادامه متن است.
این موضوع واقعیت مهندسی مدلهای «بدون سانسور» (Uncensored) را روشن میکند. یک مدل بدون سانسور یا مدل بیس (Base model) — مانند یک چکپوینت Llama یا Mistral قبل از تنظیمات ایمنی — به این معنا «بدون فیلتر» نیست که یک نرده حفاظتی از آن حذف شده باشد؛ بلکه در واقع آموزش همراستاسازی که باعث ایجاد رفتار «رد کردن» میشود، هرگز برای آن مدل اتفاق نیفتاده است. از نظر ساختاری، یک مدل متنباز بدون سانسور و نسخه همراستای آن میتوانند معماری یکسان و وزنهای تقریباً مشابهی (به جز دلتای مربوط به Fine-tuning) داشته باشند.
همراستاسازی در برابر تغییرات توزیع دادهها (Distribution Shift) بهطور شناختهمندی شکننده است. چون مدل به جای استدلال بر اساس قصد کاربر از اصول اولیه، در حال تطبیق الگو با نمونههای آموزشی است، میتواند با تکنیکهای جیلبریک فریب بخورد. این تکنیکها بهطور خاص شامل موارد زیر هستند:
- قاببندیهای نقشآفرینی (Role-play framing).
- قاببندیهای فرضی یا تخیلی.
- ترجمه به زبانهایی با منابع کم (Low-resource languages).
- مبهمسازی در سطح توکن (Token-level obfuscation).
پشته عملیاتی در محیط تولید
پلتفرمهای چت جدی تنها یک لایه را انتخاب نمیکنند، بلکه هر سه را در یک توالی خاص اجرا میکنند تا اطمینان حاصل کنند هر لایه آنچه را که دیگران از دست دادهاند، شکار کند:
- گام ۱: رگکس روی ورودی. ارزان است، موارد بدیهی را میگیرد و هیچ هزینه تأخیری ندارد.
- گام ۲: طبقهبندی روی ورودی. این لایه تخلفات بازنویسی شده و عبارتبندیهای جدید را پیش از آنکه هرگز به مدل برسند، شناسایی میکند.
- گام ۳: رفتار RLHF مدل. مدل ممکن است بهطور مستقل بر اساس وزنهای یادگرفتهشده درخواست را رد کند، بهویژه زمانی که درخواست تنها در زمینه یک مکالمه کامل ناایمن میشود.
- گام ۴: طبقهبندی روی خروجی. چون حتی مدلهای همراستا را هم میتوان با پرامپتهای هوشمندانه به سمت تکمیلهای ناایمن سوق داد، خروجی پیش از نمایش به کاربر دوباره امتیازدهی میشود.
برای کسانی که روی مدلهای میزبان مانند GPT-4، Claude یا Gemini میسازند، لایه ۳ بهطور پیشفرض ارائه شده است. با این حال، تحلیل dev.to هشدار میدهد که هیچ همراستاسازیای ضد-جیلبریک نیست؛ این بدان معنای آن است که توسعهدهندگان اگر متنهای دلخواه کاربران را میپذیرند، همچنان باید طبقهبندهای ورودی/خروجی خود (لایه ۲) را پیادهسازی کنند. در حالی که این لایهها امنیت کلی را بالا میبرند، ابزارهایی مانند AgentGuard نیز با شناسایی حفرههای امنیتی در توابع پایتون کمک میکنند تا نقاط نفوذ در لایههای کدنویسی نیز مسدود شوند.
اگر از مدلهای بیس با وزنهای باز بدون تنظیم ایمنی استفاده میکنید، لایه ۳ را بهطور کامل ندارید. در این سناریو، امنیت شما صرفاً در لایههای ۱ و ۲ نهفته است. این بدان معناست که آستانههای طبقهبند شما باید سختگیرانهتر باشند و لیست رگکس شما باید بهطور فعال نگهداری شود، زیرا دیگر آموزش داخلی مدل را به عنوان آخرین پشتیبان ندارید.
در نهایت، نظارت بر محتوا یک تصمیم معماری است، نه یک فراخوان API ساده. بودجه تأخیر اهمیت دارد: در حالی که رگکس رایگان است، اجرای دوبره یک طبقهبند (ورودی و خروجی) میتواند تفاوت بین یک محصول سریع و یک محصول کند و کسلکننده باشد.
گام بعدی شما
- اگر از مدلهای متنباز استفاده میکنید، حتماً یک مدل طبقهبندی کوچک (مثل BERT) را به عنوان لایه دوم در ورودی و خروجی قرار دهید.
- لیست کلمات کلیدی (Regex) خود را ماهانه بهروزرسانی کنید تا الگوهای جدید دور زدن فیلترها را پوشش دهید.
- برای کاهش تأخیر، ترتیب لایهها را رعایت کنید: ابتدا ارزانترین (Regex) و سپس گرانترین (Classifier) را اجرا کنید.
اما تأثیر این لایهها بر هزینه استنتاج در مقیاس بالا بسیار پیچیدهتر است — به تحلیل ما درباره بهینهسازی هزینههای GPU مراجعه کنید.




گفتگو