# Épinglez le modèle que les agents utilisent — planifier sur l’un, exécuter sur l’autre

> Forcez un modèle précis pour les exécutions d’agents et séparez le mode plan de l’exécution : liste d’autorisation d’entrée + mappage fourre-tout + bascule par script du mode plan, pour que les développeurs ne puissent pas router des tâches simples vers Opus.

Canonique: https://www.gatellm.io/fr/use-cases/enforce-model-policy/

Neutralisez le choix de modèle côté client, puis séparez le mode plan de l’exécution pour qu’un modèle fort planifie et qu’un modèle économique exécute.

## Ce dont la communauté se plaint réellement
« Nos développeurs basculent Claude Code sur Opus pour résumer un journal de modifications », « chacun a un modèle différent dans ses réglages et nous ne pouvons pas voir qui a dépensé quoi », « nous avons essayé une politique côté client, mais n’importe qui peut la remodifier ».
Le choix du modèle est une décision de coût, pas une préférence de développeur — il doit être appliqué au niveau de la passerelle, là où la requête atterrit réellement.

## Comment GateLLM procède
Trois couches, aucune facultative : la liste d’autorisation de modèles du groupe de clés (porte d’entrée) rejette les noms de modèles non autorisés avec 403 ; un mappage fourre-tout depuis "*" réécrit ce que le client demande vers le modèle sanctionné ; et un script d’emplacement avant garde le mode plan sur le modèle fort et bascule vers le modèle d’exécution à la sortie.
Les requêtes de contournement — comme la génération de titre de conversation de Claude Code — ne portent aucun marqueur de plan, elles retombent donc sur le modèle d’exécution économique. C’est exactement le comportement « ne pas faire tourner Opus sur un résumé » que vous vouliez.

## 5 leviers qui portent réellement
- Porte d’entrée : la liste d’autorisation de modèles du groupe de clés rejette tout nom de modèle non autorisé avant le routage
- Mappage fourre-tout : de "*" → vers le modèle sanctionné normalise chaque nom demandé en un seul modèle
- Séparation plan/exécution : un script d’emplacement avant lit les marqueurs de mode plan et bascule le routage seulement après la sortie du plan
- Observable : les requêtes basculées reçoivent une étiquette SW dans les journaux, de sorte que le modèle d’atterrissage réel de chaque requête est auditable
- Rechargement à chaud : mappages et règles prennent effet immédiatement — sans redémarrage, sans déploiement par développeur

## FAQ
### Pourquoi ne pas utiliser une règle déclarative switch-route pour le mode plan ?
Les prédicats switch-route ne font que l’existence structurelle et l’égalité de petites valeurs — ils ne lisent jamais le contenu d’une valeur chaîne, ce qui garde les gros corps sur disque. Le marqueur de mode plan vit dans le texte du message, il nécessite donc le script d’emplacement avant ; les contrôles structurels (image → modèle vision) sont là où switch-route excelle.

### Un client peut-il encore choisir Opus en modifiant ses propres réglages ?
Non. La porte d’entrée renvoie 403 pour tout nom de modèle hors liste d’autorisation, et le mappage fourre-tout normalise ce qui reste vers le modèle sanctionné. Le choix du modèle cesse d’être une décision du client dès que la requête atteint la passerelle.

### Le script semble sans effet et les journaux n’affichent aucune erreur ?
Chaque script s’exécute dans son propre bac à sable QuickJS avec un plafond de tas de 64 Mo (SCRIPT_MEMORY_LIMIT_MB). En cas de dépassement mémoire, le mode par défaut journaliser-et-continuer supprime silencieusement tous les effets de bord — y compris useModel — donc le routage ne bascule tout simplement pas. Les définitions d’outils de Claude Code consomment de la mémoire en premier ; augmentez la limite (un redémarrage est nécessaire).

