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 espera y envía la solicitud de nuevo, normalmente se realiza correctamente. 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 parecen los errores de límite de velocidad 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 Retry-After |
429 |
rate_limit_exceeded, tokens por minuto (TPM) |
Tus solicitudes usaron demasiados tokens en un minuto. El mensaje muestra el límite, el número de tokens que usó y el número de solicitudes solicitadas. | 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 |
credit_balance_exhausted, errores de límite de gasto o 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 puede distinguirlos solo por estado. Lea error.code en el cuerpo de la respuesta.
Cómo gestionar los errores de límite de solicitudes de OpenAI
- Compruebe
error.codeprimero. Si es un código de facturación comocredit_balance_exhausted, detenga el reintento e indique al usuario. El reintento de un error de facturación no restaurará el acceso. - Sigue
Retry-Aftercuando esté presente. Si falta, use retroceso exponencial con jitter y limite el número de reintentos. - Ralentización después
slow_downde . 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 instrucciones y respuestas más cortas permiten que más solicitudes se ajusten a cada minuto.
- Vuelva más allá después de .
503Aumente el retraso entre reintentos y compruebe la página de estado de OpenAI. - Indique al usuario lo que está sucediendo. "Ocupado, reintentar en 5 segundos" supera a un girador que nunca termina.
OpenAI Python SDK reintenta los errores de conexión y 408las respuestas , 409, 429y 5xx 2 veces de forma predeterminada, con un retroceso exponencial corto. Puede cambiarlo con max_retries. Cuando se agoten los reintentos, el SDK genera RateLimitError para 429 y InternalServerError para , 503por lo que el código todavía 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 probar que la aplicación controla los límites de velocidad 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 de probar la gestión de la limitación de tasa decide si encuentras los errores antes de que los usuarios lo hagan.
| Approach | Lo que encuentras | Lo que te pierdes |
|---|---|---|
| Esperar a que se complete la producción | Fallos reales | Todo, hasta que un usuario haga clic en ello |
| Simula la API en tus pruebas o deja que el agente de codificación escriba el simulacro | Si la rama de reintento se ejecuta | Los códigos y respuestas 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. |
| Llame a la API real hasta que te aplique limitación de tasa. | Comportamiento real | No se puede desencadenar un error específico a petición y cada solicitud cuesta tokens |
| Intercepte el tráfico real de la aplicación y devuelva errores de OpenAI 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 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 429 respuestas de límite de velocidad incluyen un Retry-After encabezado y, si la aplicación vuelve a intentarlo antes de ese tiempo, Dev Proxy lo informa.
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