چیت‌شیت

گاردریل‌ها، نظارت و پاک‌سازی داده‌های حساس

Guardrails, Moderation and Redaction

بررسی ورودی و خروجی، مسیریابی احکام ارزیابی طبقه‌بندی‌کننده، پاک‌سازی اسپن‌ها و کنترل فراخوانی ابزارها. پایتون و Rust از درس‌ها.

  • ۱۲ بخش
  • ۴ درس مرتبط
  • کد و دستورها عیناً از دوره‌ی اصلی
فهرست مطالب
  1. بررسی‌های گاردریل
  2. پشته فیلترها
  3. فراخوانی API نظارت
  4. آستانه‌ها در کد
  5. مقایسه سیستم‌های نظارت در کنار هم
  6. قوانین شدت تهدید
  7. مسیریاب خروجی
  8. عیب‌یابی
  9. فایروال فراخوانی ابزار
  10. رابط API کنترل پاک‌سازی داده‌های حساس
  11. اجرای پروژه‌ها
  12. پرسش و پاسخ

بررسی‌های گاردریل

کار و کد
وظیفهکد
یافتن الگوهای تزریق پرامپتdetect_injection(text)
یافتن اطلاعات هویتی حساس (PII) در ورودیdetect_pii(text)
تعیین سقف اندازه پرامپتcheck_length(text, max_chars=5000, max_words=1000)
مسدودسازی خروجی سمیfilter_toxicity(text)
پاک‌سازی داده‌های حساس (PII) در خروجیscrubbed, result = scrub_pii_from_output(text)
بررسی پاسخ‌دهی خروجی به ورودیcheck_relevance(input_text, output_text, threshold=0.15)
تشخیص بازتاب پرامپت سیستمcheck_system_prompt_leak(output_text, system_prompt, threshold=0.4)
اجرای تمام بررسی‌ها پیرامون مدلpipeline.process(attack)

پشته فیلترها

گام‌به‌گام
  1. بررسی طولرد ورودی بالای 5000 کاراکتر. بررسی طول هزینه‌ای ندارد.
  2. محدودیت نرخ درخواستمجاز بودن 10 درخواست بر دقیقه برای هر کاربر.
  3. طبقه‌بندی‌کننده موضوعرد ورودی‌های نامرتبط پیش از رسیدن به مدل.
  4. شناساگر PIIپاک‌سازی یا رد اطلاعات شخصی.
  5. شناساگر تزریق پرامپتتاخیر طبقه‌بندی‌کننده‌ها بین 5 تا 20 میلی‌ثانیه.
  6. مدل زبانی بزرگ (LLM)تاخیر فراخوانی بین 200 تا 2000 میلی‌ثانیه.
  7. فیلتر سمیت محتواطبقه‌بندی تمامی خروجی‌ها.
  8. پاک‌کننده PII و بررسی مرتبط بودنپاک‌سازی داده‌های حساس، سپس بررسی تناسب پاسخ با سوال.

فراخوانی API نظارت

کد
python
from openai import OpenAI
client = OpenAI()
response = client.moderations.create(
    model="omni-moderation-latest",  # متن و تصویر در یک فراخوانی
    input="<text>",
)
result = response.results[0]
print(result.flagged)                # مقدار True در صورت فعال‌شدن یک دسته

آستانه‌ها در کد

پیش‌فرض‌ها
تنظیمپیش‌فرضنکته
`check_length` `max_chars`5000همچنین max_words با مقدار 1000
`detect_injection` block at0.75حداکثر اطمینان الگو
`filter_toxicity` block at0.80حداکثر اطمینان دسته
`check_relevance` `threshold`0.15قبول در مقدار یا بالاتر
`check_system_prompt_leak` `threshold`0.4قبول در مقادیر پایین‌تر
`input_moderator` `threshold`0.5یکسان برای output_moderator
`InstructionLeakageClassifier` `threshold`0.55شباهت کسینوسی تری‌گرام
_NEGATION_WINDOW20کاراکترهای بررسی‌شده برای not، never، no

مقایسه سیستم‌های نظارت در کنار هم

مقایسه
فاکتورنظارت OpenAIسیستم Llama Guardسرویس Perspective API
مدلomni-moderation-latest و GPT-4oپایه Llama-3.1-8B (نسخه v3)امتیازدهی سمیت محتوا پیش از LLM
دسته‌ها13 مقدار بولیS1 تا S14 در نسخه v4دسته TOXICITY و 5 نوع مشتق
ورودیمتن و تصویرنسخه v4: تصویر و متنمتن
زبان‌ها42٪ بهبود چندزبانه8 زبان (در نسخه v3)اعلام‌نشده
هزینهرایگان برای اغلب توسعه‌دهندگانوزن‌های بازخط مبنا پژوهشی
موارد استفادهنیاز به API میزبانی‌شدهمیزبانی شخصی، سوءاستفاده از کد S14مقایسه با کارهای پژوهشی

