پرش به مطلب اصلی

Regex

گاردریل regex متن ورودی یا خروجی مدل را با یک یا چند الگوی Regex بررسی می‌کند. از این نوع وقتی استفاده کنید که عبارت ثابت کافی نیست و داده مورد نظر شما قالب قابل تشخیص دارد؛ مثل شناسه مشتری، شماره پرونده، نام متغیر داخلی یا مقدارهایی شبیه password=....

regex می‌تواند فقط تخطی را تشخیص دهد یا متن را اصلاح کند. اگر فقط یک الگو را می‌خواهید مستقیم جایگزین کنید، جایگزینی با Regex ساده‌تر است.

اطلاع

Regex برای داده‌هایی مناسب است که شکل نوشتاری مشخص دارند. اگر ریسک شما معنایی است، مثل بازنویسی خلاقانه یک دستور خطرناک، Regex به‌تنهایی کافی نیست.

چه زمانی استفاده کنید؟

از Regex برای این سناریوها استفاده کنید:

  • متوقف‌کردن متن‌هایی که شامل شناسه یا عبارت داخلی سازمان هستند.
  • ماسک‌کردن مقدارهایی که الگوی مشخص دارند.
  • پوشش‌دادن مقدارهای محرمانه‌ای که در تشخیص Secret نیستند.
  • کنترل ورودی مدل پیش از ارسال به ارائه‌دهنده مدل.
  • کنترل پاسخ غیرجریانی مدل پیش از تحویل به کاربر.

اگر فقط چند عبارت ثابت دارید، عبارت‌های مسدود ساده‌تر است.

رفتار اجرایی

این نوع از هر دو «نوع اقدام» پشتیبانی می‌کند:

نوع اقداممقدار APIرفتار
اعتبارسنجیvalidateاگر یکی از الگوها تطابق پیدا کند، نتیجه بررسی ناموفق می‌شود. اثر نهایی به «شیوه اعمال» بستگی دارد.
اصلاح محتواmutateهمه تطابق‌ها با «متن جایگزین» جایگزین می‌شوند و وضعیت mutated ثبت می‌شود.

در حالت «اعتبارسنجی»، با «عبور همراه با نشانه‌گذاری» فقط وضعیت flagged ثبت می‌شود. با «عدم عبور و لاگ»، درخواست یا پاسخ متوقف می‌شود.

تنظیمات

عنوان UIمقدار APIتوضیح
الگوهای Regexpatternsهر خط یک Regex معتبر است. دست‌کم یک الگو لازم است.
متن جایگزینredaction_textفقط برای «اصلاح محتوا» استفاده می‌شود. اگر مقدار ندهید، مقدار پیش‌فرض [REDACTED] است.
نکته

برای ماسک‌کردن، متن جایگزین ثابت مثل [***] انتخاب کنید. متن جایگزین نباید خودش اطلاعات حساس یا قابل حدس درباره مقدار اصلی داشته باشد.

نمونه اعتبارسنجی

نمونه زیر شناسه‌هایی مثل TICKET-123456 را فقط نشانه‌گذاری می‌کند و مسیر را متوقف نمی‌کند:

{
"slug": "no-internal-ticket",
"name": "نشانه‌گذاری شناسه تیکت داخلی",
"description": "شناسه‌های داخلی تیکت را در متن پیدا و ثبت می‌کند.",
"type": "regex",
"operation": "validate",
"enforcement": "audit",
"enabled": true,
"config": {
"patterns": [
"\\bTICKET-[0-9]{6}\\b"
]
}
}

پس از ذخیره، شناسه فنی این گاردریل guardrails/no-internal-ticket است.

نمونه اصلاح محتوا

نمونه زیر مقدارهای شبیه رمز عبور را پیش از رسیدن به مدل ماسک می‌کند:

{
"slug": "mask-passwords",
"name": "ماسک‌کردن مقدارهای شبیه رمز",
"description": "فیلدهای password را پیش از ارسال به مدل ماسک می‌کند.",
"type": "regex",
"operation": "mutate",
"enforcement": "enforce",
"enabled": true,
"config": {
"patterns": [
"(?i)password\\s*[:=]\\s*\\S+"
],
"redaction_text": "[***]"
}
}

نمونه استفاده

برای اجرای گاردریل روی ورودی مدل:

x-godarai-guardrails: {"llm_input_guardrails":["guardrails/mask-passwords"]}

برای اجرای گاردریل روی پاسخ غیرجریانی مدل:

x-godarai-guardrails: {"llm_output_guardrails":["guardrails/no-internal-ticket"]}

بررسی نتیجه

اگر گاردریل در حالت «اصلاح محتوا» تطابق پیدا کند، وضعیت mutated ثبت می‌شود. اگر در حالت «اعتبارسنجی» تطابق پیدا کند، وضعیت با توجه به «شیوه اعمال» یکی از flagged یا blocked خواهد بود.

علت پیش‌فرض برای گاردریل اختصاصی Regex برابر Sensitive pattern matched است.

محدودیت‌ها

هشدار

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

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

رفع مشکل‌های رایج

الگو ذخیره نمی‌شود

مقدار patterns باید Regex معتبر باشد. بک‌اسلش‌ها را در JSON دو بار بنویسید؛ برای نمونه \\b به جای \b.

متن اصلاح نمی‌شود

مطمئن شوید operation برابر mutate است و مقدار redaction_text یا مقدار پیش‌فرض برای جایگزینی در نظر گرفته شده است.

تطابق بیش از حد زیاد است

الگو را محدودتر کنید؛ مثلاً از مرز کلمه، پیشوند ثابت یا طول عددی مشخص استفاده کنید.

گام بعدی