Skip to main content

Redundância e failover

A API Completions pode fazer failover automaticamente de um modelo para outro quando uma chamada de provedor falha. Você define uma cadeia ordenada – um modelo primário mais até dois substitutos – e o SecureAI tenta cada um deles até obter sucesso. Isso oferece resiliência contra interrupções do provedor, limites de taxa e tempos limite sem qualquer lógica de nova tentativa em seu próprio código. A redundância está disponível no endpoint clássico /chat/completions e no endpoint compatível com OpenAI /v1/chat/completions.

Como uma cadeia é definida

Existem três maneiras de solicitar uma cadeia, em ordem de precedência: Uma rede pode conter no máximo 3 modelos distintos. As entradas duplicadas são recolhidas. Cada entrada da cadeia pode ser uma string de modelo simples ou um objeto com tempos limite por tentativa:
Você não pode combinar models e fallback_models na mesma solicitação.

Opções para toda a cadeia (redundancy)

Os tempos limite por tentativa (definidos dentro de uma entrada models[]) substituem os valores de toda a cadeia para essa tentativa.

Gatilhos de failover

Uma tentativa fracassada é classificada em um destes motivos; o failover acontece apenas se o motivo estiver na sua lista on e houver outro modelo restante na cadeia: Falhas que não podem ser repetidas nunca acionam failover — por exemplo, um bloco intencional de limite de taxa/orçamento de token do gateway, um disjuntor aberto ou uma rejeição de política/validação. Um substituto falharia de forma idêntica ou o bloqueio seria deliberado.

Comportamento de streaming

Para solicitações de streaming, o failover só é possível antes da chegada do primeiro token de conteúdo. SecureAI puxa o fluxo upstream até o primeiro token (delimitado por first_token_timeout_ms); se isso falhar, ele fará failover para o próximo modelo. Depois que o primeiro token for enviado ao seu cliente, o modelo de serviço será bloqueado — uma interrupção posterior no meio do fluxo aparecerá como um quadro error, não como um failover.

O que você recebe de volta

Quando uma cadeia multimodelo é executada, a resposta inclui um relatório de failover:
  • Endpoint clássico: metadata.failover
  • Endpoint compatível com OpenAI: secureai.failover
metadata.served_model / secureai.served_model informa qual modelo realmente respondeu e requested_model é o primeiro modelo da cadeia. Uma solicitação de modelo único (legado) não produz nenhum relatório de failover.

Quando toda a cadeia falha

Se todas as tentativas falharem, a solicitação retornará um erro listando todas as tentativas:
  • 429 se cada falha fosse um limite de taxa.
  • 502 caso contrário.
No endpoint compatível com OpenAI, a mesma condição retorna o envelope de erro OpenAI com code: "all_models_failed".

Padrões de administrador (failoverDefaults)

Um administrador pode anexar uma cadeia padrão a uma chave de API para que os chamadores obtenham failover sem enviar uma cadeia em cada solicitação. Configurada em Admin → Chaves de API, a carga útil é validada e fixada:
  • models: até 3 nomes de modelos distintos.
  • timeout_ms: 1.000–300.000.
  • first_token_timeout_ms: 500–60000.
  • on: qualquer subconjunto dos quatro gatilhos.
Quando um chamador envia apenas model: "a" e a está presente em failoverDefaults.models, a cadeia começa na posição de a e continua através dos padrões restantes.

Segurança e cobrança por tentativa

Cada tentativa é uma chamada completa e independente por meio do wrapper SMLTP - aplicação de política, governança de saída/residência e o Signed Entitlement Token mint, todos executados novamente por tentativa, vinculados ao modelo dessa tentativa e aos bytes de solicitação exatos. O faturamento reflete o modelo que realmente atendeu à resposta. Cada failover também emite um evento de segurança api:model_failover (entregue a qualquer webhooks inscrito) e uma entrada de log de auditoria.

Relacionado