OpenAI insufficient_quota és credit_balance_exhausted: miért nem segít az újrapróbálkozás

Az OpenAI API akkor adja vissza a 429 hibatípust insufficient_quota hibával, ha a fiókjához tartozó kreditek elfogytak, vagy túllépte a kiadási vagy használati korlátot. Ez ugyanaz az állapotkód, mint a sebességkorlátozásé, de néhány másodperc várakozás nem fogja kijavítani. A hozzáférés csak akkor tér vissza, ha valaki krediteket ad hozzá, korlátot emel, vagy a havi időszak alaphelyzetbe áll. Az OpenAI azt mondja, hogy a számlázási, költési vagy kvótahibák utáni újrapróbálkozás nem állítja vissza az API-hozzáférést, és meg kell vizsgálnia a(z) error.code elemet, hogy megtalálja a konkrét okot. További információ: Hibakódok.

Milyenek az OpenAI kvótahibái?

E hibák mindegyike a(z) 429 értéket adja vissza. A error.type még mindig lehet insufficient_quota, ezért ellenőrizze a(z) error.code elemet, hogy megtudja, melyiket kapta.

error.code Mit jelent ez? A hozzáférés visszaállítása
credit_balance_exhausted A szervezet nem rendelkezik előre kifizetett jóváírásokkal. Jóváírások hozzáadása.
organization_spend_limit_exceeded A szervezet elérte a havi költségkeretet az összes projektben összesítve. Növelje vagy távolítsa el a korlátot, vagy várja meg a havi visszaállítást.
project_spend_limit_exceeded A projekt elérte a havi költségkeretét. A többi projekt továbbra is működik. Emelje vagy szüntesse meg a projekt korlátját, vagy várja meg a havi alaphelyzetbe állítást.
organization_usage_limit_exceeded A szervezet elérte az OpenAI által hozzárendelt havi használati korlátot. Ez elkülönül a beállított költségkeretektől. Kérjen magasabb jóváhagyott korlátot, vagy forduljon az OpenAI ügyfélszolgálatához.

Hasonlítsa össze ezeket az „Elérte a sebességkorlátot” hibával, például rate_limit_exceeded és slow_down. Ezek ideiglenesek, és a rövid várakozás után végzett újrapróbálkozás általában működik. További információkért lásd: OpenAI „Rate limit reached” hibák.

OpenAI-kvótahibák kezelése

  1. Olvassa el a error.code elemet, ne csak az állapotot. Egymaga 429 nem mondja meg, hogy kell-e újrapróbálni. A tábla 4 kódját "stop" értékként, a lekérdezési korlát kódokat pedig "várakozás és újrapróbálkozás" értékként kezelje.
  2. Ne próbálkozzon újra. Ne küldje el újra a kérést, és ne hagyja, hogy egy újrapróbálkozásos ciklus folyamatosan meghívja az API-t. Amíg valaki nem oldja meg a számlázási problémát, minden kérés ugyanúgy meghiúsul.
  3. Szüneteltesse a meghiúsuló hívásokat. Az egyik kvótahiba azt jelenti, hogy azonos szervezethez vagy projekthez tartozó következő kérések is meghiúsulnak. Kihagyhatja őket ahelyett, hogy egyenként elküldené őket, és megvárná a hibaüzenetet.
  4. Mondja meg a felhasználónak. Magyarázza el, hogy az AI-funkció egyelőre nem érhető el, és az alkalmazás többi része továbbra is működőképes marad.
  5. Riaszd magad. Naplózza a kódot magas súlyossági szinten, vagy értesítse a számlázásért felelős személyt. A javítás a kódon kívül esik, ezért valakinek tudnia kell róla.

Az OpenAI Python SDK alapértelmezés szerint 429 válaszok esetén kétszer próbálkozik újra. Bárhányszor is próbálkozik újra, a kód végül megkapja a RateLimitError számlázási kódot, és itt kell megállnia:

import logging

import openai
from openai import OpenAI

client = OpenAI()
logger = logging.getLogger(__name__)

BILLING_CODES = {
    "credit_balance_exhausted",
    "organization_spend_limit_exceeded",
    "project_spend_limit_exceeded",
    "organization_usage_limit_exceeded",
}
billing_error: str | None = None


def ask(prompt: str) -> str:
    global billing_error
    if billing_error:
        raise RuntimeError("AI features are paused until billing is fixed.")
    try:
        response = client.responses.create(model="gpt-4.1", input=prompt)
        return response.output_text
    except openai.RateLimitError as error:
        if error.code in BILLING_CODES:
            billing_error = error.code
            logger.critical("OpenAI billing error: %s", error.code)
        raise

A jelölő mindaddig be van állítva, amíg az alkalmazás újra nem indul. Szüntesse meg azt egy másik módon, ha az alkalmazás hosszú ideig fut, például rendszergazdai művelettel, miután valaki kijavította a számlázást.

Annak tesztelése, hogy az alkalmazás kezeli-e az OpenAI-kvóta hibáit

A fejlesztés során ritkán jelenik meg kvótahiba. A tesztfiók kreditekkel rendelkezik, és Ön keveset használja. Így a kvótakezelés tesztelésének módja dönti el, hogy te találod-e meg a hibákat a felhasználóid előtt.

Approach Mit talál? Ami hiányzik Önnek
Várjon az éles környezetre Valódi meghibásodások Minden, amíg egy felhasználó bele nem fut, és az AI-funkció pedig nem érhető el, amíg valaki észre nem veszi
Mockold az API-t a tesztjeidben, vagy hagyd, hogy a kódolási ügynök megírja a mockot Hogy a leállítási ág fut-e Az OpenAI valódi hibatörzse és kódjai, valamint az SDK újrapróbálkozási szabályzata. Az alkalmazásnak egy csak tesztelésre szolgáló kapcsolóra is szüksége van a mock eléréséhez.
Használja fel a valódi krediteket, vagy állítson be egy kis költségkeretet Valós viselkedés Pénzbe kerül, és letilt minden más alkalmazást, amely ugyanazt a szervezetet vagy projektet használja
Az alkalmazás valós forgalmának elfogása és kvótahibák visszaadása igény szerint Valós URL-címek, valódi SDK- és újrapróbálkozási szabályzat, valamint az OpenAI saját hibaformátuma Az alkalmazásban semmi sem változik, ezért nem teszteli a kódodat külön-külön. Arra valók az egységtesztek.

Próbálja ki az alkalmazásán

A Dev Proxy elfogja az alkalmazás api.openai.com felé irányuló kéréseit, és OpenAI-hibákat ad vissza, miközben az alkalmazás továbbra is meghívja a valódi URL-címeket. A openai-throttling beállításkészlet összekeveri a credit_balance_exhausted hibát a sebességkorlátozási hibákkal. insufficient_quota típussal Retry-After tér vissza, 429 fejléc nélkül, így ellenőrizheti, hogy az alkalmazás leáll-e újrapróbálkozás helyett.

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

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

Ha csak kvótahibákat szeretne tesztelni, szerkessze az előbeállítás openai-errors.json fájlját, és csak a credit_balance_exhausted választ tartsa meg. A költség- és használati korlátkódok teszteléséhez adjon hozzá ugyanolyan szerkezettel és egy másik code-val rendelkező válaszokat.

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.

További lépések

Lásd még