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.
A API da OpenAI retorna 429 com "Limite de taxa atingido" quando sua organização enviou mais solicitações ou mais tokens por minuto do que seus limites permitem. Os limites se aplicam à sua organização, não a cada usuário. Esses erros são temporários. Se você aguardar e enviar a solicitação novamente, ela geralmente terá êxito. Alguns outros 429 erros do OpenAI são sobre cobrança e esses não desaparecem quando você espera. Para obter mais informações, consulte códigos de erro.
Como são os erros de limite de requisições da OpenAI
| Status | Erro | O que significa | Tentar novamente? |
|---|---|---|---|
429 |
rate_limit_exceeded, solicitações por minuto (RPM) |
Você enviou solicitações demais em um minuto. | Sim, depois de Retry-After |
429 |
rate_limit_exceeded, tokens por minuto (TPM) |
Suas solicitações excederam o limite de tokens por minuto. A mensagem mostra seu limite, quantos tokens você usou e quantos a solicitação pediu. | Sim, depois de Retry-After. Solicitações menores ajudam. |
429 |
slow_down (tipo rate_limit_error) |
Seu tráfego cresceu muito rapidamente, mesmo que você esteja dentro dos limites de RPM e TPM. | Sim, com uma taxa menor |
503 |
server_is_overloaded (tipo service_unavailable_error) |
Os servidores do OpenAI estão ocupados. | Sim, com atrasos mais longos a cada vez |
429 |
credit_balance_exhausted limite de gastos ou erros de limite de uso (tipo insufficient_quota) |
Você está sem créditos ou ultrapassou um limite. | No. Consulte OpenAI insufficient_quota e credit_balance_exhausted. |
A maioria desses erros compartilha o 429 status, portanto, você não pode diferenciá-los apenas pelo status. Leia error.code no corpo da resposta.
Como lidar com erros de limite de taxa do OpenAI
- Verifique
error.codeprimeiro. Se for um código de cobrança comocredit_balance_exhausted, pare de tentar novamente e informe ao usuário. Tentar novamente após um erro de cobrança não restaurará o acesso. - Siga
Retry-Afterquando ele estiver presente. Se estiver ausente, use backoff exponencial com jitter e limite o número de tentativas. - Diminua a velocidade depois de
slow_down. Reduza a taxa de requisições e, depois, aumente-a gradualmente. A regra geral da OpenAI para TPM de entrada acima de 1M é aumentar o tráfego em no máximo 50% a cada 15 minutos. - Enviar menos tokens após um erro do TPM. Prompts e respostas mais curtos permitem que mais solicitações se ajustem a cada minuto.
- Afaste-se ainda mais depois de um
503. Aumente o intervalo entre tentativas e verifique a página de status da OpenAI. - Diga ao usuário o que está acontecendo. "Sistema ocupado, tentando novamente em 5 segundos" é melhor do que um spinner que nunca termina.
O OpenAI Python SDK tenta novamente após erros de conexão e respostas 408, 409, 429 e 5xx 2 vezes por padrão, com um backoff exponencial curto. Você pode alterá-lo com max_retries. Quando as novas tentativas se esgotam, o SDK gera RateLimitError para um 429 e InternalServerError para um 503, portanto, seu código ainda precisa de um plano:
import openai
from openai import OpenAI
client = OpenAI(max_retries=3)
BILLING_CODES = {
"credit_balance_exhausted",
"organization_spend_limit_exceeded",
"project_spend_limit_exceeded",
"organization_usage_limit_exceeded",
}
def summarize(text: str) -> str | None:
try:
response = client.responses.create(model="gpt-4.1", input=text)
return response.output_text
except openai.RateLimitError as error:
if error.code in BILLING_CODES:
raise # Retrying won't help: alert and tell the user
return None # Still throttled after retries: show "busy, try again"
except openai.InternalServerError:
return None
Como testar se seu aplicativo lida com limites de taxa openai
Você raramente atinge um limite de taxa de requisições da OpenAI durante o desenvolvimento. Você é o único usuário e seus prompts são curtos. Portanto, a maneira como você testa o tratamento do limite de taxa decide se você encontra os bugs antes que seus usuários os encontrem.
| Approach | O que você encontra | O que você perde |
|---|---|---|
| Aguardar a produção | Falhas reais | Tudo, até que um usuário o atinja |
| Fazer mock da API em seus testes ou deixar seu agente de codificação escrever o mock | Se o branch de repetição é executado | Os códigos e os corpos de erro reais do OpenAI e a política de repetição do SDK. Seu aplicativo também precisa de uma opção somente de teste para acessar o mock. |
| Chame a API real até que ela limite você | Comportamento real | Você não pode disparar um erro específico sob demanda e cada solicitação custa tokens |
| Interceptar o tráfego real do aplicativo e retornar erros openai sob demanda | URLs reais, seu SDK real e política de repetição e o próprio formato de erro do OpenAI | Nada no aplicativo muda, portanto, ele não testa seu código isoladamente. Mantenha seus testes de unidade para isso. |
Experimente em seu aplicativo
O Proxy de Desenvolvimento intercepta as solicitações do seu aplicativo para api.openai.com e retorna erros da OpenAI, enquanto seu aplicativo continua chamando as URLs reais. A configuração predefinida openai-throttling falha na maioria das solicitações com uma escolha aleatória de erros de TPM e RPM rate_limit_exceeded, slow_down, credit_balance_exhausted e 503server_is_overloaded, no próprio formato da OpenAI. As 429 respostas de limite de taxa incluem um Retry-After cabeçalho e, se o aplicativo tentar novamente antes que esse tempo expire, o Proxy de Desenvolvimento o relatará.
Baixe o preset e inicie o Dev Proxy com ele:
devproxy config get openai-throttling
devproxy --config-file "~dataFolder/configs/openai-throttling/.devproxy/devproxyrc.json"
Em seguida, execute seu aplicativo como de costume e observe o que ele faz. Para instalar o Dev Proxy, consulte Configurar o Dev Proxy.
Para testar como seu aplicativo se comporta quando ele fica sem tokens por minuto, com base nos tokens de prompt e de conclusão que suas solicitações usam, consulte Testar os limites de tokens do modelo de linguagem.