OpenAI insufficient_quota en credit_balance_exhausted: waarom het opnieuw proberen niet helpt

De OpenAI-API retourneert 429 met het fouttype insufficient_quota wanneer uw account onvoldoende tegoed heeft of een bestedings- of gebruikslimiet heeft overschreden. Het is dezelfde statuscode als een ratelimiet, maar een paar seconden wachten helpt niet. Toegang wordt pas teruggezet nadat iemand tegoeden heeft toegevoegd, een limiet verhoogt of de maandelijkse periode opnieuw is ingesteld. OpenAI zegt dat opnieuw proberen na facturerings-, uitgaven- of quotumfouten de API-toegang niet herstelt en dat u error.code moet inspecteren om de specifieke oorzaak te vinden. Zie Foutcodes voor meer informatie.

Hoe de quotumfouten van OpenAI eruitzien

Elk van deze fouten retourneert 429. Het error.type kan nog steeds insufficient_quota zijn, dus controleer error.code om te weten welke je hebt gekregen.

error.code Wat betekent het? Hoe toegang terugkomt
credit_balance_exhausted Uw organisatie heeft geen vooruitbetaald tegoed meer. Tegoed toevoegen.
organization_spend_limit_exceeded Uw organisatie heeft de maandelijkse uitgavenlimiet bereikt over alle projecten heen. Verhoog of verwijder de limiet of wacht tot de maandelijkse reset is ingesteld.
project_spend_limit_exceeded Het project heeft de maandelijkse uitgavenlimiet bereikt. Andere projecten blijven actief. Verhoog of verwijder de limiet van het project of wacht op de maandelijkse reset.
organization_usage_limit_exceeded Uw organisatie heeft de maandelijkse gebruikslimiet bereikt waaraan OpenAI is toegewezen. Het staat los van de bestedingslimieten die u hebt ingesteld. Vraag een hogere goedgekeurde limiet aan of neem contact op met openAI-ondersteuning.

Vergelijk deze met fouten 'limiet voor aanvragen bereikt', zoals rate_limit_exceeded en slow_down. Die zijn tijdelijk en een nieuwe poging na een korte wachttijd werkt meestal. Zie OpenAI 'limiet voor aanvragen bereikt'-fouten voor meer informatie.

OpenAI-quotumfouten afhandelen

  1. Lees error.code, niet alleen de status. Op basis van alleen 429 weet u niet of u het opnieuw moet proberen. Behandel de 4 codes in de tabel als 'stop', en de frequentielimietcodes als 'wachten en opnieuw proberen'.
  2. Stoppen met opnieuw proberen. Verzend de aanvraag niet opnieuw en laat een retrylus de API niet blijven aanroepen. Totdat iemand het factureringsprobleem oplost, mislukt elke aanvraag op dezelfde manier.
  3. Pauzeer de oproepen die zouden mislukken. Eén quotumfout betekent dat de volgende aanvragen van dezelfde organisatie of hetzelfde project ook mislukken. Sla ze in plaats daarvan over, in plaats van ze elk afzonderlijk te verzenden en te wachten tot de fout optreedt.
  4. Vertel de gebruiker. Leg uit dat de AI-functie voorlopig niet beschikbaar is en dat de rest van uw app blijft werken.
  5. Stel een melding in. Registreer de code met hoge prioriteit of waarschuw degene die verantwoordelijk is voor de facturering. De oplossing bevindt zich buiten uw code, dus iemand moet dit weten.

De OpenAI Python SDK probeert 429 standaard 2 keer opnieuw. Wat er ook opnieuw wordt geprobeerd, uw code krijgt uiteindelijk RateLimitError met de factureringscode, en dat is waar u stopt:

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

De vlag blijft ingesteld totdat uw app opnieuw start. Wis het op een andere manier als uw app lang actief is, bijvoorbeeld met een beheeractie nadat iemand de facturering heeft opgelost.

Testen of uw app openAI-quotumfouten verwerkt

Je ziet zelden een quotafout terwijl je ontwikkelt. Uw testaccount heeft tegoed en uw gebruik is laag. Dus de manier waarop je quota-afhandeling test, bepaalt of je de bugs vindt voordat je gebruikers dat doen.

Approach Wat u vindt Wat u mist
Wachten op productie Echte storingen Alles, totdat een gebruiker erop stuit en de AI-functie uitgevallen blijft totdat iemand het opmerkt
Mock de API in je tests, of laat je codeeragent de mock schrijven Of uw stop branch wordt uitgevoerd OpenAI's echte fouttekst en -codes, en het beleid voor opnieuw proberen van uw SDK. Uw app heeft ook een schakelaar alleen voor testdoeleinden nodig om de mock te bereiken.
Uw echte tegoeden gebruiken of een kleine bestedingslimiet instellen Werkelijk gedrag Het kost geld en blokkeert elke andere app die dezelfde organisatie of hetzelfde project gebruikt
Het werkelijke verkeer van uw app onderscheppen en quotumfouten retourneren op aanvraag Echte URL's, uw echte SDK en beleid voor opnieuw proberen, en de eigen foutindeling van OpenAI Er verandert niets in uw app, dus uw code wordt niet geïsoleerd getest. Gebruik daar unittests voor.

Probeer het uit in je app

Dev Proxy onderschept de aanvragen van uw app naar api.openai.com en retourneert OpenAI-fouten, terwijl uw app de echte URL's blijft aanroepen. De openai-throttling preset vermengt een credit_balance_exhausted fout met de frequentielimietfouten. Het retourneert 429 met type insufficient_quota en geen Retry-After header, zodat u kunt controleren of uw app stopt in plaats van opnieuw te proberen.

Download de voorinstelling en start de Dev Proxy ermee:

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

Als u alleen quotumfouten wilt testen, bewerkt u het openai-errors.json-bestand van de voorinstelling en behoudt u alleen het credit_balance_exhausted-antwoord. Als u de codes voor uitgaven- en gebruikslimieten wilt testen, voegt u antwoorden toe met dezelfde vorm en een andere code.

Voer vervolgens uw app zoals gebruikelijk uit en bekijk wat deze doet. Zie Dev Proxy instellen om Dev Proxy te installeren.

Volgende stappen 

Zie ook