# Un solo modelo en el cliente: el gateway crea los niveles automáticamente

> Saque la elección de modelo del cliente: un único nombre de modelo expuesto, con el gateway creando niveles automáticamente según el estado de la conversación (planificación frente a ejecución), para que un modelo potente planifique y uno rentable ejecute, sin deriva de configuración por máquina.

Canonical: https://www.gatellm.io/es/use-cases/automatic-model-tiering/

Saque la elección de modelo de la interfaz: el cliente expone un único nombre de modelo, la planificación se ejecuta en el modelo potente y la ejecución recae en el rentable, con niveles creados en el salto que la solicitud ya estaba haciendo.

## De qué se queja realmente la comunidad
"Cada persona tiene un modelo distinto en sus ajustes y el mismo prompt sale diferente para dos personas", "la pregunta más habitual en la primera semana de alguien es qué modelo debo elegir", "retirar un modelo significa editar variables de entorno en cada máquina de desarrollo". La elección de modelo se ha entregado a las personas con menos información para tomarla: no ven su propio gasto y no tienen forma de saber si esta solicitud concreta merece el modelo potente.
Si en cambio baja a todos a un modelo barato, el trabajo se degrada: confíe la planificación y el criterio arquitectónico a un modelo pequeño y el retrabajo cuesta más que el ahorro. La división que realmente importa es qué está haciendo esta solicitud, planificar o ejecutar, y el cliente nunca se lo ha dicho al gateway.

## Cómo lo hace GateLLM
El cliente conserva un único nombre de modelo; un mapeo comodín (desde "*") en el gateway normaliza el nombre que pida el cliente, así que editar los ajustes personales ya no cambia dónde recae la solicitud. Ya no queda nada que explicar sobre qué modelo elegir.
La señal de los niveles ya está en la conversación: el modo de planificación de Claude Code inyecta Plan mode is active al entrar y Exited Plan Mode al salir. Un script de ranura before recorre los mensajes hacia atrás, toma el último marcador visto para determinar el estado actual y luego llama a context.useModel() para cambiar el enrutamiento. La decisión es una comparación de posiciones de cadena: sin llamada de clasificación aparte ni salto de red adicional.
Los niveles tienen que vivir en la ranura before: la ranura after ve el cuerpo traducido del upstream y no puede leer los marcadores inyectados por el cliente; además, useModel en la ranura after solo cambia dentro del mismo protocolo, mientras que pasar de planificación a ejecución es un cambio de ruta entre modelos. Las reglas request_payload (prompt_cache_key y similares) deben configurarse en ambos modelos: el modelo de entrada conserva la suya mientras planifica y la del modelo destino se aplica una vez ocurre el cambio.

## 5 palancas que realmente funcionan
- Un solo nombre de entrada: el cliente expone un único nombre de modelo y un mapeo comodín desde "*" normaliza todos los nombres solicitados a un único modelo de destino
- Niveles automáticos: un script de ranura before toma el último marcador recorriendo hacia atrás; el marcador de entrada permanece en el historial para siempre, así que una comprobación de "contiene" leería el estado como modo de planificación de forma permanente
- Protección de protocolo: el script comprueba primero context.sourceProtocol y vuelve antes de tiempo para el tráfico que no es de Anthropic, así que un modelo de entrada que sirve a varios clientes nunca se enruta mal
- Observable: una etiqueta SW en la columna de modelo del log marca un cambio por script y MM marca un mapeo por identidad; las estadísticas y la facturación atribuyen al nombre del modelo final, así que cada decisión de nivel es auditable
- Cero despliegue en clientes: los cambios de configuración no necesitan ediciones por máquina y los mapeos se recargan en caliente (la única excepción es el límite de heap de los scripts, SCRIPT_MEMORY_LIMIT_MB, que requiere reiniciar)

## Preguntas frecuentes
### ¿Puede un cliente seguir eligiendo su propio modelo?
Puede elegirlo, pero la elección ya no decide dónde recae la solicitud: el mapeo comodín normaliza cualquier nombre solicitado, y un useModel de script es un cambio de ruta forzado por el administrador que no está sujeto a los permisos del cliente. Exponer un único nombre en el cliente es lo que elimina la pregunta por completo.

### ¿Por qué no un enrutador o clasificador de modelos dedicado?
Por latencia y por forma. Un enrutador separado añade un salto y normalmente una llamada de clasificación; aquí la señal de los niveles es texto de marcador que ya está en la conversación, y la decisión es una comparación de la posición del último marcador en el camino que la solicitud ya recorría. La traducción de protocolos, la autenticación y la medición ya viven en el gateway: los niveles no necesitan un segundo componente que las duplique.

