# Um único modelo no cliente: o gateway divide automaticamente

> Tire a escolha de modelo do cliente: um único nome de modelo exposto, com o gateway dividindo automaticamente pelo estado da conversa (plano vs execução), para que um modelo forte planeje e um modelo econômico execute, sem deriva de configuração por máquina.

Canônico: https://www.gatellm.io/pt-BR/use-cases/automatic-model-tiering/

Tire a escolha de modelo da interface — o cliente expõe um único nome de modelo, o planejamento roda no modelo forte e a execução cai no modelo econômico, divididos no salto que a requisição já estava fazendo.

## Do que a comunidade realmente reclama
"Cada um tem um modelo diferente nas configurações e o mesmo prompt sai diferente para duas pessoas", "a pergunta mais comum na primeira semana de alguém é qual modelo devo escolher", "aposentar um modelo significa editar variáveis de ambiente em cada máquina de desenvolvimento". A escolha de modelo foi entregue às pessoas com menos informação para fazê-la: elas não veem o próprio gasto e não têm como saber se esta requisição em particular merece o modelo forte.
Se em vez disso você rebaixar todo mundo para um modelo barato, o trabalho degrada — entregue planejamento e julgamento arquitetural a um modelo pequeno e o retrabalho custa mais do que a economia. A divisão que realmente importa é o que esta requisição está fazendo, planejamento ou execução, e o cliente nunca contou isso ao gateway.

## Como o GateLLM faz isso
O cliente mantém um único nome de modelo; um mapeamento catch-all (from "*") no gateway normaliza qualquer nome que o cliente peça, então editar configurações pessoais não muda mais onde a requisição chega. Não sobra nada a explicar sobre qual modelo escolher.
O sinal de divisão já está na conversa: o modo de plano do Claude Code injeta Plan mode is active na entrada e Exited Plan Mode na saída. Um script de slot anterior varre de trás para frente a partir da última mensagem, usa o último marcador visto para determinar o estado atual e então chama context.useModel() para trocar o roteamento. A decisão é uma comparação de posição de string — sem chamada separada de classificação, sem salto de rede extra.
A divisão precisa viver no slot anterior: o slot posterior vê o corpo traduzido do upstream e não consegue ler os marcadores injetados pelo cliente, e o useModel do slot posterior só troca dentro do mesmo protocolo, enquanto planejamento para execução é uma mudança de rota entre modelos. As regras de request_payload (prompt_cache_key e afins) precisam ser configuradas nos dois modelos: o modelo de entrada mantém a sua durante o planejamento, e a do modelo de destino se aplica quando a troca acontece.

## 5 alavancas que realmente funcionam
- Nome único de entrada: o cliente expõe um nome de modelo e um mapeamento catch-all from "*" normaliza todo nome solicitado para um modelo de destino
- Divisão automática: um script de slot anterior usa o último marcador varrendo de trás para frente — o marcador de entrada permanece no histórico para sempre, então uma verificação de "contém" leria o estado como modo de plano permanentemente
- Proteção de protocolo: o script verifica context.sourceProtocol primeiro e retorna cedo para tráfego não Anthropic, para que um modelo de entrada que atende vários clientes nunca seja mal roteado
- Observável: uma tag SW na coluna de modelo do log marca uma troca por script e MM marca um mapeamento de identidade; estatísticas e cobrança atribuem ao nome final do modelo, então toda decisão de divisão é auditável
- Zero implantação no cliente: mudanças de configuração não exigem edições por máquina e os mapeamentos recarregam a quente (a única exceção é o teto de heap do script SCRIPT_MEMORY_LIMIT_MB, que exige reinício)

## FAQ
### Um cliente ainda pode escolher o próprio modelo?
Pode escolher, mas a escolha não decide mais onde a requisição chega: o mapeamento catch-all normaliza qualquer nome solicitado, e um useModel de script é uma mudança de rota forçada pelo admin que não está sujeita às permissões do cliente. Expor um único nome no cliente é o que elimina a pergunta por completo.

### Por que não um roteador ou classificador de modelo dedicado?
Latência e forma. Um roteador separado acrescenta um salto e normalmente uma chamada de classificação; aqui o sinal de divisão é texto de marcador já presente na conversa, e a decisão é uma comparação de posição do último marcador no caminho que a requisição já estava fazendo. Tradução de protocolo, autenticação e medição já vivem no gateway — a divisão não precisa de um segundo componente para duplicá-las.

### O script não trocou nada e os logs não mostram erro?
Muito provavelmente OOM do script: cada script roda no próprio sandbox QuickJS (teto de heap SCRIPT_MEMORY_LIMIT_MB, 64MB por padrão) e em estouro o modo padrão de registrar e continuar descarta silenciosamente todos os efeitos colaterais, incluindo useModel. As dezenas de definições de ferramentas do Claude Code consomem memória primeiro — esse piso não pode ser removido na camada de script, então aumente o teto (é necessário reiniciar). Verifique a tag SW na coluna de modelo do log para confirmar a troca.

