عبارتهای مسدود (Keyword Blocklist)
keyword_blocklist سادهترین گاردریل برای متوقفکردن عبارتهای مشخص است. این نوع متن ورودی یا خروجی مدل را با فهرست «عبارتهای مسدود» مقایسه میکند و اگر یکی از عبارتها پیدا شود، تخطی ثبت میشود.
این گاردریل فقط از «اعتبارسنجی» (operation: "validate") پشتیبانی میکند. اگر میخواهید متن را تغییر دهید یا مقدار حساس را ماسک کنید، Regex، جایگزینی با Regex یا PII پایه مناسبتر است.
این گاردریل معنای جمله را نمیفهمد؛ فقط وجود همان عبارت را در متن بررسی میکند. برای الگوهای منعطفتر از Regex استفاده کنید.
چه زمانی استفاده کنیم؟
از عبارتهای مسدود وقتی استفاده کنید که سیاست شما با چند عبارت ثابت و قطعی قابل بیان است؛ برای نمونه:
- عبارتهای شناختهشده تزریق پرامپت مثل
ignore previous instructions - دستورهای عملیاتی پرریسک مثل
drop table - نام پروژه، نام سیستم داخلی یا عبارت مشخصی که نباید به مدل برسد
- بررسی آزمایشی تخطیها با «عبور همراه با نشانهگذاری» پیش از مسدودسازی
اگر لازم است فاصلهگذاری، قالب شناسه، چند شکل نوشتاری یا الگوی عددی را تشخیص دهید، Regex انتخاب دقیقتری است.
رفتار اجرایی
در زمان اجرا:
- گدارAI متن و عبارتها را بدون حساسیت به بزرگی و کوچکی حروف انگلیسی مقایسه میکند.
- هر مقدار داخل
termsبا جستوجوی زیررشته بررسی میشود. - اگر عبارت پیدا شود، مقدار
reasonبرابرKeyword blocklist matchedثبت میشود. - با «عبور همراه با نشانهگذاری»، وضعیت
flaggedثبت میشود و مسیر ادامه پیدا میکند. - با «عدم عبور و لاگ» یا «عدم عبور - بدون لاگ»، درخواست یا پاسخ متوقف میشود.
عبارتهای کوتاه و عمومی میتوانند متن بیخطر را هم درگیر کنند. پیش از فعالکردن مسدودسازی، بهتر است چند روز با audit اثر قانون را در گزارش رخدادها ببینید.
تنظیمات
| عنوان UI | مقدار API | توضیح |
|---|---|---|
| عبارتهای مسدود | terms | هر خط یک عبارت است. دستکم یک عبارت لازم است. |
عبارت را تا جای ممکن کامل و زمینهمند بنویسید. برای نمونه، drop table از drop قابل اعتمادتر است.
نمونه تعریف
نمونه زیر عبارتهای رایج تزریق پرامپت و یک دستور پرریسک را متوقف میکند:
{
"slug": "no-injection",
"name": "جلوگیری از تزریق ساده پرامپت",
"description": "چند عبارت شناختهشده تزریق پرامپت و دستور پرریسک را متوقف میکند.",
"type": "keyword_blocklist",
"operation": "validate",
"enforcement": "enforce",
"enabled": true,
"config": {
"terms": [
"ignore previous instructions",
"jailbreak",
"drop table"
]
}
}
پس از ذخیره، شناسه فنی این گاردریل guardrails/no-injection است.
نمونه استفاده روی ورودی
x-godarai-guardrails: {"llm_input_guardrails":["guardrails/no-injection"]}
x-godarai-guardrails-scope: last
اگر آخرین پیام کاربر شامل ignore previous instructions باشد و شیوه اعمال برابر «عدم عبور و لاگ» باشد، درخواست پیش از ارسال به ارائهدهنده مدل متوقف میشود.
نمونه استفاده روی خروجی
برای کنترل پاسخ مدل، شناسه فنی را در llm_output_guardrails قرار دهید:
x-godarai-guardrails: {"llm_output_guardrails":["guardrails/no-injection"]}
گاردریل خروجی فقط برای پاسخ غیرجریانی پشتیبانی میشود. اگر درخواست stream: true دارد، گدارAI ترکیب آن با llm_output_guardrails را با خطای 400 رد میکند.
بررسی نتیجه
اگر تطابق مسیر را متوقف کند، پاسخ خطا شامل guardrail_checks است:
{
"error": {
"message": "Request blocked by GodarAI guardrail",
"type": "guardrail_checks_failed",
"code": "guardrail_blocked"
},
"guardrail_checks": {
"llm_input_guardrails": [
{
"selector": "guardrails/no-injection",
"status": "blocked",
"operation": "validate",
"enforcement": "enforce",
"reason": "Keyword blocklist matched",
"latency_ms": 0
}
]
}
}
در حالت «عبور همراه با نشانهگذاری»، وضعیت بهجای blocked برابر flagged است و مسیر متوقف نمیشود.
گاردریل آماده
گدارAI این شناسه فنی آماده را دارد:
guardrails/keyword-blocklist
این گاردریل آماده عبارتهای زیر را بررسی میکند:
ignore previous instructionsjailbreakrm -rfdrop table
گاردریل آماده برای آزمایش سریع خوب است. برای محیط عملیاتی، گاردریل اختصاصی بسازید تا فهرست عبارتها و هدف آن برای تیم شما قابل بازبینی باشد.
رفع مشکلهای رایج
عبارت ممنوع پیدا نمیشود
این گاردریل زیررشته دقیق را بررسی میکند. فاصلهگذاری متفاوت، غلط املایی، نیمفاصله، بازنویسی عبارت یا ترجمه ممکن است تطابق ندهد. برای حالتهای پیچیدهتر از Regex استفاده کنید.
عبارتهای بیخطر هم مسدود میشوند
عبارتهای کوتاه یا عمومی را طولانیتر و زمینهمندتر کنید. اگر هنوز مطمئن نیستید، شیوه اعمال را موقتاً روی «عبور همراه با نشانهگذاری» بگذارید.
درخواست متوقف نمیشود
«شیوه اعمال» را بررسی کنید. اگر برابر «عبور همراه با نشانهگذاری» باشد، تخطی فقط با وضعیت flagged ثبت میشود. برای توقف مسیر، از «عدم عبور و لاگ» استفاده کنید.
محدودیتها
- این گاردریل معنایی نیست و فقط زیررشته را بررسی میکند.
- عبارتهای کوتاه میتوانند تطابق اشتباه بسازند.
- فاصلهگذاری، املای متفاوت یا بازنویسی عبارت ممکن است تشخیص داده نشود.
- این گاردریل متن را تغییر نمیدهد و فقط برای اعتبارسنجی استفاده میشود.
گام بعدی
- برای الگوهای دقیقتر، Regex را ببینید.
- برای ماسککردن داده شخصی، PII پایه را بخوانید.
- برای شناخت محدوده اجرا، قابلیتها و محدوده پشتیبانی گاردریلها را مرور کنید.