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