Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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
- Először ellenőrizze
error.code. Ha olyan számlázási kódról van szó, mint példáulcredit_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. - 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. - Lassítson
slow_downutá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. - 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.
- Hátráljon tovább egy
503után. Növelje az újrapróbálkozások közötti késést, és ellenőrizze az OpenAI állapotoldalát. - 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.