Errores de "límite de tasa alcanzado" de OpenAI: qué significan y cómo controlarlos

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

  1. Compruebe error.code primero. Si es un código de facturación como credit_balance_exhausted, detenga el reintento e indique al usuario. El reintento de un error de facturación no restaurará el acceso.
  2. Sigue Retry-After cuando esté presente. Si falta, use retroceso exponencial con jitter y limite el número de reintentos.
  3. 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.
  4. 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.
  5. Vuelva más allá después de .503 Aumente el retraso entre reintentos y compruebe la página de estado de OpenAI.
  6. 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