- [Guia completo: trocar modelos por modo de plano (docs)](https://docs.gatellm.io/en/howto/script-switch-model-by-plan-mode)

## Casos de uso relacionados
- [Impor qual modelo os agentes realmente executam: fixe o modelo, separe o plano da execução](https://www.gatellm.io/pt-BR/use-cases/enforce-model-policy.md)

## Relacionados
- [Início](https://www.gatellm.io/pt-BR/index.md)
- [Preços](https://www.gatellm.io/pt-BR/pricing.md)
- [Calculadora de custos](https://www.gatellm.io/pt-BR/calculator.md)
- [Sobre](https://www.gatellm.io/pt-BR/about.md)
- [Agendar uma demonstração](https://www.gatellm.io/pt-BR/demo.md)
- [FAQ](https://www.gatellm.io/pt-BR/faq.md)
- [Comparar gateways de IA](https://www.gatellm.io/pt-BR/compare.md)
- [Comparar LiteLLM](https://www.gatellm.io/pt-BR/compare/litellm.md)
- [Comparar OpenRouter](https://www.gatellm.io/pt-BR/compare/openrouter.md)
- [Comparar Alibaba Cloud AI Gateway](https://www.gatellm.io/pt-BR/compare/alibaba-cloud.md)
- [Comparar Azure API Management](https://www.gatellm.io/pt-BR/compare/azure-apim.md)
- [Comparar Apigee](https://www.gatellm.io/pt-BR/compare/apigee.md)
- [Comparar Cloudflare AI Gateway](https://www.gatellm.io/pt-BR/compare/cloudflare.md)
- [Comparar Kong AI Gateway](https://www.gatellm.io/pt-BR/compare/kong.md)
- [Comparar Portkey](https://www.gatellm.io/pt-BR/compare/portkey.md)
- [LiteLLM vs Kong AI Gateway](https://www.gatellm.io/pt-BR/compare/litellm-vs-kong.md)
- [LiteLLM vs OpenRouter](https://www.gatellm.io/pt-BR/compare/litellm-vs-openrouter.md)
- [LiteLLM vs Portkey](https://www.gatellm.io/pt-BR/compare/litellm-vs-portkey.md)
- [Casos de uso](https://www.gatellm.io/pt-BR/use-cases.md)
- [Reduzir custo de LLM](https://www.gatellm.io/pt-BR/use-cases/reduce-cost.md)
- [Alta disponibilidade](https://www.gatellm.io/pt-BR/use-cases/high-availability.md)
- [Isolamento multilocatário](https://www.gatellm.io/pt-BR/use-cases/multi-tenant.md)
- [Conformidade e auditoria](https://www.gatellm.io/pt-BR/use-cases/compliance-audit.md)
- [Solução de problemas por sintoma](https://www.gatellm.io/pt-BR/use-cases/troubleshooting.md)
- [Stack de modelos multivendor](https://www.gatellm.io/pt-BR/use-cases/mixed-model-stack.md)
- [IA auto-hospedada dentro do Office](https://www.gatellm.io/pt-BR/use-cases/self-hosted-office-ai.md)
- [Visibilidade e atribuição do uso de tokens](https://www.gatellm.io/pt-BR/use-cases/token-ops.md)
- [Token FinOps: alocação e controle de custos de IA](https://www.gatellm.io/pt-BR/use-cases/token-finops.md)
- [Governança de ferramentas MCP](https://www.gatellm.io/pt-BR/use-cases/mcp-tool-governance.md)
- [Busca na web para todos os modelos](https://www.gatellm.io/pt-BR/use-cases/web-search-grounding.md)
- [Rotação e standby de múltiplas chaves](https://www.gatellm.io/pt-BR/use-cases/multi-key-pooling.md)
- [Controle de admissão de clientes](https://www.gatellm.io/pt-BR/use-cases/client-admission-control.md)
- [Aplicar política de uso de modelos](https://www.gatellm.io/pt-BR/use-cases/enforce-model-policy.md)
- [Um protocolo, qualquer modelo](https://www.gatellm.io/pt-BR/use-cases/one-protocol-any-model.md)
- [Suplemento Office / Microsoft 365](https://www.gatellm.io/pt-BR/office-addin.md)
- [Glossário](https://www.gatellm.io/pt-BR/glossary.md)
- [Catálogo de modelos](https://www.gatellm.io/pt-BR/models.md)
- [Integrações de SDK e frameworks](https://www.gatellm.io/pt-BR/integrations.md)
- [Agentes de código de IA e harnesses](https://www.gatellm.io/pt-BR/coding-agents.md)
- [Segurança e conformidade](https://www.gatellm.io/pt-BR/security.md)
