Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Visão geral
Meta: Testar como seu aplicativo lida com o limite de taxa OpenAI e erros de sobrecarga
Tempo: 10 minutos
Plugins:GenericRandomErrorPlugin, RetryAfterPlugin
Pré-requisitos:Configurar o Proxy de Desenvolvimento
Seu aplicativo funciona em desenvolvimento e, em seguida, falha na produção com 429 Too Many Requests. Os limites de requisição da OpenAI dependem do nível de uso da sua organização, do modelo e de todos os outros que usam a mesma organização, portanto, não é possível atingi-los intencionalmente de forma confiável. O Proxy de Desenvolvimento retorna os mesmos erros que a API OpenAI retorna, para que você possa ver o que seu aplicativo faz antes que seus usuários vejam o que ele faz.
Saiba o que a OpenAI retorna
Nem todos os erros do OpenAI significam "tente novamente". Seu aplicativo precisa diferenciá-los.
| Status | error.code |
O que significa | O que seu aplicativo deve fazer |
|---|---|---|---|
| 429 | rate_limit_exceeded |
Você atingiu o limite de solicitações por minuto (RPM) ou tokens por minuto (TPM). | Aguarde o tempo indicado no cabeçalho Retry-After e tente novamente. |
| 429 | slow_down |
Sua taxa de solicitação aumentou muito rapidamente, mesmo que você esteja dentro de seus limites. | Aguarde Retry-After, reduza a taxa de solicitação e aumente-a gradualmente. |
| 429 | credit_balance_exhausted |
Sua organização não tem mais créditos pré-pagos. | Não tente novamente. Tentar novamente não restaurará o acesso. Informe ao usuário ou alerte um administrador. |
| 503 | server_is_overloaded |
O modelo não tem capacidade suficiente no momento. | Aguarde Retry-After se estiver presente e tente novamente com atrasos crescentes. |
Para obter a lista completa, consulte códigos de erro na documentação do OpenAI.
Important
Todos os 3 erros nas 429 linhas usam o mesmo código de status. Se o aplicativo tentar novamente após cada resposta 429, ele continuará repetindo erros de cobrança irrecuperáveis. Verifique error.code para decidir o que fazer.
Saiba o que o SDK do OpenAI faz para você
Os SDKs oficiais da OpenAI para Python e JavaScript tentarão novamente as respostas 408, 409, 429 e 5xx, além de erros de conexão, 2 vezes por padrão com recuo exponencial. Você pode alterá-lo com a opção max_retries em Python e maxRetries em JavaScript.
As novas tentativas do SDK cobrem rajadas curtas. Seu aplicativo ainda precisa decidir o que acontece quando as tentativas se esgotam e como lidar com erros que novas tentativas não corrigem. Em Python, 429 gera RateLimitError e 503 gera InternalServerError, portanto, manipule ambos.
Tip
Para ver exatamente o que o código de tratamento de erros recebe, defina max_retries=0 (Python) ou maxRetries: 0 (JavaScript) durante o teste. Ative novamente as tentativas do SDK depois.
Simular limites de taxa OpenAI
O Proxy de Desenvolvimento tem uma predefinição com os erros OpenAI na tabela. Baixe-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"
A predefinição faz com que 90% das solicitações para https://api.openai.com/* falhem com um erro aleatório da tabela. Para respostas de limitação de taxa, ele define o cabeçalho Retry-After e usa o RetryAfterPlugin para verificar se seu aplicativo aguarda esse tempo antes de chamar a API novamente.
Verifique se seu aplicativo envia suas solicitações por meio do Dev Proxy e confia no certificado do Dev Proxy. Para Node.js, consulte Usar o Proxy de Desenvolvimento com aplicativos Node.js. Para outros runtimes, consulte Solucionar problemas do Dev Proxy.
Execute seu aplicativo e verifique se:
- Após um
rate_limit_exceedederro ouslow_downerro, seu aplicativo aguarda oRetry-Aftertempo. Se ela chamar a API muito cedo, o Dev Proxy reportará isso e limitará a solicitação. - Após um
credit_balance_exhaustederro, seu aplicativo para de chamar a API e mostra uma mensagem clara. - Após um erro
server_is_overloaded, seu aplicativo tenta novamente com um atraso e, quando as novas tentativas se esgotam, recorre a uma alternativa ou mostra uma mensagem clara em vez de um rastreamento de pilha. - Seu aplicativo não faz você perder seu trabalho. Por exemplo, uma longa conversa de chat ou um trabalho em lote continua após o erro.
Para alterar a frequência com que as solicitações falham, use a opção --failure-rate . Por exemplo, para falhar em todas as solicitações:
devproxy --config-file "~dataFolder/configs/openai-throttling/.devproxy/devproxyrc.json" --failure-rate 100
Simular limites de token para Azure OpenAI e outros provedores
A predefinição retorna erros aleatoriamente, independentemente de quantos tokens seu aplicativo usa. Para limitar solicitações com base no uso real de token, por exemplo, para ver o que acontece quando uma conversa longa ultrapassa o limite do TPM, use o LanguageModelRateLimitingPlugin. Ele funciona com qualquer API compatível com OpenAI, incluindo Azure OpenAI e modelos locais. Para obter mais informações, consulte Limites de token do modelo de linguagem de teste.
Próxima etapa
Saiba como simular limites baseados em token.
Consulte também
- Teste meu aplicativo com falhas de modelo de linguagem – Simular respostas inesperadas do modelo de idioma
- Simule erros das APIs da OpenAI – Crie seu próprio arquivo de erros da OpenAI
- Teste se meu aplicativo manipula o throttling corretamente - Throttling em qualquer API
- Usar configurações predefinidas – Trabalhar com predefinições
- RetryAfterPlugin – Verificar o comportamento de repetição