Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
De relance
Objetivo: Teste como a sua aplicação lida com erros de limite de pedidos e de sobrecarga da OpenAI
Tempo: 10 minutos
Plugins:GenericRandomErrorPlugin, RetryAfterPlugin
Pré-requisitos:Configurar o Proxy de Desenvolvimento
A aplicação funciona em desenvolvimento, mas falha em produção com 429 Too Many Requests. Os limites de taxa de pedidos da OpenAI dependem do nível de utilização da sua organização, do seu modelo e de todos os outros que usam a mesma organização, por isso não pode atingi-los intencionalmente de forma fiável. O Dev Proxy devolve os mesmos erros que a API OpenAI devolve, para que possa ver o que a sua aplicação faz antes de os seus utilizadores o verem.
Saiba o que a OpenAI devolve
Nem todos os erros da OpenAI significam "volte a tentar". A tua aplicação precisa de distingui-los.
| Status | error.code |
O que significa | O que a sua aplicação deve fazer |
|---|---|---|---|
| 429 | rate_limit_exceeded |
Atinges o limite de pedidos por minuto (RPM) ou tokens por minuto (TPM). | Aguarde até à hora indicada no cabeçalho Retry-After e depois tente novamente. |
| 429 | slow_down |
A sua taxa de pedidos aumentou demasiado depressa, mesmo que esteja dentro dos seus limites. | Espera por Retry-After, reduz a taxa de pedidos e aumenta-a gradualmente. |
| 429 | credit_balance_exhausted |
A sua organização já não tem créditos pré-pagos. | Não tente novamente. Voltar a tentar não permitirá recuperar o acesso. Informa o utilizador ou avisa um administrador. |
| 503 | server_is_overloaded |
O modelo não tem capacidade suficiente neste momento. | Aguarde, se Retry-After estiver presente, e depois tente novamente com atrasos crescentes. |
Para a lista completa, consulte Códigos de erro na documentação da OpenAI.
Important
Todos os 3 erros nas 429 linhas usam o mesmo código de estado. Se a sua aplicação tentar novamente em todas as respostas 429, continua a tentar erros de faturação que nunca se resolvem. Verifica error.code para decidir o que fazer.
Saiba o que o SDK da OpenAI faz por si
Os SDKs oficiais da OpenAI para Python e JavaScript repetem as respostas 408, 409, 429 e 5xx, e erros de ligação, duas vezes por defeito, com backoff exponencial. Podes mudar isto com a max_retries opção em Python e maxRetries JavaScript.
As tentativas do SDK abrangem picos breves. A tua aplicação ainda precisa de decidir o que acontece quando as tentativas acabam e como lidar com erros que retentar não resolve. Em Python, um 429 lança RateLimitError e um 503 lança InternalServerError, por isso trata de ambos.
Tip
Para ver exatamente o que o teu código de gestão de erros recebe, define max_retries=0 (Python) ou maxRetries: 0 (JavaScript) enquanto testas. Volte a ativar as tentativas do SDK depois.
Simular os limites de taxa de pedidos da OpenAI
O Dev Proxy inclui uma predefinição com os erros do OpenAI na tabela. Descarrega-o:
devproxy config get openai-throttling
Inicie o Proxy de Desenvolvimento com a predefinição:
devproxy --config-file "~dataFolder/configs/openai-throttling/.devproxy/devproxyrc.json"
O preset falha em 90% dos pedidos para https://api.openai.com/*, com um erro aleatório da tabela. Para respostas de limitação de taxa, define o cabeçalho Retry-After e usa o RetryAfterPlugin para verificar se a tua aplicação espera esse tempo antes de voltar a chamar a API.
Certifique-se de que a sua aplicação envia os pedidos através do Dev Proxy e confia no certificado Dev Proxy. Para Node.js, veja Usar Proxy de Desenvolvimento com Node.js aplicações. Para outros ambientes de execução, veja Troubleshoot Dev Proxy.
Execute a sua aplicação e verifique que:
- Após um erro
rate_limit_exceededouslow_down, a sua aplicação espera pelo tempoRetry-After. Se chamar a API demasiado cedo, o Dev Proxy reporta-o e limita o pedido. - Após um erro
credit_balance_exhausted, a sua aplicação deixa de chamar a API e mostra uma mensagem clara. - Após um erro
server_is_overloaded, a sua aplicação tenta novamente com um atraso e, quando as tentativas acabam, reverte para uma alternativa ou mostra uma mensagem clara em vez de um rastreio de pilha. - A tua aplicação não faz perder o teu trabalho. Por exemplo, uma conversa longa por chat ou um batch job continua após o erro.
Para alterar a frequência com que os pedidos falham, use a opção --failure-rate. Por exemplo, para fazer falhar todos os pedidos:
devproxy --config-file "~dataFolder/configs/openai-throttling/.devproxy/devproxyrc.json" --failure-rate 100
Simule limites de tokens para Azure OpenAI e outros fornecedores
O preset devolve erros aleatórios, independentemente de quantos tokens a tua aplicação utilize. Para limitar a taxa dos pedidos com base no uso real de tokens, por exemplo, para ver o que acontece quando uma conversa longa ultrapassa o limite do teu TPM, usa o LanguageModelRateLimitingPlugin. Funciona com qualquer API compatível com OpenAI, incluindo Azure OpenAI e modelos locais. Para mais informações, consulte Limites de tokens do modelo de linguagem de teste.
Passo seguinte
Aprenda a simular limites baseados em tokens.
Ver também
- Teste a minha aplicação com falhas em modelos de linguagem - Simule respostas inesperadas de modelos de linguagem
- Simule erros das APIs OpenAI - Crie o seu próprio ficheiro de erros OpenAI
- Teste se a minha aplicação lida corretamente com o throttling - Throttling em qualquer API
- Usar configurações predefinidas - Trabalhar com predefinições
- RetryAfterPlugin - Verificar o comportamento de nova tentativa