Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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
- Lees
error.code, niet alleen de status. Op basis van alleen429weet 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'. - 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.
- 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.
- Vertel de gebruiker. Leg uit dat de AI-functie voorlopig niet beschikbaar is en dat de rest van uw app blijft werken.
- 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.