قوانین شدت تهدید

مفهوم‌ها
زیاد (high)
مسدودسازی. حذف خروجی و بازگرداندن امتناع مدل به دلیل سیاست‌ها.
متوسط (medium)
پاک‌سازی داده‌های حساس. اعمال پاک‌ساز هر طبقه‌بندی‌کننده.
کم (low)
هشدار. ثبت در لاگ و افزودن یک تذکر ملایم.
هیچ (none)
ثبت در لاگ. ارسال مستقیم و دست‌نخورده‌ی خروجی.
اولویت با بالاترین شدت
پاک‌سازی بعلاوه هشدار نتیجه‌اش پاک‌سازی است.
اطلاعات هویتی (pii)
شماره ملی (ssn) یا کارت بانکی، زیاد است. سه مورد یافته‌شده یا ایمیل، متوسط است.
نشت دستورالعمل (instruction-leakage)
0.85 زیاد، 0.70 متوسط، 0.55 کم.
سمیت محتوا (toxicity)
3 تطابق زیاد، 2 متوسط، 1 کم.

مسیریاب خروجی

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

عیب‌یابی

عیب‌یابی
  • درخواست حاوی قاچاق اموجی تایید می‌شود

    علت
    توکنایزر اموجی‌ها را به شکل متفاوتی ادغام می‌کند
    راه‌حل
    افزودن مرحله نرمال‌سازی
  • حروف هم‌شکل سیریلیک رد می‌شوند

    علت
    طبقه‌بندی‌کننده فقط روی زبان انگلیسی آموزش دیده است
    راه‌حل
    normalize(text): نگاشت نویسه هم‌شکل، NFKC
  • حمله انکودینگ نفوذ می‌کند

    علت
    فقط نظارت بر ورودی اعمال شده است
    راه‌حل
    افزودن نظارت بر خروجی
  • تمام ورودی‌ها به مدل ارسال می‌شوند

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

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

    علت
    تطابق کوچک و تودرتو حذف شده است
    راه‌حل
    ادغام اسپن‌های دارای تقاطع در یک اسپن مشترک

فایروال فراخوانی ابزار

گام‌به‌گام
  1. فراخوانیتابع call(line, max_bytes) ورودی id|role|tool|argument را تفکیک کرده و کاراکترهای کنترلی را رد می‌کند.
  2. تصمیممقدار read برابر Allow است. مقدار write در نقش ویراستار برابر ApprovalRequired است. سایر نقش‌ها Deny هستند.
  3. اعتبارسنجیتاییدیه باید دقیقاً برابر کل فراخوانی و مصرف‌نشده باشد، وگرنه خطای Error::Conflict می‌دهد.
  4. ارسالمقصد باید یک فایل موجود و محصور باشد. محتوا حداکثر 16384 بایت باشد.
  5. بازرسییک سطر تب‌دار به ازای هر شناسه درخواست. شناسه تکراری خطای Error::Conflict می‌دهد.

رابط API کنترل پاک‌سازی داده‌های حساس

کار و کد
وظیفهکد
یافتن اسپن‌های EMAIL، IPV4 و LITERALdetect(text, literals=())
اتصال اسپن‌های دارای همپوشانیmerge_spans(spans, text_length)
جایگزینی با [REDACTED]redact(text, literals=())
بررسی حداکثر 10000 رکوردprocess(records, literals=())
رندر دفتر کل آفست‌هاrender_html(report)

اجرای پروژه‌ها

دستورها
دستورعملکرد
python3 scripts/project_test.py <project> --init learning-artifacts/<project>ساخت میز کار برای یادگیرنده
python3 scripts/project_test.py <project> --all --solution --strictتست کد مرجع
python3 cli.py samples/input.jsonl --literals samples/literals.json --output demo-outputنوشتن redacted.jsonl، receipt.json و review.html
rustc --edition=2021 <dir>/cli.rs -o <dir>/firewallبیلد ابزار خط فرمان فایروال
<dir>/firewall <root> reader r1 read notes.mdخواندن یک فایل از مسیر گیت

پرسش و پاسخ

پرسش و پاسخ
چرا ورودی و خروجی هر دو بررسی شوند؟
مهاجمان برای دور زدن تک‌تک لایه‌ها راهی پیدا می‌کنند.
آیا یک گارد طبقه‌بندی‌کننده کافی است؟
خیر. حمله قاچاق اموجی روی شش سیستم گارد به 100٪ ASR رسید.
نقش کاربر از کجا تامین می‌شود؟
توسط برنامه‌ی فراخواننده. مدل فقط عملیات را تعیین می‌کند.
آیا بررسی خروجی تاخیر ایجاد می‌کند؟
آن را همگام با استریمینگ توکن‌ها اجرا کنید. چانک پایانی را بافر کنید.