InicianteAdmin

Várias chaves por provedor: distribuição ponderada, vínculo fixo, tomada por chave em espera

Anexe várias chaves de API a um upstream: distribuição ponderada, vínculo fixo por chamador, chaves em espera com weight=0 como rede de segurança — chega de esperas rígidas em 429.

Do que a comunidade realmente reclama

Favoritos do Reddit: "o RPM de uma chave OpenAI não é suficiente, como alterno entre várias contas", "uma chave atinge 429 e o negócio simplesmente espera", "trocar de chave perde toda a afinidade de cache da sessão".

Construir sua própria rotação significa lidar sozinho com aderência, pesos, espera e expulsão de falhas — esforço real de engenharia.

Como o GateLLM faz isso

O formulário de upstream do GateLLM aceita várias chaves de API: um hash ponderado determinístico (FNV-1a) vincula cada chamador de forma fixa à mesma chave upstream (estável dentro do TTL; trocar uma chave no lugar não quebra a aderência), e os pesos definem a proporção de distribuição. Quando uma chave falha, o gateway tenta a próxima chave não utilizada dentro desse upstream — sem sobrescrever o vínculo fixo original.

Chaves com weight=0 ficam em espera, habilitadas apenas depois que todas as chaves com weight>0 falharam. O estado de vínculo (binding / predicted / stale) é observável linha a linha no console.

O mecanismo se combina ortogonalmente com os balanceadores de carga: o Smooth WRR escolhe o upstream entre as entradas, e então a seleção fixa escolhe a chave dentro dele.

5 alavancas que realmente funcionam

  • Múltiplas chaves ponderadas: hash ponderado determinístico distribui os chamadores, os pesos são proporções
  • Vínculo fixo: cada chamador permanece na mesma chave upstream dentro do TTL — afinidade de cache
  • Chaves em espera: chaves com weight=0 ficam fora da distribuição normal, habilitadas só depois que todas as chaves ativas falham
  • Vínculos observáveis: estados binding / predicted / stale linha a linha, atualizados automaticamente a cada 3s
  • Ortogonal ao balanceador: seleção de chave dentro de um upstream + Smooth WRR entre upstreams se combinam em duas camadas
Referência completa: Campos de upstream e modelo (docs)

FAQ