Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
La API de OpenAI devuelve 429 con el tipo insufficient_quota de error cuando tu cuenta se quedó sin créditos o superó un límite de gasto o uso. Es el mismo código de estado que un límite de solicitudes, pero esperar unos segundos no lo corregirá. El acceso vuelve solo después de que alguien agregue créditos, aumente un límite o se restablezca el período mensual. OpenAI dice que volver a intentarlo tras errores de facturación, gasto o cuota no restaurará el acceso a la API y que debe inspeccionar error.code para encontrar la causa específica. Para obtener más información, vea Códigos de error.
¿Qué aspecto tienen los errores de cuota de OpenAI?
Cada uno de estos errores devuelve 429.
error.type Todavía puede ser insufficient_quota, así que compruebe error.code para saber cuál le ha tocado.
error.code |
Qué significa | Cómo recuperar el acceso |
|---|---|---|
credit_balance_exhausted |
Su organización no tiene créditos de prepago restantes. | Agregar créditos. |
organization_spend_limit_exceeded |
Su organización alcanzó su límite de gasto mensual en todos los proyectos. | Aumente o quite el límite o espere al restablecimiento mensual. |
project_spend_limit_exceeded |
El proyecto alcanzó su límite de gasto mensual. Otros proyectos siguen funcionando. | Aumentar o quitar el límite del proyecto o esperar el restablecimiento mensual. |
organization_usage_limit_exceeded |
Su organización alcanzó el límite de uso mensual que OpenAI le asignó. Es independiente de los límites de gasto establecidos. | Solicite un límite aprobado superior o póngase en contacto con el soporte técnico de OpenAI. |
Compárelos con errores de "Se alcanzó el límite de frecuencia", como rate_limit_exceeded y slow_down. Son temporales, y volver a intentarlo tras una breve espera suele funcionar. Para obtener más información, consulte Errores de "límite de tasa alcanzado" de OpenAI.
Cómo gestionar los errores de cuota de OpenAI
- Lee
error.code, no solo el estado. Un429solo no le indica si debe reintentarlo o no. Considere los 4 códigos de la tabla como "detener" y los códigos de limitación de velocidad como "espere y vuelva a intentarlo". - Detenga el reintento. No envíe la solicitud de nuevo y no deje que un bucle de reintento siga llamando a la API. Hasta que alguien corrija el problema de facturación, todas las solicitudes fallan de la misma forma.
- Pausa las llamadas que generarían errores. Un error de cuota significa que las siguientes solicitudes de la misma organización o proyecto también fallan. Sáltalos en lugar de enviar cada uno y esperar a que se produzca el error.
- Informe al usuario. Explique que la característica de inteligencia artificial no está disponible por ahora y mantenga el resto de la aplicación en funcionamiento.
- Póngase en alerta. Registre el código con una gravedad alta o avise a quien sea responsable de facturación. La corrección está fuera de tu código, por lo que alguien tiene que saberlo.
El SDK de Python de OpenAI reintenta las respuestas 429 2 veces de forma predeterminada. Por muchos reintentos que haga, tu código acaba RateLimitError con el código de facturación, y ahí es donde te detienes:
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
La marca permanece establecida hasta que se reinicie la aplicación. Bórralo de otra manera si la aplicación se ejecuta durante mucho tiempo, por ejemplo con una acción de administrador después de que alguien corrija la facturación.
Cómo probar que la aplicación controla los errores de cuota de OpenAI
Rara vez se produce un error de cuota durante el desarrollo. La cuenta de prueba tiene créditos y su uso es bajo. Por lo tanto, la forma de probar el control de cuotas decide si encuentras los errores antes de que los usuarios lo hagan.
| Approach | Lo que encuentras | Lo que te pierdes |
|---|---|---|
| Esperar a que esté en producción | Fallos reales | Todo, hasta que un usuario lo pulsa, y la característica de inteligencia artificial permanece inactiva hasta que alguien se dé cuenta |
| Simula la API en tus pruebas o deja que el agente de codificación escriba el simulacro | Si se ejecuta la rama de detención | El cuerpo y los códigos de error reales de OpenAI y la directiva de reintento del SDK. La aplicación también necesita una opción solo para pruebas para llegar al mock. |
| Usa tus créditos reales o establece un límite de gasto diminuto | Comportamiento real | Cuesta dinero y bloquea todas las demás aplicaciones que comparten la organización o el proyecto. |
| Interceptar el tráfico real de la aplicación y devolver errores de cuota a petición | Direcciones URL reales, el SDK real y la directiva de reintento, y el propio formato de error de OpenAI | Nada en la aplicación cambia, por lo que no prueba el código de forma aislada. Mantenga las pruebas unitarias para eso. |
Pruébalo en tu app
Dev Proxy intercepta las solicitudes de la aplicación a api.openai.com y devuelve errores de OpenAI, mientras que la aplicación sigue llamando a las direcciones URL reales. El openai-throttling valor preestablecido mezcla un credit_balance_exhausted error con los errores de límite de tasa. Devuelve 429 con tipo insufficient_quota y sin encabezado Retry-After, por lo que puedes comprobar que la aplicación se detiene en lugar de volver a intentarlo.
Descargue el preajuste e inicie Dev Proxy con él:
devproxy config get openai-throttling
devproxy --config-file "~dataFolder/configs/openai-throttling/.devproxy/devproxyrc.json"
Para probar solo los errores de cuota, edite el archivo openai-errors.json del valor preestablecido y mantenga solo la respuesta credit_balance_exhausted. Para probar los códigos de límite de gasto y uso, agregue respuestas con la misma estructura y otro code.
A continuación, ejecute la aplicación como de costumbre y observe lo que hace. Para instalar Dev Proxy, consulte Configurar Dev Proxy.