Prueba cómo gestiona la aplicación los límites de tasa de OpenAI

De un vistazo
Objetivo: Prueba cómo la aplicación controla el límite de solicitudes de OpenAI y los errores de sobrecarga
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 su organización, de su modelo y de todos los demás usuarios que usen la misma organización, por lo que no puede alcanzarlos de forma confiable a propósito. 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". La aplicación debe distinguirlas.

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). Espere hasta la hora indicada en el encabezado Retry-After, y vuelva a intentarlo.
429 slow_down La tasa de tus solicitudes aumentó demasiado rápidamente, incluso si está dentro de sus límites. Espere hasta Retry-After, reduzca la tasa de solicitudes y aumente gradualmente.
429 credit_balance_exhausted Su organización no tiene créditos de prepago restantes. No vuelva a intentarlo. Reintentar no restaurará el acceso. Informe al usuario o avise a un administrador.
503 server_is_overloaded El modelo no tiene suficiente capacidad en este momento. Espere a Retry-After si está presente y vuelva a intentarlo con retrasos crecientes.

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 la aplicación reintenta tras cada error 429, sigue reintentando las solicitudes con errores de facturación que nunca se recuperan. 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, y errores de conexión, 2 veces de forma predeterminada 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. La aplicación sigue teniendo que decidir qué ocurre cuando se agotan los reintentos y cómo controlar los errores que los reintentos no corrigen. 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 límites de tasa de OpenAI

El proxy de desarrollo tiene un valor preestablecido con los errores de OpenAI 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"

El valor preestablecido falla en el 90% de las solicitudes a https://api.openai.com/* con un error aleatorio de la tabla. Para las respuestas por limitación, establece el encabezado Retry-After y usa RetryAfterPlugin para comprobar que la aplicación espera ese tiempo antes de llamar a la API de nuevo.

Asegúrese de que la aplicación envía sus solicitudes a través de Dev Proxy y confía 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:

  • Después de un error rate_limit_exceeded o slow_down, la aplicación espera el tiempo Retry-After. Si llama a la API demasiado pronto, Dev Proxy lo notifica y limita la solicitud.
  • Después de un credit_balance_exhausted error, la aplicación deja de llamar a la API y muestra un mensaje claro.
  • Después de un server_is_overloaded error, la aplicación vuelve a intentarlo con un retraso y, cuando los reintentos se ejecutan, retroceden o muestran un mensaje claro en lugar de un seguimiento de la pila.
  • La aplicación no pierde tu trabajo. 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, use 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