خطاهای محدودیت تعداد درخواست («Too Many Requests»، «Rate limit reached») زمانی رخ میدهند که به محدودیت تعداد درخواست سازمان خود برسید؛ یعنی حداکثر تعداد درخواستها و توکنهایی که میتوان در هر دقیقه ارسال کرد. اگر به این محدودیت برسید، سازمان تا زمانی که محدودیت تعداد درخواست بازنشانی نشود نمیتواند درخواستها را با موفقیت ارسال کند. پیام خطا به این شکل است:
برای gpt-3.5-turbo در سازمان org-exampleorgid123 روی توکنهای هر دقیقه به محدودیت نرخ رسیدید.
محدودیت: 10000.000000 / min. فعلی: 10020.000000 / min. توصیه میکنیم این خطاها را با استفاده از پسروی نمایی مدیریت کنید. پسروی نمایی یعنی وقتی خطای محدودیت تعداد درخواست رخ میدهد، مکث کوتاهی انجام دهید و سپس درخواست ناموفق را دوباره امتحان کنید. اگر درخواست همچنان ناموفق باشد، مدت مکث افزایش مییابد و این فرایند تکرار میشود. این کار تا زمانی ادامه پیدا میکند که درخواست موفق شود یا به حداکثر تعداد تلاشهای مجدد برسد.
از آنجا که درخواستهای ناموفق در محدودیت دقیقهای شما محاسبه میشوند، ارسال مداوم دوبارهٔ یک درخواست مؤثر نخواهد بود. محدودیتهای تعداد درخواست میتوانند در بازههای کوتاهتر اعمال شوند؛ برای مثال، ۱ درخواست در ثانیه برای محدودیت ۶۰ RPM. یعنی جهشهای کوتاهِ درخواستهای پرتعداد نیز میتوانند به خطاهای محدودیت تعداد درخواست منجر شوند. پسروی نمایی با فاصله انداختن میان درخواستها خوب عمل میکند و فراوانی این خطاها را به حداقل میرساند.
در Python، یک راهکار پسروی نمایی میتواند به این شکل باشد:
from openai import OpenAI, RateLimitError
import backoff
client = OpenAI()
@backoff.on_exception(backoff.expo, RateLimitError)
def completions_with_backoff(**kwargs):
response = client.completions.create(**kwargs)
return response(لطفاً توجه کنید: کتابخانهٔ backoff یک ابزار شخص ثالث است. از همهٔ مشتریان خود میخواهیم هنگام اعتبارسنجی هرگونه کد خارجی برای پروژههایشان، بررسیهای لازم را انجام دهند.)
اگر پیادهسازی پسروی نمایی همچنان به این خطا منجر میشود، ممکن است لازم باشد سطح استفادهٔ خود را افزایش دهید. میتوانید محدودیتهای تعداد درخواست فعلی خود و نحوهٔ افزایش سطح اعتماد برای بالا بردن محدودیتهای تعداد درخواستتان را در بخش محدودیتها در تنظیمات حساب خود مشاهده کنید.