### El script no cambió nada y los logs no muestran error. ¿Por qué?
Lo más probable es un OOM del script: cada script se ejecuta en su propio sandbox QuickJS (límite de heap SCRIPT_MEMORY_LIMIT_MB, 64 MB por defecto) y, al desbordarse, el modo predeterminado de registrar y continuar descarta silenciosamente todos los efectos secundarios, incluido useModel. Las docenas de definiciones de herramientas de Claude Code consumen memoria primero; ese suelo no se puede eliminar en la capa de scripts, así que aumente el límite (requiere reiniciar). Compruebe la etiqueta SW en la columna de modelo del log para confirmar el cambio.

- [Guía completa: cambiar de modelo por modo de planificación (docs)](https://docs.gatellm.io/en/howto/script-switch-model-by-plan-mode)

## Casos de uso relacionados
- [Imponer qué modelo ejecutan realmente los agentes: fije el modelo y separe la planificación de la ejecución](https://www.gatellm.io/es/use-cases/enforce-model-policy.md)

## Relacionado
- [Inicio](https://www.gatellm.io/es/index.md)
- [Precios](https://www.gatellm.io/es/pricing.md)
- [Calculadora de costos](https://www.gatellm.io/es/calculator.md)
- [Acerca de](https://www.gatellm.io/es/about.md)
- [Reservar una demo](https://www.gatellm.io/es/demo.md)
- [FAQ](https://www.gatellm.io/es/faq.md)
- [Comparar gateways de IA](https://www.gatellm.io/es/compare.md)
- [Comparar LiteLLM](https://www.gatellm.io/es/compare/litellm.md)
- [Comparar OpenRouter](https://www.gatellm.io/es/compare/openrouter.md)
- [Comparar Alibaba Cloud AI Gateway](https://www.gatellm.io/es/compare/alibaba-cloud.md)
- [Comparar Azure API Management](https://www.gatellm.io/es/compare/azure-apim.md)
- [Comparar Apigee](https://www.gatellm.io/es/compare/apigee.md)
- [Comparar Cloudflare AI Gateway](https://www.gatellm.io/es/compare/cloudflare.md)
- [Comparar Kong AI Gateway](https://www.gatellm.io/es/compare/kong.md)
- [Comparar Portkey](https://www.gatellm.io/es/compare/portkey.md)
- [LiteLLM vs Kong AI Gateway](https://www.gatellm.io/es/compare/litellm-vs-kong.md)
- [LiteLLM vs OpenRouter](https://www.gatellm.io/es/compare/litellm-vs-openrouter.md)
- [LiteLLM vs Portkey](https://www.gatellm.io/es/compare/litellm-vs-portkey.md)
- [Casos de uso](https://www.gatellm.io/es/use-cases.md)
- [Reducir el costo de LLM](https://www.gatellm.io/es/use-cases/reduce-cost.md)
- [Alta disponibilidad](https://www.gatellm.io/es/use-cases/high-availability.md)
- [Aislamiento multiusuario](https://www.gatellm.io/es/use-cases/multi-tenant.md)
- [Cumplimiento y auditoría](https://www.gatellm.io/es/use-cases/compliance-audit.md)
- [Solución de problemas por síntoma](https://www.gatellm.io/es/use-cases/troubleshooting.md)
- [Stack de modelos multivendor](https://www.gatellm.io/es/use-cases/mixed-model-stack.md)
- [IA autoalojada dentro de Office](https://www.gatellm.io/es/use-cases/self-hosted-office-ai.md)
- [Visibilidad y atribución del uso de tokens](https://www.gatellm.io/es/use-cases/token-ops.md)
- [Token FinOps: asignación y control del costo de IA](https://www.gatellm.io/es/use-cases/token-finops.md)
- [Gobernanza de herramientas MCP](https://www.gatellm.io/es/use-cases/mcp-tool-governance.md)
- [Búsqueda web para todos los modelos](https://www.gatellm.io/es/use-cases/web-search-grounding.md)
- [Rotación y respaldo multi-clave](https://www.gatellm.io/es/use-cases/multi-key-pooling.md)
- [Control de admisión de clientes](https://www.gatellm.io/es/use-cases/client-admission-control.md)
- [Aplicar la política de uso de modelos](https://www.gatellm.io/es/use-cases/enforce-model-policy.md)
- [Un protocolo, cualquier modelo](https://www.gatellm.io/es/use-cases/one-protocol-any-model.md)
- [Complemento para Office / Microsoft 365](https://www.gatellm.io/es/office-addin.md)
- [Glosario](https://www.gatellm.io/es/glossary.md)
- [Catálogo de modelos](https://www.gatellm.io/es/models.md)
- [Integraciones de SDK y frameworks](https://www.gatellm.io/es/integrations.md)
- [Agentes de código IA y harnesses](https://www.gatellm.io/es/coding-agents.md)
- [Seguridad y cumplimiento](https://www.gatellm.io/es/security.md)
