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

جایگزینی با Regex

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

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

اطلاع

regex_replace همیشه از نوع «اصلاح محتوا» است. یعنی هدف آن تغییر متن و ادامه مسیر است، نه اعلام تخطی و توقف مسیر.

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

از این گاردریل برای این کارها استفاده کنید:

  • ماسک‌کردن شناسه یا مقدار حساس با یک الگوی مشخص.
  • یکسان‌سازی قالب داده پیش از ارسال به مدل.
  • جایگزینی بخشی از متن با استفاده از گروه‌های Regex، مثل $1.
  • اصلاح پاسخ مدل پیش از نمایش، وقتی پاسخ غیرجریانی است.

برای مقدارهای محرمانه رایج، ابتدا تشخیص Secret را بررسی کنید. برای داده شخصی رایج، PII پایه ساده‌تر است.

رفتار اجرایی

این نوع فقط از «اصلاح محتوا» (operation: "mutate") پشتیبانی می‌کند. گدارAI الگوی Regex را روی هر متن انتخاب‌شده اجرا می‌کند و همه تطابق‌ها را با «متن جایگزین» جایگزین می‌کند.

اگر تغییری انجام شود، وضعیت mutated و علت Regex replacement applied ثبت می‌شود. اگر هیچ تطابقی پیدا نشود، وضعیت passed است و متن بدون تغییر ادامه پیدا می‌کند.

تنظیمات

عنوان UIمقدار APIتوضیح
الگوی Regexpatternیک Regex معتبر. این مقدار اجباری است.
متن جایگزینreplacementمتنی که به جای تطابق‌ها قرار می‌گیرد. مقدار پیشنهادی برای ماسک‌کردن [***] است.

اگر از API مستقیم استفاده می‌کنید، مقدار case_sensitive هم در config قابل ارسال است. مقدار پیش‌فرض حساس به بزرگی و کوچکی حروف است.

هشدار

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

نمونه تعریف

نمونه زیر عبارت‌هایی مثل ticket 123456 یا ticket-123456 را به قالب ثابت TICKET-123456 تبدیل می‌کند:

{
"slug": "normalize-ticket",
"name": "یکسان‌سازی شناسه تیکت",
"description": "قالب شناسه تیکت را پیش از ارسال به مدل یکسان می‌کند.",
"type": "regex_replace",
"operation": "mutate",
"enforcement": "enforce",
"enabled": true,
"config": {
"pattern": "(?i)ticket[- ]([0-9]{6})",
"replacement": "TICKET-$1",
"case_sensitive": true
}
}

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

برای اصلاح ورودی مدل:

x-godarai-guardrails: {"llm_input_guardrails":["guardrails/normalize-ticket"]}

برای اصلاح پاسخ غیرجریانی مدل:

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

بررسی نتیجه

اگر متن تغییر کند، نتیجه در guardrail_checks با وضعیت mutated ثبت می‌شود:

{
"selector": "guardrails/normalize-ticket",
"status": "mutated",
"operation": "mutate",
"enforcement": "enforce",
"reason": "Regex replacement applied",
"mutated": true
}

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

هیچ تغییری انجام نمی‌شود

الگو با متن انتخاب‌شده تطابق ندارد یا گاردریل روی بخش اشتباه اجرا شده است. x-godarai-guardrails-scope و محل اجرا، یعنی ورودی یا خروجی، را بررسی کنید.

جایگزینی گروه‌ها درست نیست

در متن جایگزین از قالب گروه‌های Regex مثل $1 استفاده کنید و مطمئن شوید در الگو capture group تعریف کرده‌اید.

می‌خواهم مسیر متوقف شود

این نوع برای توقف طراحی نشده است. از Regex با operation: "validate" و شیوه اعمال «عدم عبور و لاگ» استفاده کنید.

محدودیت‌ها

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

گام بعدی