قوانین محدودسازی نرخ در گدارAI
قوانین محدودسازی نرخ به شما کمک میکنند سرعت مصرف مدلها را کنترل کنید. وقتی چند محصول، سرویس یا تیم از یک درگاه مشترک استفاده میکنند، یک خطای ساده در کلاینت یا جهش ناگهانی ترافیک میتواند ظرفیت مدل، تجربه کاربر و هزینه را تحت فشار بگذارد.
در گدارAI میتوانید برای تعداد درخواست یا مصرف توکن، در بازههای زمانی مشخص سقف بگذارید و این سقف را بر اساس کاربر، تیم، واحد سازمانی، اکانت مجازی، مدل یا فراداده اعمال کنید.
محدودسازی نرخ با محدودیت بودجه فرق دارد. محدودسازی نرخ سرعت مصرف را در بازههای کوتاه کنترل میکند؛ محدودیت بودجه سقف مالی مصرف را در بازههایی مثل روز، هفته یا ماه نگه میدارد.
چه زمانی از محدودسازی نرخ استفاده کنیم؟
این قابلیت برای سناریوهایی مثل موارد زیر مناسب است:
- جلوگیری از ارسال تعداد زیاد درخواست به دلیل خطای کلاینت
- تقسیم ظرفیت بین تیمها یا سرویسهای مختلف
- کنترل مصرف توکن برای مدلهای گرانتر یا محدودتر
- محافظت از مسیرهای حساس در ساعتهای پرترافیک
- تعریف سقف جدا برای محیطهای آزمایشی، محصولی یا مشتریان مختلف
قانون خوب باید به یک پرسش پاسخ بدهد: «کدام مصرفکننده، روی کدام ترافیک، در چه بازهای و با چه سقفی مجاز است؟»
اجزای اصلی یک قانون
در UI گدارAI، این مفهوم را با عنوان «قوانین محدودسازی نرخ» میبینید. هر قانون معمولاً چند بخش دارد:
| بخش | در UI | توضیح |
|---|---|---|
| شناسه و نام | شناسه فنی، نام نمایشی | برای پیدا کردن قانون در گزارشها و فرمها. |
| سقف | سقف محدودیت، واحد محدودیت | مشخص میکند محدودیت بر اساس تعداد درخواست است یا توکن. |
| بازه | بازه زمانی، مقدار بازه | مثل دقیقه، ساعت، روز، هفته، ماه یا مقدار سفارشی بر حسب ثانیه. |
| محدوده اعمال | کاربران، تیمها، واحدهای سازمانی، اکانتهای مجازی، مدلها، فراداده | تعیین میکند قانون روی کدام ترافیک اعمال شود. |
| اولویت | اولویت | وقتی چند قانون با هم منطبق میشوند، ترتیب تصمیمگیری را روشن میکند. |
| رفتار تعارض | رفتار تعارض | مشخص میکند در برخورد چند قانون، کدام قانون مؤثر باشد. |
| وضعیت | وضعیت قانون | فعال یا غیرفعال بودن قانون. |
برای شروع، یک قانون عمومی با سقف محافظهکارانه بسازید و بعد برای تیمها، مدلها یا مسیرهای حساس قانونهای دقیقتر اضافه کنید.
واحد محدودیت و بازه زمانی
دو واحد اصلی برای محدودسازی نرخ وجود دارد:
| واحد | کاربرد |
|---|---|
| تعداد درخواست | وقتی میخواهید تعداد فراخوانیها را محدود کنید؛ برای کنترل فشار روی مسیرهای پرترافیک مناسب است. |
| توکن | وقتی هزینه یا ظرفیت مدل بیشتر به حجم ورودی و خروجی وابسته است. |
بازه زمانی هم مشخص میکند سقف در چه دورهای محاسبه شود:
- در دقیقه
- در ساعت
- در روز
- در هفته
- در ماه
- سفارشی، بر حسب ثانیه
برای جلوگیری از جهش ناگهانی، بازههای کوتاهتر مناسبترند. برای کنترل مصرف پایدار، بازههای طولانیتر تصویر بهتری میدهند.
محدوده اعمال قانون
یک قانون میتواند روی همه ترافیک اعمال شود یا فقط روی بخشی از آن. رایجترین محدودهها اینها هستند:
| محدوده | کاربرد پیشنهادی |
|---|---|
| کاربر | سقف مستقل برای هر کاربر نهایی یا اپراتور داخلی. |
| تیم | تقسیم ظرفیت بین تیمهای محصول، پشتیبانی، عملیات یا تحقیق. |
| واحد سازمانی | کنترل مصرف در ساختارهای سازمانی بزرگتر. |
| اکانت مجازی | کنترل جداگانه برای هر سرویس، محصول یا کلید مصرفکننده. |
| مدل یا مدل مجازی | محافظت از مدلهای گرانتر، کندتر یا محدودتر. |
| فراداده | تفکیک بر اساس project_id، environment، cost_center یا مقدارهای مشابه. |
اگر چند سرویس از یک توکن مشترک استفاده میکنند، فراداده پایدار کمک میکند محدودیت را دقیقتر اعمال کنید.
رفتار تعارض بین چند قانون
گاهی یک درخواست با چند قانون منطبق میشود. در این حالت، «رفتار تعارض» تعیین میکند تصمیم نهایی چطور گرفته شود:
| مقدار فنی | عنوان UI | چه زمانی مناسب است؟ |
|---|---|---|
first_match | اولین قانون منطبق | وقتی ترتیب قوانین را خودتان دقیق چیدهاید. |
most_restrictive | محدودکنندهترین قانون | وقتی میخواهید محافظهکارانهترین سقف اعمال شود. |
apply_all | اعمال همه قوانین منطبق | وقتی هر قانون باید سهم خودش را در کنترل مصرف داشته باشد. |
اگر قانون عمومی را بالاتر از قانون خاص بگذارید و رفتار تعارض را درست انتخاب نکنید، ممکن است قانون دقیقتر هرگز اثر نگذارد. ترتیب و اولویت را بعد از ساخت قانون در گزارش رخدادها بررسی کنید.
نمونه قانون مفهومی
نمونه زیر شکل یک قانون را نشان میدهد. نام فیلدها برای فهم ساختار آمدهاند؛ در عمل، فرم UI همین مفاهیم را با برچسبهای فارسی در اختیار شما میگذارد.
{
"rule_id": "support-chat-rpm",
"name": "سقف درخواست پشتیبانی",
"enabled": true,
"priority": 10,
"limit": {
"unit": "requests",
"value": 600,
"window_unit": "minute",
"window_value": 1
},
"conditions": {
"metadata.project_id": "support-center",
"model": "support-chat"
},
"conflict_behavior": "most_restrictive",
"retry_after_header": true
}
نمونه بعدی بهجای تعداد درخواست، مصرف توکن را کنترل میکند:
{
"rule_id": "research-token-hourly",
"name": "سقف ساعتی توکن برای پژوهش",
"enabled": true,
"priority": 20,
"limit": {
"unit": "tokens",
"value": 50000,
"window_unit": "hour",
"window_value": 1
},
"conditions": {
"metadata.cost_center": "research"
},
"conflict_behavior": "first_match",
"retry_after_header": true
}
وقتی درخواست از سقف عبور میکند چه میشود؟
اگر درخواست از قانون مؤثر عبور کند، گدارAI آن را پیش از ارسال به ارائهدهنده مدل متوقف میکند و پاسخ 429 Too Many Requests برمیگرداند. در این حالت، معمولاً این سرآیندها به عیبیابی کمک میکنند:
| سرآیند | معنی |
|---|---|
X-RateLimit-Limit | سقف مؤثر قانون. |
X-RateLimit-Remaining | ظرفیت باقیمانده در بازه فعلی. |
X-RateLimit-Reset | زمان بازنشانی بازه. |
Retry-After | مدت پیشنهادی برای تلاش دوباره، اگر در قانون فعال شده باشد. |
گزارش رخداد درخواست نیز نشان میدهد کدام قانون باعث رد شدن درخواست شده است.
حالت نرم
حالت نرم برای زمانی است که هنوز نمیخواهید درخواستها را مسدود کنید، اما میخواهید اثر قانون را در گزارشها و سنجهها ببینید. این حالت برای آزمایش سیاست جدید مفید است.
حالت نرم بدون پایش دقیق ارزش زیادی ندارد. اگر آن را فعال میکنید، گزارش رخدادها، سنجهها و هشدارهای داخلی را هم بررسی کنید تا مطمئن شوید قانون واقعاً الگوی مصرف را نشان میدهد.
الگوهای پیشنهادی
سقف کوتاه برای مسیرهای پرترافیک
برای مسیرهایی که کاربر زیاد صدا میزند، سقف دقیقهای یا ساعتی بگذارید تا جهشهای ناگهانی کنترل شوند.
سقف جدا برای مدلهای گران
اگر یک مدل هزینه بیشتری دارد یا ظرفیت محدودی دارد، قانون اختصاصی برای همان مدل یا مدل مجازی تعریف کنید.
تفکیک با فراداده
اگر محصول شما project_id، environment یا cost_center میفرستد، از همین کلیدها برای تفکیک قوانین استفاده کنید. این کار هم گزارشگیری را دقیقتر میکند و هم کنترل مصرف را منصفانهتر.
فعالکردن Retry-After
اگر کلاینت شما تلاش دوباره کنترلشده دارد، سرآیند Retry-After کمک میکند بهجای ارسال پشت سر هم درخواست، در زمان مناسب دوباره تلاش کند.
جمعبندی
قوانین محدودسازی نرخ در گدارAI برای کنترل سرعت مصرف ساخته شدهاند. با انتخاب واحد درست، بازه مناسب، محدوده اعمال دقیق و رفتار تعارض روشن، میتوانید از ظرفیت مدلها محافظت کنید و پیش از تبدیل ترافیک ناخواسته به هزینه واقعی، آن را مهار کنید.