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.
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_exceededoslow_down, la aplicación espera el tiempoRetry-After. Si llama a la API demasiado pronto, Dev Proxy lo notifica y limita la solicitud. - Después de un
credit_balance_exhaustederror, la aplicación deja de llamar a la API y muestra un mensaje claro. - Después de un
server_is_overloadederror, 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
- Probar mi aplicación con errores de modelo de lenguaje : simulación de respuestas inesperadas del modelo de lenguaje
- Simula errores de las API de OpenAI - compilación de su propio archivo de errores de OpenAI
- Pruebe que mi aplicación gestiona correctamente la limitación de velocidad - Limitación de velocidad en cualquier API
- Usar configuraciones preestablecidas - Trabajar con ajustes preestablecidos
- < c0>RetryAfterPlugin - Verificar el comportamiento del reintento