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 "Rate limit reached" cuando tu organización ha enviado más solicitudes o más tokens por minuto de lo que permiten sus límites. Los límites se aplican a su organización, no a cada usuario. Estos errores son temporales. Si esperas y vuelves a enviar la solicitud, normalmente se procesa con éxito. Algunos otros 429 errores de OpenAI se refieren a la facturación y no se eliminan cuando se espera. Para obtener más información, vea Códigos de error.
Cómo se presentan los errores de límite de rate de OpenAI
| Status | Error | Qué significa | ¿Reintentar? |
|---|---|---|---|
429 |
rate_limit_exceeded, solicitudes por minuto (RPM) |
Has enviado demasiadas solicitudes en un minuto. | Sí, después de Retry-After |
429 |
rate_limit_exceeded, tokens por minuto (TPM) |
Tus solicitudes usaron demasiados tokens en un minuto. El mensaje muestra tu límite, cuántos tokens has utilizado y cuántos se solicitaron en la petición. | Sí, después de Retry-After. Las solicitudes más pequeñas ayudan. |
429 |
slow_down (tipo rate_limit_error) |
Tu tráfico creció demasiado rápido, aunque estés dentro de los límites de RPM y TPM. | Sí, a una tasa más baja |
503 |
server_is_overloaded (tipo service_unavailable_error) |
Los servidores de OpenAI están ocupados. | Sí, con retrasos más largos cada vez |
429 |
Errores de credit_balance_exhausted, límite de gasto o límite de uso (tipo insufficient_quota) |
No te quedan créditos o superas un límite. | N. º Consulte OpenAI insufficient_quota y credit_balance_exhausted. |
La mayoría de estos errores comparten el estado 429, por lo que no se pueden distinguir solo por el estado. Lea error.code en el cuerpo de la respuesta.
Cómo administrar los errores de límite de tasa de OpenAI
- Compruebe
error.codeprimero. Si es un código de facturación comocredit_balance_exhausted, detenga el reintento e indique al usuario. Reintentar un error de facturación no restablecerá el acceso. - Sigue
Retry-Aftercuando esté presente. Si falta, utiliza un retroceso exponencial con fluctuación y limita el número de reintentos. - Reduce la velocidad tras un
slow_down. Reduzca la tasa de solicitudes y, a continuación, aumente gradualmente. La regla general de OpenAI por encima del TPM de entrada 1M es aumentar el tráfico en un máximo de 50% cada 15 minutos. - Envíe menos tokens después de un error de TPM. Las peticiones y respuestas más breves permiten que quepan más solicitudes por minuto.
- Aumenta aún más el retroceso tras un
503. Aumente el retraso entre reintentos y compruebe la página de estado de OpenAI. - Indique al usuario lo que está sucediendo. "Ocupado, se volverá a intentar en 5 segundos" es mejor que un indicador de carga que nunca termina.
El SDK de Python de OpenAI reintenta los errores de conexión y las respuestas 408, 409, 429 y 5xx dos veces por defecto, con un retroceso exponencial corto. Puede cambiarlo con max_retries. Cuando se agotan los reintentos, el SDK genera un RateLimitError para un 429 y un InternalServerError para un 503, por lo que tu código aún necesita un plan:
import openai
from openai import OpenAI
client = OpenAI(max_retries=3)
BILLING_CODES = {
"credit_balance_exhausted",
"organization_spend_limit_exceeded",
"project_spend_limit_exceeded",
"organization_usage_limit_exceeded",
}
def summarize(text: str) -> str | None:
try:
response = client.responses.create(model="gpt-4.1", input=text)
return response.output_text
except openai.RateLimitError as error:
if error.code in BILLING_CODES:
raise # Retrying won't help: alert and tell the user
return None # Still throttled after retries: show "busy, try again"
except openai.InternalServerError:
return None
Cómo comprobar que tu aplicación administra los límites de tasa de OpenAI
Rara vez alcanzas un límite de tasa de OpenAI mientras desarrollas. Eres el único usuario y tus mensajes son cortos. Por lo tanto, la forma en que compruebes la administración de los límites de tasa determina si detectas los errores antes que tus usuarios.
| Approach | Lo que encuentras | Lo que te pierdes |
|---|---|---|
| A la espera de la producción | Fallos reales | Todo ello, hasta que un usuario lo alcance. |
| Simula la API en tus pruebas o deja que tu agente de programación escriba la simulación | Si se ejecuta tu rama de reintentos. | Los cuerpos y códigos de error reales de OpenAI, y la directiva de reintentos de tu SDK. La aplicación también necesita una opción solo para pruebas para llegar al mock. |
| Llama a la API real hasta que te limite el tráfico | Comportamiento real | No se puede desencadenar un error específico a petición y cada solicitud cuesta tokens |
| Intercepta el tráfico real de tu aplicación y devuelve errores de OpenAI bajo demanda | 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 ajuste preestablecido hace que fallen la mayoría de las solicitudes con un error elegido aleatoriamente entre los errores de TPM y RPM rate_limit_exceeded, slow_down, credit_balance_exhausted y 503server_is_overloaded, en el propio formato de OpenAI. Las respuestas de límite de tasa 429 incluyen un encabezado Retry-After, y si tu aplicación vuelve a intentarlo antes de que se agote ese tiempo, Dev Proxy lo notifica.
Descargue el preajuste e inicie Dev Proxy con él:
devproxy config get openai-throttling
devproxy --config-file "~dataFolder/configs/openai-throttling/.devproxy/devproxyrc.json"
A continuación, ejecute la aplicación como de costumbre y observe lo que hace. Para instalar Dev Proxy, consulte Configurar Dev Proxy.
Para probar cómo se comporta la aplicación cuando se queda sin tokens por minuto, en función de los tokens del prompt y de finalización que usan las solicitudes, consulte Probar los límites de tokens del modelo de lenguaje.
Pasos siguientes
Consulte también
- Errores insufficient_quota y credit_balance_exhausted de OpenAI: por qué reintentar no ayudará
- 429 Demasiadas solicitudes: lo que significa y cómo controlarlo
- Encabezado Retry-After: cuánto tiempo debe esperar antes de volver a intentarlo
- Simular errores de las API de OpenAI
- LanguageModelRateLimitingPlugin