Erro 504: o que fazer quando gemini-2.5-pro falha
Um 504 significa que o gateway esgotou o tempo de espera pelo modelo de origem: a requisição foi enviada, mas a origem não respondeu dentro do tempo limite do gateway.
504 Gateway Timeout significa que o gateway desistiu de esperar a resposta do upstream. A requisição foi encaminhada, mas nenhum resultado voltou dentro do limite. Encurtar a saída, ativar streaming ou reduzir max_tokens costuma resolver.
gemini-2.5-pro é fornecido por Google. Tudo nesta página — causas, correções e dados medidos — é compilado a partir do comportamento real deste modelo na camada de gateway.
Neste gateway, o gatilho mais comum é: A origem demorou mais do que o tempo limite do gateway permite. A primeira ação recomendada é: Mude para saída em streaming.
Causas comuns
- A origem demorou mais do que o tempo limite do gateway permite
- Um contexto longo aumentou o tempo de inferência
- Um nó de origem travou
- Uma requisição sem streaming com saída muito longa
Como resolver
- Mude para saída em streaming
- Encurte o contexto e reduza max_tokens
- Tente de novo após uma breve espera
- Use um modelo com inferência mais rápida
Nova tentativa com backoff exponencial
O código abaixo tenta novamente quando gemini-2.5-pro retorna 504: até 5 tentativas, com espera crescente e jitter aleatório para que chamadas concorrentes não repitam ao mesmo tempo. Leia a URL base e a API key de variáveis de ambiente, nunca as deixe fixas no código.
import os, time, random
import requests
BASE = os.getenv("OPENAI_BASE_URL") # e.g. https://<your-gateway>/v1
KEY = os.getenv("OPENAI_API_KEY")
MODEL = 'gemini-2.5-pro'
def chat(messages, retries=5):
"""Retry with exponential backoff + jitter."""
for i in range(retries):
try:
r = requests.post(
BASE + "/chat/completions",
headers={"Authorization": "Bearer " + KEY},
json={"model": MODEL, "messages": messages, "stream": True},
timeout=60,
)
if r.status_code == 429 or r.status_code >= 500:
time.sleep(min(2 ** i + random.uniform(0, 1), 30))
continue
r.raise_for_status()
return r.json()
except requests.exceptions.Timeout:
time.sleep(min(2 ** i + random.uniform(0, 1), 30))
raise RuntimeError("gave up after " + str(retries) + " retries")
print(chat([{"role": "user", "content": "hello"}]))Dados-chave deste modelo
| Endpoint da API | https://api.airai.cc/v1 |
|---|---|
| Compatível com OpenAI | OpenAI-compatible |
| Fornecedor | |
|---|---|
| Contexto | 1M |
| Recursos | Reasoning, Tools, Files, Vision, Audio |
| Formatos de API | openai, openai-response, openai-response-compact, anthropic, gemini, openai-alpha-search |
| Fórmula de cobrança | p * 1.25 + cr * 0.125 + c * 10) : tier("200k_plus", p * 2.5 + cr * 0.25 + c * 15 |
Perguntas frequentes
Que informações devo fornecer ao suporte ao relatar um problema?
Agrupe os erros por horário e por nó; o padrão costuma ficar óbvio. Este modelo é servido por Google, então o status upstream segue os anúncios do fornecedor. Registre o id da requisição em cada falha — ajuda mais que o código de status.
Um contexto longo torna 504 mais provável?
É um problema de configuração do cliente; nada muda no servidor. As tags de capacidade são Reasoning, Tools, Files, Vision, Audio e os limites de parâmetros vêm desse conjunto. Falhe rápido em erros de parâmetro em vez de gastar retentativas com eles.
Trocar por um modelo equivalente de outro fornecedor resolve 504?
Deixe também um modelo reserva preparado. Um fallback na arquitetura é mais confiável do que remendar cada erro separadamente. Este modelo da Google tem vários nós upstream entre os quais o gateway pode alternar. Deixe um modelo reserva mais leve pronto, assim o fluxo principal não para.
O SDK oficial já tenta de novo: preciso da minha própria lógica?
Normalmente não é preciso mudar o código, apenas o ritmo das chamadas. Tentar novamente é o primeiro passo mais eficaz. Com a cobrança p * 1.25 + cr * 0.125 + c * 10) : tier("200k_plus", p * 2.5 + cr * 0.25 + c * 15, requisições falhas não entram no uso. Use backoff exponencial para erros retentáveis e retorne o erro na hora para os demais.
Outros erros deste modelo
- gemini-2.5-pro: erro 429 — causas e soluções
- gemini-2.5-pro: erro timeout — causas e soluções
- gemini-2.5-pro: erro 500 — causas e soluções
- gemini-2.5-pro: erro 502 — causas e soluções
- gemini-2.5-pro: erro 503 — causas e soluções
- gemini-2.5-pro: erro 401 — causas e soluções
- gemini-2.5-pro: erro 403 — causas e soluções
- gemini-2.5-pro: erro 400 — causas e soluções
Outros modelos com o mesmo erro
- gpt-5
- claude-opus-5
- deepseek-v4-pro
- grok-4.3
- llama-3.3-70b-instruct
- qvq-max
- qwq-32b
- glm-5
- MiniMax-M3
- kimi-k3
- hy3
- doubao-seed-evolving
- mimo-v2.5
- gpt-4o
- claude-opus-4-6
- gemini-2.5-flash
Dados atualizados: 2026-10-11 19:15