Comprueba cómo administra tu aplicación los límites de tasa de OpenAI

De un vistazo
Objetivo: Comprobar cómo administra tu aplicación los límites de tasa y los errores de sobrecarga de OpenAI
Hora: 10 minutos
Plugins:GenericRandomErrorPlugin, RetryAfterPlugin
Requisitos previos:Configuración del proxy de desarrollo

La aplicación funciona en desarrollo y, a continuación, produce un error en producción con 429 Too Many Requests. Los límites de tasa de OpenAI dependen del nivel de uso de tu organización, de tu modelo y del resto de usuarios de la misma organización, por lo que no es posible alcanzarlos de forma deliberada con fiabilidad. El proxy de desarrollo devuelve los mismos errores que devuelve la API de OpenAI, por lo que puede ver lo que hace la aplicación antes de que hagan los usuarios.

Saber qué devuelve OpenAI

No todo error de OpenAI significa "inténtelo de nuevo". Tu aplicación debe distinguirlos.

Status error.code Qué significa Qué debe hacer la aplicación
429 rate_limit_exceeded Se alcanza el límite de solicitudes por minuto (RPM) o tokens por minuto (TPM). Espera el tiempo indicado en el encabezado Retry-After y, a continuación, vuelve a intentarlo.
429 slow_down Tu tasa de solicitudes ha aumentado demasiado rápido, aunque estés dentro de tus límites. Espera Retry-After, reduce tu tasa de solicitudes y auméntala gradualmente.
429 credit_balance_exhausted Su organización no tiene créditos de prepago restantes. No vuelva a intentarlo. Volver a intentarlo no restablecerá el acceso. Informe al usuario o avise a un administrador.
503 server_is_overloaded El modelo no tiene suficiente capacidad en este momento. Espera a que pase Retry-After, si aparece, y vuelve a intentarlo aumentando los intervalos de espera.

Para obtener la lista completa, consulte Códigos de error en la documentación de OpenAI.

Important

Los 3 errores de las 429 filas usan el mismo código de estado. Si tu aplicación vuelve a intentarlo cada vez que se produce un error 429, seguirá reintentando errores de facturación que nunca se resuelven. Compruebe error.code para decidir qué hacer.

Saber qué hace el SDK de OpenAI para usted

Los SDK oficiales de OpenAI para Python y JavaScript reintentan las respuestas 408, 409, 429 y 5xx, así como los errores de conexión, dos veces por defecto con retroceso exponencial. Puede cambiarlo con la max_retries opción en Python y maxRetries en JavaScript.

Los reintentos del SDK cubren ráfagas cortas. Tu aplicación aún debe decidir qué ocurre cuando se agotan los reintentos y cómo administrar los errores que no se resuelven con los reintentos. En Python, un 429 genera RateLimitError y un 503 genera InternalServerError, por lo que controla ambos.

Tip

Para ver exactamente qué recibe el código de control de errores, establezca max_retries=0 (Python) o maxRetries: 0 (JavaScript) durante la prueba. Vuelva a activar los reintentos del SDK después.

Simular los límites de tasa de OpenAI

Dev Proxy dispone de un ajuste preestablecido con los errores de OpenAI que figuran en la tabla. Descárguelo:

devproxy config get openai-throttling

Inicie el proxy de desarrollo con el valor preestablecido:

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

Este ajuste preestablecido hace que el 90 % de las solicitudes a https://api.openai.com/* fallen con un error aleatorio de la tabla. Para las respuestas de limitación de tasa, establece el encabezado Retry-After y utiliza el RetryAfterPlugin para comprobar que tu aplicación espera ese tiempo antes de volver a llamar a la API.

Asegúrate de que tu aplicación envíe sus solicitudes a través de Dev Proxy y confíe en el certificado de Dev Proxy. Para Node.js, consulte Usar Dev Proxy con aplicaciones de Node.js. Para otros entornos de ejecución, consulte Solución de problemas del proxy de desarrollo.

Ejecute la aplicación y compruebe lo siguiente:

  • Tras un error rate_limit_exceeded o slow_down, tu aplicación espera el tiempo Retry-After. Si vuelve a llamar a la API demasiado pronto, Dev Proxy lo notifica y limita la solicitud.
  • Tras un error credit_balance_exhausted, tu aplicación deja de llamar a la API y muestra un mensaje claro.
  • Tras un error server_is_overloaded, tu aplicación vuelve a intentarlo tras un tiempo de espera y, cuando se agotan los intentos, recurre a una solución alternativa o muestra un mensaje claro en lugar de un seguimiento de la pila.
  • Tu aplicación no pierde el trabajo realizado. Por ejemplo, una conversación de chat larga o un trabajo por lotes continúa después del error.

Para cambiar la frecuencia con la que fallan las solicitudes, utiliza la opción --failure-rate. Por ejemplo, para producir un error en cada solicitud:

devproxy --config-file "~dataFolder/configs/openai-throttling/.devproxy/devproxyrc.json" --failure-rate 100

Simular límites de token para Azure OpenAI y otros proveedores

El preajuste devuelve errores de forma aleatoria, independientemente del número de tokens que usa la aplicación. Para limitar las solicitudes en función del uso real del token, por ejemplo, para ver lo que sucede cuando una conversación larga supera el límite de TPM, use LanguageModelRateLimitingPlugin. Funciona con cualquier API compatible con OpenAI, incluidos Azure OpenAI y los modelos locales. Para obtener más información, consulte Probar límites de token del modelo de lenguaje.

Paso siguiente

Aprenda a simular límites basados en tokens.

Consulte también