# Fije el modelo que ejecutan los agentes: planificar con uno, ejecutar con otro

> Fuerce un modelo concreto para las ejecuciones de agentes y separe el modo de planificación de la ejecución: lista de permitidos en la entrada + mapeo de modelo comodín + cambio por script según el modo de planificación, para que los desarrolladores no puedan enrutar tareas simples a Opus.

Canonical: https://www.gatellm.io/es/use-cases/enforce-model-policy/

Neutralice la elección de modelo del lado del cliente y luego separe el modo de planificación de la ejecución, para que un modelo potente planifique y uno barato ejecute.

## De qué se queja realmente la comunidad
"Nuestros desarrolladores cambian Claude Code a Opus para resumir un changelog", "cada persona tiene un modelo distinto en sus ajustes y no podemos ver quién gastó qué", "probamos una política del lado del cliente, pero cualquiera puede volver a editarla".
La elección de modelo es una decisión de costo, no una preferencia del desarrollador: tiene que aplicarse en el gateway, donde realmente llega la solicitud.

## Cómo lo hace GateLLM
Tres capas, ninguna omitible: la lista de modelos permitidos del grupo de claves (compuerta de entrada) rechaza con 403 los nombres de modelo no autorizados; un mapeo de modelo comodín desde "*" reescribe lo que solicite el cliente al modelo autorizado; y un script de ranura before mantiene el modo de planificación en el modelo potente y cambia al modelo de ejecución al salir.
Las solicitudes de omisión, como la generación de títulos de conversación de Claude Code, no llevan marcador de planificación, así que recaen en el modelo de ejecución barato. Ese es exactamente el comportamiento de "no ejecutar Opus para un resumen" que quería.

## 5 palancas que realmente funcionan
- Compuerta de entrada: la lista de modelos permitidos del grupo de claves rechaza cualquier nombre de modelo no autorizado antes del enrutamiento
- Mapeo comodín: de "*" → al modelo autorizado, normaliza todos los nombres solicitados a un solo modelo
- División planificación/ejecución: un script de ranura before lee los marcadores del modo de planificación y cambia el enrutamiento solo después de salir de la planificación
- Observable: las solicitudes conmutadas reciben una etiqueta SW en los logs, así que el modelo real de destino de cada solicitud es auditable
- Recarga en caliente: los mapeos y las reglas surten efecto de inmediato, sin reinicios ni despliegues por desarrollador

## Preguntas frecuentes
### ¿Por qué no usar una regla declarativa switch-route para el modo de planificación?
Los predicados de switch-route solo hacen comprobaciones estructurales de existencia e igualdad de valores pequeños; nunca leen el contenido de un valor de cadena, que es lo que mantiene los cuerpos grandes en disco. El marcador del modo de planificación vive en el texto del mensaje, así que necesita el script de ranura before; las comprobaciones estructurales (imagen → modelo de visión) son donde switch-route brilla.

### ¿Puede un cliente seguir eligiendo Opus editando sus propios ajustes?
No. La compuerta de entrada devuelve 403 para cualquier nombre de modelo fuera de la lista de permitidos, y el mapeo comodín normaliza lo que quede al modelo autorizado. La elección de modelo deja de ser una decisión del cliente en el momento en que la solicitud llega al gateway.

### El script no parece tener efecto 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 con un límite de heap de 64 MB (SCRIPT_MEMORY_LIMIT_MB). En caso de falta de memoria, el modo predeterminado de registrar y continuar descarta silenciosamente todos los efectos secundarios, incluido useModel, así que el enrutamiento simplemente no cambia. Las definiciones de herramientas de Claude Code consumen memoria primero; aumente el límite (requiere reiniciar).

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

## Casos de uso relacionados
- [Sin elección de modelo en el cliente: el gateway crea los niveles automáticamente](https://www.gatellm.io/es/use-cases/automatic-model-tiering.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)
- [Sin elección de modelo en el cliente](https://www.gatellm.io/es/use-cases/automatic-model-tiering.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)
