Pilha de modelos mista entre fornecedores: Opus planeja, Qwen / DeepSeek executam
Fixe os melhores modelos de fornecedores diferentes por papel de agente — o planejamento mantém o Anthropic Opus, a execução cai no Qwen3.8-Max / DeepSeek V4.1 Flash, com zero alteração no cliente e tradução automática entre protocolos.
Do que a comunidade realmente reclama
Rodar o Claude Code no Claude Opus de ponta a ponta é caro demais; uma queda geral para o Sonnet degrada visivelmente o planejamento e o julgamento arquitetural, e o retrabalho fica mais caro. Desenvolvedores querem misturar os melhores modelos de outros fornecedores (Qwen, DeepSeek), mas o cliente só fala o protocolo Anthropic e nomes de modelo claude-*, e mudar a configuração significa tocar em cada máquina de desenvolvimento.
Pior ainda, o ciclo de planejamento, o ciclo principal de execução e as subtarefas em lote têm necessidades genuinamente diferentes de capacidade vs. preço — uma única troca de modelo no cliente não consegue atender a isso.
Como o GateLLM faz isso
O GateLLM reescreve o nome do modelo por identidade depois do portão de entrada e antes do roteamento — zero alteração no cliente. O planejamento e o julgamento arquitetural mantêm claude-opus-5 indo direto para a Anthropic; o claude-sonnet-* do ciclo principal de execução mapeia para o qwen3.8-max do DashScope; as subtarefas em lote (formatação, mensagens de commit, resumos de recuperação) mapeiam para deepseek-flash via um upstream compatível com OpenAI. A tradução entre protocolos é feita pelo gateway, preservando streams SSE e tool_call_id na ida e volta.
As regras se ligam a chaves de acesso ou grupos de chaves e entram em vigor por equipe; o portão de saída verifica se o destino está na allowlist da identidade — configurar um mapeamento não é conceder permissão.
5 alavancas que realmente funcionam
- Mapeamento de modelo por identidade: from → to em chaves de acesso / grupos de chaves, reescrito após a entrada e antes do roteamento; suporta um único * capturando um segmento do meio, com recarga a quente
- Tradução entre protocolos: Claude Code sobre Anthropic, Codex / SDK OpenAI sobre OpenAI, o gateway traduz para upstreams DashScope / OpenAI / Gemini / Bedrock; :keep-alive em inferências upstream longas, _gateway_warning em quebra de stream
- Roteamento condicional por cabeçalho da requisição: o mesmo from roteia para destinos diferentes por X-Tenant etc. (exato / prefixo / regex / existe / ausente); regras condicionais primeiro, fallback incondicional, primeira correspondência vence — útil para canário
- Detecção de modo de plano: o modo de plano do Claude Code injeta marcadores Plan mode is active / Exited Plan Mode; um script que compara a última posição troca o roteamento — planejamento no Opus, execução no modelo econômico
- Permissão e observabilidade: o portão de saída verifica se o destino está na allowlist da identidade (mapeamento ≠ permissão); a coluna de modelo do log mostra uma tag MM com o nome original → mapeado ao passar o mouse; estatísticas e cobrança atribuem pelo nome real do modelo pós-mapeamento, então o custo da pilha mista é comparável de imediato