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

قوانین محدودسازی نرخ در گدار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 برای کنترل سرعت مصرف ساخته شده‌اند. با انتخاب واحد درست، بازه مناسب، محدوده اعمال دقیق و رفتار تعارض روشن، می‌توانید از ظرفیت مدل‌ها محافظت کنید و پیش از تبدیل ترافیک ناخواسته به هزینه واقعی، آن را مهار کنید.