- [Guide complet : bascule de modèle par mode plan (docs)](https://docs.gatellm.io/en/howto/script-switch-model-by-plan-mode)

## Cas d’usage associés
- [Aucun choix de modèle côté client : la passerelle répartit automatiquement](https://www.gatellm.io/fr/use-cases/automatic-model-tiering.md)

## Voir aussi
- [Accueil](https://www.gatellm.io/fr/index.md)
- [Tarifs](https://www.gatellm.io/fr/pricing.md)
- [Calculateur de coûts](https://www.gatellm.io/fr/calculator.md)
- [À propos](https://www.gatellm.io/fr/about.md)
- [Réserver une démo](https://www.gatellm.io/fr/demo.md)
- [FAQ](https://www.gatellm.io/fr/faq.md)
- [Comparer les passerelles IA](https://www.gatellm.io/fr/compare.md)
- [Comparer LiteLLM](https://www.gatellm.io/fr/compare/litellm.md)
- [Comparer OpenRouter](https://www.gatellm.io/fr/compare/openrouter.md)
- [Comparer Alibaba Cloud AI Gateway](https://www.gatellm.io/fr/compare/alibaba-cloud.md)
- [Comparer Azure API Management](https://www.gatellm.io/fr/compare/azure-apim.md)
- [Comparer Apigee](https://www.gatellm.io/fr/compare/apigee.md)
- [Comparer Cloudflare AI Gateway](https://www.gatellm.io/fr/compare/cloudflare.md)
- [Comparer Kong AI Gateway](https://www.gatellm.io/fr/compare/kong.md)
- [Comparer Portkey](https://www.gatellm.io/fr/compare/portkey.md)
- [LiteLLM vs Kong AI Gateway](https://www.gatellm.io/fr/compare/litellm-vs-kong.md)
- [LiteLLM vs OpenRouter](https://www.gatellm.io/fr/compare/litellm-vs-openrouter.md)
- [LiteLLM vs Portkey](https://www.gatellm.io/fr/compare/litellm-vs-portkey.md)
- [Cas d’usage](https://www.gatellm.io/fr/use-cases.md)
- [Réduire le coût des LLM](https://www.gatellm.io/fr/use-cases/reduce-cost.md)
- [Haute disponibilité](https://www.gatellm.io/fr/use-cases/high-availability.md)
- [Isolation multi-tenant](https://www.gatellm.io/fr/use-cases/multi-tenant.md)
- [Conformité et audit](https://www.gatellm.io/fr/use-cases/compliance-audit.md)
- [Dépannage par symptôme](https://www.gatellm.io/fr/use-cases/troubleshooting.md)
- [Pile de modèles multi-fournisseurs](https://www.gatellm.io/fr/use-cases/mixed-model-stack.md)
- [Héberger l’IA en interne dans Office](https://www.gatellm.io/fr/use-cases/self-hosted-office-ai.md)
- [Visibilité et attribution des tokens](https://www.gatellm.io/fr/use-cases/token-ops.md)
- [Token FinOps : allocation et contrôle des coûts IA](https://www.gatellm.io/fr/use-cases/token-finops.md)
- [Gouvernance des outils MCP](https://www.gatellm.io/fr/use-cases/mcp-tool-governance.md)
- [Recherche web pour chaque modèle](https://www.gatellm.io/fr/use-cases/web-search-grounding.md)
- [Rotation et secours multi-clés](https://www.gatellm.io/fr/use-cases/multi-key-pooling.md)
- [Contrôle des clients connectés](https://www.gatellm.io/fr/use-cases/client-admission-control.md)
- [Aucun choix de modèle côté client](https://www.gatellm.io/fr/use-cases/automatic-model-tiering.md)
- [Un protocole, n’importe quel modèle](https://www.gatellm.io/fr/use-cases/one-protocol-any-model.md)
- [Complément Office / Microsoft 365](https://www.gatellm.io/fr/office-addin.md)
- [Glossaire](https://www.gatellm.io/fr/glossary.md)
- [Catalogue de modèles](https://www.gatellm.io/fr/models.md)
- [Intégrations SDK et frameworks](https://www.gatellm.io/fr/integrations.md)
- [Agents de codage IA et harnais](https://www.gatellm.io/fr/coding-agents.md)
- [Sécurité et conformité](https://www.gatellm.io/fr/security.md)
