Fallbacks
Por Que Fallbacks São Importantes
Seção intitulada “Por Que Fallbacks São Importantes”Quedas de providers acontecem. OpenAI, Anthropic e Google todos experimentam downtime, rate limiting e desempenho degradado. Se sua aplicação depende de um único provider, uma única queda derruba você junto.
Fallbacks garantem que sua aplicação continue funcionando, roteando automaticamente para um provider alternativo quando o primário falha. Seus usuários nunca percebem a diferença.
Como Fallbacks Funcionam
Seção intitulada “Como Fallbacks Funcionam”Quando uma requisição falha, o gateway tenta o próximo provider na sua cadeia de fallback. Combinado com o circuit breaker, providers que já são conhecidos por estarem falhando são ignorados completamente — sem latência desperdiçada em requisições fadadas ao fracasso.
graph TD
A[Incoming Request] --> B[Provider A]
B -->|Success| C[Return Response]
B -->|Failure| D{Circuit Breaker Open for B?}
D -->|Yes| E[Skip — already failing]
D -->|No| F[Record Failure]
F --> E
E --> G[Provider B]
G -->|Success| C
G -->|Failure| H{Circuit Breaker Open for C?}
H -->|Yes| I[Skip]
H -->|No| J[Record Failure]
J --> I
I --> K[Provider C]
K -->|Success| C
K -->|Failure| L[Return Error — all providers exhausted]O gateway traduz o formato da requisição entre providers automaticamente. Uma requisição escrita para gpt-4o é adaptada para o formato correto quando faz fallback para claude-sonnet-4-6 ou gemini-2.5-pro.
Configurando Fallbacks
Seção intitulada “Configurando Fallbacks”Existem duas formas de configurar fallbacks.
Via Regras de Roteamento
Seção intitulada “Via Regras de Roteamento”Crie uma regra de roteamento com fallback no dashboard em Routing > Rules. Defina uma lista ordenada por prioridade de pares provider/modelo. O gateway tenta cada um em ordem quando o provider de maior prioridade falha.
Essa abordagem é ideal quando você quer controle centralizado e a capacidade de alterar o comportamento de fallback sem fazer deploy de código.
Via String de Modelo
Seção intitulada “Via String de Modelo”Passe uma lista separada por vírgulas de modelos no campo model da sua requisição:
"model": "gpt-4o,claude-sonnet-4-6,gemini-2.5-pro"O gateway tenta cada modelo em ordem, da esquerda para a direita. Essa abordagem é a mais simples — nenhuma configuração no dashboard é necessária.
Exemplos de Código
Seção intitulada “Exemplos de Código”import { OpenAI } from "openai";
const client = new OpenAI({ baseURL: "https://api.floopy.ai/v1", apiKey: process.env.FLOOPY_API_KEY,});
const response = await client.chat.completions.create({ model: "gpt-4o,claude-sonnet-4-6,gemini-2.5-pro", messages: [{ role: "user", content: "Summarize the latest AI news." }],});
console.log(response.choices[0].message.content);from openai import OpenAIimport os
client = OpenAI( base_url="https://api.floopy.ai/v1", api_key=os.environ["FLOOPY_API_KEY"],)
response = client.chat.completions.create( model="gpt-4o,claude-sonnet-4-6,gemini-2.5-pro", messages=[{"role": "user", "content": "Summarize the latest AI news."}],)
print(response.choices[0].message.content)curl https://api.floopy.ai/v1/chat/completions \ -H "Authorization: Bearer $FLOOPY_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "gpt-4o,claude-sonnet-4-6,gemini-2.5-pro", "messages": [{"role": "user", "content": "Summarize the latest AI news."}] }'Integração com Circuit Breaker
Seção intitulada “Integração com Circuit Breaker”O gateway rastreia a taxa de falha de cada provider usando uma janela deslizante. Quando a taxa de falha de um provider excede o limite configurado, seu circuito abre e o provider é ignorado automaticamente para requisições subsequentes. Isso evita desperdiçar latência e tokens em providers que estão sabidamente fora do ar.
Após um período de cooldown, o circuito entra em estado half-open e permite que uma única requisição de teste passe. Se a requisição de teste for bem-sucedida, o circuito fecha e o provider volta à rotação. Se falhar, o circuito permanece aberto por outro intervalo de cooldown.
Isso significa que cadeias de fallback respondem instantaneamente a quedas — as primeiras falhas acionam o circuito, e todas as requisições subsequentes ignoram o provider com falha sem latência adicional.
Detectando Fallbacks
Seção intitulada “Detectando Fallbacks”Quando um provider de fallback atende sua requisição, a resposta inclui headers adicionais:
| Header | Descrição |
|---|---|
Floopy-Fallback-Used | true se a resposta veio de um provider não primário |
Floopy-Provider | O provider que realmente atendeu a requisição (ex.: anthropic) |
Floopy-Model | O modelo que realmente gerou a resposta (ex.: claude-sonnet-4-6) |
Use esses headers para registrar qual provider atendeu cada requisição e para monitorar sua taxa de fallback ao longo do tempo.
Boas Práticas
Seção intitulada “Boas Práticas”- Ordene por preferência. Coloque seu provider mais rápido ou mais barato primeiro. Fallbacks são tentados da esquerda para a direita, então o provider primário lida com a maior parte do tráfego em condições normais.
- Misture famílias de providers. Usar
gpt-4o,claude-sonnet-4-6,gemini-2.5-prodá a você verdadeira redundância entre OpenAI, Anthropic e Google. Se você listar três modelos da OpenAI, uma queda geral da plataforma OpenAI derruba toda a sua cadeia. - Monitore a taxa de fallback. Uma taxa de fallback crescente no dashboard é um sinal precoce de que seu provider primário está degradado, mesmo antes de uma queda completa. Configure alertas para detectar isso.
- Teste sua cadeia. Verifique se seus modelos de fallback produzem qualidade de saída aceitável para o seu caso de uso. Um fallback que retorna resultados ruins é pior do que um erro claro em muitas aplicações.
- Combine com cache. Respostas cacheadas são retornadas antes da cadeia de fallback ser avaliada. Altas taxas de cache hit reduzem sua exposição a falhas de providers.