OpenAI „Rate limit reached” hibaüzenetek: mit jelentenek, és hogyan lehet kezelni őket

Az OpenAI API 429 „Elérte a sebességkorlátot” üzenetet ad vissza, amikor a szervezet percenként több kérést vagy tokent küldött, mint amennyit a korlátok lehetővé tesznek. A korlátozások a szervezetre vonatkoznak, nem az egyes felhasználókra. Ezek a hibák ideiglenesek. Ha megvárja és újra elküldi a kérést, az általában sikeres lesz. Néhány más OpenAI-429 hiba számlázással kapcsolatos, és ezek nem múlnak el attól, hogy várakozik. További információ: Hibakódok.

Milyenek az OpenAI rate limit hibái?

Állapot Hiba Mit jelent ez? Újra?
429 rate_limit_exceeded, kérések percenként (RPM) Egy perc alatt túl sok kérést küldött. Igen, utána Retry-After
429 rate_limit_exceeded, tokenek percenként (TPM) A kérések egy perc alatt túl sok tokent használtak. Az üzenetben látható a korlát, a használt tokenek száma, valamint a kérés által kért tokenek száma. Igen, utána Retry-After. A kisebb kérések segítenek.
429 slow_down (típus: rate_limit_error) Az Ön forgalma túl gyorsan növekedett, annak ellenére, hogy az RPM- és TPM-korlátain belül maradt. Igen, alacsonyabb arányban
503 server_is_overloaded (típus: service_unavailable_error) Az OpenAI kiszolgálói foglaltak. Igen, minden alkalommal hosszabb késéssel
429 credit_balance_exhausted, költési korlát vagy használati korlát hibái (típus insufficient_quota) Elfogytak a kreditei, vagy túllépett egy korlátot. No. Lásd: OpenAI insufficient_quota és credit_balance_exhausted.

A legtöbb ilyen hiba azonos 429 állapotú, így csak az állapot alapján nem lehet megkülönböztetni őket. Olvassa el a válasz törzsében található error.code elemet.

OpenAI-sebességkorlátokkal kapcsolatos hibák kezelése

  1. Először ellenőrizze error.code . Ha olyan számlázási kódról van szó, mint például credit_balance_exhausted, állítsa le az újrapróbálkozást, és mondja el a felhasználónak. A számlázási hiba utáni újbóli próbálkozás nem állítja vissza a hozzáférést.
  2. Kövesse Retry-After , ha jelen van. Ha hiányzik, használja a jitterrel kombinált exponenciális várakozási idő növelését, és korlátozza az újrapróbálkozások számát.
  3. Lassítson slow_down után. Csökkentse a kérések gyakoriságát, majd fokozatosan növelje azt. Az OpenAI 1M bemeneti TPM feletti ökölszabálya, hogy 15 percenként a forgalmat legfeljebb 50%-kal érdemes növelni.
  4. TPM-hiba után kevesebb tokent küldhet. A rövidebb kérések és válaszok lehetővé teszik, hogy percenként több kérés férjen el.
  5. Hátráljon tovább egy 503 után. Növelje az újrapróbálkozások közötti késést, és ellenőrizze az OpenAI állapotoldalát.
  6. Mondja el a felhasználónak, hogy mi történik. „Elfoglalt, újrapróbálkozás 5 másodperc múlva” jobb, mint egy soha véget nem érő spinner.

Az OpenAI Python SDK alapértelmezés szerint 2 alkalommal újrapróbálkozik csatlakozási hibák esetén, valamint 409, 429, 408 és 5xx válaszokat rövid exponenciális visszalépéssel. Ezt a(z) max_retries használatával módosíthatja. Amikor az újrapróbálkozások elfogynak, az SDK egy RateLimitError hibát jelez egy InternalServerError esetén, és egy 429 hibát egy 503 esetén, így a kódnak továbbra is szüksége van egy tervre:

import openai
from openai import OpenAI

client = OpenAI(max_retries=3)

BILLING_CODES = {
    "credit_balance_exhausted",
    "organization_spend_limit_exceeded",
    "project_spend_limit_exceeded",
    "organization_usage_limit_exceeded",
}


def summarize(text: str) -> str | None:
    try:
        response = client.responses.create(model="gpt-4.1", input=text)
        return response.output_text
    except openai.RateLimitError as error:
        if error.code in BILLING_CODES:
            raise  # Retrying won't help: alert and tell the user
        return None  # Still throttled after retries: show "busy, try again"
    except openai.InternalServerError:
        return None

Annak tesztelése, hogy az alkalmazás kezeli-e az OpenAI sebességkorlátjait

Fejlesztés közben ritkán ütközik OpenAI-rátakorlátba. Ön az egyetlen felhasználó, és az üzenetei rövidek. Így a kérésszámkorlát kezelésének tesztelése dönti el, hogy a hibákat Ön találja-e meg a felhasználók előtt.

Approach Mit talál? Ami hiányzik
Várjon az éles üzemre Tényleges hibák Minden, amíg egy felhasználó rá nem kattint
Mockold az API-t a tesztjeidben, vagy írasd meg a mockot a kódolóügynökkel Hogy lefut-e az újrapróbálkozási ág Az OpenAI valódi hibatörzsei és kódjai, valamint az SDK újrapróbálkozási szabályzata. Az alkalmazásnak egy csak tesztelési kapcsolóra is szüksége van a mock eléréséhez.
Hívja meg a valódi API-t, amíg korlátozni nem kezdi a hívásokat Valós viselkedés Nem lehet igény szerint előidézni egy adott hibát, és minden kérés tokenekbe kerül
Az alkalmazás valós forgalmának elfogása és az OpenAI-hibák igény szerinti visszaadása Valós URL-címek, valódi SDK- és újrapróbálkozási irányelv, valamint az OpenAI saját hibaformátuma Az alkalmazásban semmi sem változik, így nem teszteli a kódot elkülönítve. Arra valók az egységtesztek.

Próbálja ki a saját alkalmazásában

Dev Proxy elfogja az alkalmazás kéréseit api.openai.com, és OpenAI-hibákat ad vissza, miközben az alkalmazás továbbra is meghívja a valódi URL-címeket. Az openai-throttling előbeállítás a kérések többségét meghiúsítja a TPM- és RPM-rate_limit_exceeded, credit_balance_exhausted, slow_down és 503server_is_overloaded hibák véletlenszerű kiválasztásával, az OpenAI saját formátumában. A 429 sebességkorlátozási válaszok egy Retry-After fejlécet is tartalmaznak, és ha az alkalmazás még mielőtt ez az idő letelne újrapróbálkozik, a Dev Proxy jelenti.

Töltse le az előbeállítást, és indítsa el vele a Dev Proxyt:

devproxy config get openai-throttling
devproxy --config-file "~dataFolder/configs/openai-throttling/.devproxy/devproxyrc.json"

Ezután futtassa az alkalmazást a szokásos módon, és figyelje meg, hogy mit csinál. A Dev Proxy telepítéséhez lásd: Dev Proxy beállítása.

Ha szeretné tesztelni, hogy az alkalmazás hogyan viselkedik, amikor percenként elfogy a tokenek száma, a kérések által használt prompt és befejezési tokenek alapján, tekintse meg a Nyelvi modell tokenkorlátainak tesztelése.

További lépések

Lásd még