OpenAI insufficient_quota a credit_balance_exhausted: proč opakování nepomůže

Rozhraní OPENAI API vrátí 429 s typem chyby insufficient_quota, když vašemu účtu došel kredit nebo překročil limit útraty nebo využití. Je to stejný stavový kód jako limit požadavků, ale čekání na několik sekund ho neopraví. Přístup bude obnoven až poté, co někdo přidá kredity, zvýší limit nebo začne nové měsíční období. OpenAI říká, že opakování pokusů po chybách souvisejících s fakturací, limitem útraty nebo kvótou neobnoví přístup k rozhraní API a že byste měli zkontrolovat error.code a zjistit konkrétní příčinu. Další informace naleznete v tématu Kódy chyb.

Jak vypadají chybové hlášky o kvótě OpenAI

Každá z těchto chyb vrátí 429. error.type může být stále insufficient_quota, takže zkontrolujte error.code, který jste dostali.

error.code Co to znamená Jak znovu získat přístup
credit_balance_exhausted Vaší organizaci nezbývají žádné předplacené kredity. Přidejte kredity.
organization_spend_limit_exceeded Vaše organizace dosáhla svého měsíčního limitu útraty napříč všemi projekty. Zvyšte nebo zrušte limit nebo počkejte na měsíční resetování.
project_spend_limit_exceeded Projekt dosáhl svého měsíčního limitu útraty. Ostatní projekty nadále fungují. Zvyšte nebo zrušte limit projektu nebo počkejte na měsíční resetování.
organization_usage_limit_exceeded Vaše organizace dosáhla měsíčního limitu využití, který jí OpenAI přiřadila. Je oddělená od vámi nastavených limitů útraty. Požádejte o vyšší schválený limit nebo se obraťte na podporu OpenAI.

Porovnejte je s chybami „Byl dosažen limit požadavků“, například rate_limit_exceeded a slow_down. Tyto potíže jsou dočasné a opakování po krátké chvíli obvykle funguje. Další informace najdete v tématu Chyby OpenAI „Byl dosažen limit požadavků“.

Jak řešit chyby kvót OpenAI

  1. Přečtěte si error.code, nejen stav. Sám 429 vám neřekne, zda to zkusit znovu. Považujte 4 kódy v tabulce za „stop“ a kódy limitu rychlosti za „wait and retry“ (čekání a opakování).
  2. Přestaňte to zkoušet znovu. Neposílejte požadavek znovu a nenechte smyčku opakování volat rozhraní API. Dokud někdo problém s fakturací nevyřeší, všechny žádosti selžou stejným způsobem.
  3. Pozastavte volání, která by selhala. Jedna chyba kvóty znamená, že další požadavky ze stejné organizace nebo projektu také selžou. Přeskočte je místo toho, abyste je odesílali a čekali na chybu.
  4. Řekněte uživateli. Vysvětlete, že funkce AI je prozatím nedostupná, a zachovejte funkčnost zbytku aplikace.
  5. Nastavte si upozornění. Zaznamenejte kód s vysokou závažností nebo upozorněte toho, kdo má na starosti fakturaci. Oprava je mimo váš kód, takže o tom někdo musí vědět.

OpenAI Python SDK ve výchozím nastavení zopakuje pokus při odpovědích 429 2krát. Ať to zkouší opakovaně jakkoli, váš kód nakonec obdrží RateLimitError s fakturačním kódem a tam se zastavíte:

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

Příznak zůstane nastavený, dokud se aplikace nerestartuje. Pokud vaše aplikace běží dlouhou dobu, vymažte ji jiným způsobem, například pomocí akce správce poté, co někdo opraví fakturaci.

Jak otestovat, že aplikace zpracovává chyby kvóty OpenAI

Při vývoji se zřídka zobrazuje chyba limitu. Testovací účet má kredity a vaše využití je nízké. Způsob, jakým testujete zpracování kvót, tedy rozhoduje o tom, zda zjistíte chyby dříve, než je najdou vaši uživatelé.

Approach Co najdete Co vám chybí
Čekání na produkční prostředí Skutečná selhání Všechno, dokud na něj uživatel nenarazí, a funkce AI zůstane mimo provoz, dokud si toho někdo nevšimne
Namockujte API ve svých testech nebo nechte svého programovacího agenta napsat mock Zda vaše větev Stop běží Skutečné tělo chybové odpovědi a kódy OpenAI a zásady opakování vaší sady SDK. Vaše aplikace také potřebuje testovací přepínač pro přístup k mocku.
Použijte své skutečné kredity nebo nastavte nízký limit útraty Skutečné chování Stojí peníze a blokuje každou jinou aplikaci, která používá stejnou organizaci nebo projekt.
Zachyťte skutečný provoz vaší aplikace a vracejte chyby kvót na vyžádání Skutečné adresy URL, vaše skutečné SDK a politika opakovaných pokusů a vlastní formát chyb OpenAI Ve vaší aplikaci se nic nemění, takže netestuje váš kód izolovaně. To si nechte na jednotkové testy.

Vyzkoušejte si ji v aplikaci

Dev Proxy zachycuje požadavky vaší aplikace na api.openai.com a vrací chybové odpovědi OpenAI, zatímco vaše aplikace nadále volá skutečné adresy URL. Předvolba openai-throttling zahrnuje credit_balance_exhausted chybu mezi chyby omezení rychlosti. Vrátí 429 s typem insufficient_quota a bez záhlaví Retry-After, takže můžete zkontrolovat, že se vaše aplikace místo opakování pokusu zastaví.

Stáhněte si přednastavenou konfiguraci a spusťte s ní Dev Proxy:

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

Chcete-li otestovat pouze chyby související s kvótou, upravte soubor předvolby openai-errors.json a ponechte pouze odpověď credit_balance_exhausted. Chcete-li otestovat kódy limitů pro útratu a využití, přidejte odpovědi se stejnou strukturou a jiným code.

Pak aplikaci spusťte obvyklým způsobem a sledujte, co to dělá. Chcete-li nainstalovat Dev Proxy, viz Nastavení Dev Proxy.

Další kroky

Viz také