خالی نبودن
گاردریل not_null بررسی میکند متن قابلارزیابی وجود داشته باشد و خالی، null یا undefined نباشد. این نوع برای مسیرهایی مفید است که پاسخ خالی مدل یا ورودی بدون محتوا نباید به مرحله بعد برسد.
not_null سادهترین کنترل این دسته است: فقط وجود متن را بررسی میکند. کیفیت، صحت، کاملبودن یا مفیدبودن پاسخ را ارزیابی نمیکند.
چه زمانی استفاده کنید؟
از not_null برای این کارها استفاده کنید:
- جلوگیری از تحویل پاسخ کاملاً خالی به کاربر.
- ردکردن خروجی متنی
nullیاundefined. - اطمینان از اینکه مسیر Chat Completions دستکم یک محتوای متنی قابل بررسی دارد.
اگر نیاز شما محدودیت اندازه است، از تعداد کاراکتر، تعداد کلمه یا تعداد جمله استفاده کنید.
رفتار اجرایی
این نوع فقط از «اعتبارسنجی» (operation: "validate") پشتیبانی میکند. بررسی در این حالتها ناموفق میشود:
- هیچ متن قابلارزیابی وجود نداشته باشد.
- متن پس از حذف فاصلههای ابتدا و انتها خالی باشد.
- متن، بدون توجه به بزرگی و کوچکی حروف، دقیقاً
nullیاundefinedباشد.
هر متن جداگانه بررسی میشود. وجود یک متن معتبر، متن خالی دیگر را جبران نمیکند.
تنظیمات
این گاردریل تنظیمات اختصاصی ندارد. مقدار config باید یک شیء خالی باشد:
{}
نمونه تعریف
{
"slug": "non-empty-response",
"name": "Require response content",
"type": "not_null",
"operation": "validate",
"enforcement": "enforce",
"enabled": true,
"config": {}
}
نمونه استفاده
برای کنترل پاسخ غیرجریانی مدل:
x-godarai-guardrails: {"llm_output_guardrails":["guardrails/non-empty-response"]}
برای پاسخهای مهم، not_null را با یک کنترل دقیقتر همراه کنید. مثلاً برای پاسخ JSON، ابتدا خروجی ساختیافته را تنظیم کنید و سپس JSON Schema را روی خروجی بگذارید.
بررسی نتیجه
اگر متن خالی باشد، علت Response content is empty ثبت میشود.
| شیوه اعمال | رفتار |
|---|---|
| عدم عبور و لاگ | پاسخ یا درخواست متوقف میشود. |
| عبور همراه با نشانهگذاری | وضعیت flagged ثبت میشود و مسیر ادامه پیدا میکند. |
محدودیتها
- رشتههایی مثل
N/A،{}،[]یا"null"خالی محسوب نمیشوند. - کیفیت یا معنی پاسخ بررسی نمیشود.
- فقط محتوای متنی بررسی میشود. اگر پاسخ فقط tool call داشته باشد و متن نداشته باشد، ممکن است خالی دیده شود.
- گاردریل خروجی با پاسخ جریانی پشتیبانی نمیشود.
اگر محصول شما پاسخ بدون متن اما دارای tool call را معتبر میداند، not_null را روی همان مسیر خروجی فعال نکنید یا نتیجه آن را ابتدا در حالت «عبور همراه با نشانهگذاری» بررسی کنید.
پرسشهای پرتکرار
آیا not_null پاسخ کوتاه اما بیمعنی را رد میکند؟
خیر. مثلاً پاسخ «باشه» خالی نیست و عبور میکند. برای کنترل کیفیت پاسخ باید از پرامپت دقیقتر، ارزیابی کاربردی یا گاردریلهای تکمیلی استفاده کنید.
آیا این گاردریل برای ورودی مدل هم کاربرد دارد؟
بله. اگر نمیخواهید درخواستهای بدون متن به مدل برسند، شناسه فنی را در llm_input_guardrails قرار دهید.
گام بعدی
- برای الزام پاسخ ساختیافته، JSON Schema را ببینید.
- برای محدودیت طول پاسخ، تعداد کاراکتر را بخوانید.