Limites de taxa
Os limites de taxa do OfoxAI garantem a estabilidade da plataforma. Entenda as regras de limitação e otimize sua estratégia de chamadas.
Limites padrão
O OfoxAI cobra por uso. Todos os usuários compartilham limites de taxa unificados:
| Limite | Cota |
|---|---|
| RPM (requisições/minuto) | 100 (agregado por equipe) |
| TPM (tokens/minuto) | Ilimitado |
Agregação em nível de equipe: o RPM é calculado de forma acumulada para toda a organização (equipe). Várias API Keys da mesma equipe compartilham uma única cota, impedindo desde a raiz que o empilhamento de múltiplas Keys ultrapasse os limites dos provedores upstream. Se você precisar de uma cota de RPM maior, entre em contato com [email protected] para solicitar um ajuste.
Rate Limit Header
Cada resposta da API inclui informações sobre o limite de taxa:
x-ratelimit-limit-requests: 100
x-ratelimit-remaining-requests: 95
x-ratelimit-reset-requests: 12s| Header | Descrição |
|---|---|
x-ratelimit-limit-requests | Limite de RPM |
x-ratelimit-remaining-requests | Requisições restantes |
x-ratelimit-reset-requests | Tempo para reset do limite |
Tratamento do erro 429
Quando o limite de taxa é atingido, a API retorna 429 Too Many Requests:
from openai import RateLimitError
import time
try:
response = client.chat.completions.create(...)
except RateLimitError as e:
retry_after = float(e.response.headers.get("retry-after", 1))
print(f"Limite de taxa atingido, aguardando {retry_after}s...")
time.sleep(retry_after)Estratégias de otimização
1. Usar Prompt Caching
Para system prompts repetidos, o cache pode reduzir o consumo de tokens:
response = client.chat.completions.create(
model="openai/gpt-4o",
messages=[
# System prompts longos são automaticamente cacheados
{"role": "system", "content": "Você é um profissional... (texto longo omitido)"},
{"role": "user", "content": "Pergunta do usuário"}
]
)Veja mais em Cache de prompt.
2. Processamento em lote
Combine múltiplas requisições curtas em uma só:
# ❌ Não recomendado: Requisição separada para cada pergunta
for question in questions:
client.chat.completions.create(messages=[{"role": "user", "content": question}])
# ✅ Recomendado: Combinar em uma única requisição
combined = "\n".join(f"{i+1}. {q}" for i, q in enumerate(questions))
client.chat.completions.create(
messages=[{"role": "user", "content": f"Responda às seguintes perguntas em ordem:\n{combined}"}]
)3. Escolher o modelo adequado
Para modelos recomendados, consulte o Mercado de Modelos .
4. Controlar max_tokens
Defina um limite max_tokens adequado para evitar consumo desnecessário de tokens:
response = client.chat.completions.create(
model="openai/gpt-4o",
messages=[{"role": "user", "content": "Resuma em uma frase"}],
max_tokens=100 # Limitar tamanho da saída
)5. Usar fallback de modelo
Quando o modelo principal atinge o limite, trocar automaticamente para alternativas:
response = client.chat.completions.create(
model="openai/gpt-4o",
messages=[...],
extra_body={
"provider": {
"fallback": ["anthropic/claude-sonnet-4.6", "google/gemini-3.1-flash-lite-preview"]
}
}
)Veja mais em Failover.