# Одна модель на клиенте: шлюз делит уровни автоматически

> Уберите выбор модели из клиента: одно отображаемое имя модели, а шлюз автоматически делит уровни по состоянию диалога (планирование vs исполнение), чтобы сильная модель планировала, а экономичная исполняла, без дрейфа конфигурации на каждой машине.

Канонический URL: https://www.gatellm.io/ru/use-cases/automatic-model-tiering/

Уберите выбор модели из интерфейса — клиент показывает одно имя модели, планирование идёт на сильной модели, а исполнение попадает на экономичную, с разделением на том переходе, который запрос и так совершал.

## На что на самом деле жалуется сообщество
«У всех в настройках разные модели, и один и тот же промпт у двух людей даёт разный результат», «самый частый вопрос в первую неделю — какую модель выбрать», «вывод модели из эксплуатации означает правку переменных окружения на каждой машине разработчика». Выбор модели передан людям с наименьшей информацией для этого решения: они не видят своих расходов и не могут знать, заслуживает ли этот конкретный запрос сильной модели.
Переведите всех на дешёвую модель — и работа деградирует: отдайте планирование и архитектурные решения небольшой модели, и переделки обойдутся дороже экономии. Разделение, которое действительно важно, — что делает этот запрос: планирует или исполняет, — а клиент никогда не сообщал этого шлюзу.

## Как это делает GateLLM
Клиент сохраняет одно имя модели; сквозное сопоставление (from «*») на шлюзе нормализует любое запрошенное имя, поэтому правка личных настроек больше не меняет место назначения запроса. Объяснять, какую модель выбрать, больше нечего.
Сигнал для разделения уже есть в диалоге: режим планирования Claude Code вставляет Plan mode is active при входе и Exited Plan Mode при выходе. Скрипт в слоте before сканирует назад от последнего сообщения, берёт последний встреченный маркер для определения текущего состояния и вызывает context.useModel() для переключения маршрутизации. Решение — сравнение позиции в строке, без отдельного вызова классификации и без лишнего сетевого перехода.
Разделение должно жить в слоте before: слот after видит уже транслированное тело upstream и не может прочитать маркеры, вставленные клиентом, а useModel в слоте after переключает только внутри того же протокола, тогда как переход от планирования к исполнению — это смена маршрута между моделями. Правила request_payload (prompt_cache_key и т. п.) должны быть настроены на обеих моделях: входная модель сохраняет свои, пока идёт планирование, а целевая применяет свои после переключения.

## 5 рычагов, которые действительно работают
- Одно имя на входе: клиент показывает одно имя модели, а сквозное сопоставление from «*» нормализует каждое запрошенное имя к одной целевой модели
- Автоматическое разделение: скрипт в слоте before берёт последний маркер при обратном сканировании — маркер входа навсегда остаётся в истории, поэтому проверка «содержит» навсегда читает состояние как режим планирования
- Защита протокола: скрипт сначала проверяет context.sourceProtocol и завершается раньше для трафика не-Anthropic, поэтому одна входная модель, обслуживающая несколько клиентов, никогда не маршрутизируется неверно
- Наблюдаемость: метка SW в колонке модели лога означает переключение скриптом, а MM — сопоставление по идентичности; статистика и биллинг атрибутируются по итоговому имени модели, поэтому каждое решение о разделении аудируемо
- Нулевая раскатка на клиентах: изменения конфигурации не требуют правки на каждой машине, а сопоставления перезагружаются на лету (единственное исключение — лимит кучи скрипта SCRIPT_MEMORY_LIMIT_MB, требующий перезапуска)

## FAQ
### Может ли клиент всё ещё выбрать собственную модель?
Выбрать может, но выбор больше не определяет, куда попадёт запрос: сквозное сопоставление нормализует любое запрошенное имя, а useModel в скрипте — это принудительная смена маршрута администратором, не ограниченная правами клиента. Показ одного имени на клиенте полностью убирает этот вопрос.

### Почему не отдельный маршрутизатор или классификатор моделей?
Задержка и форма. Отдельный маршрутизатор добавляет переход и обычно вызов классификации; здесь сигнал разделения — текст маркера, уже присутствующий в диалоге, а решение — сравнение позиции последнего маркера на пути, который запрос и так проходил. Трансляция протоколов, аутентификация и учёт уже живут на шлюзе — разделению не нужен второй компонент, дублирующий их.

### Скрипт ничего не переключил, а в логах нет ошибки?
Скорее всего, нехватка памяти скрипта: каждый скрипт работает в собственной песочнице QuickJS (лимит кучи SCRIPT_MEMORY_LIMIT_MB, по умолчанию 64 МБ), и при переполнении режим по умолчанию log-and-continue молча отбрасывает все побочные эффекты, включая useModel. Десятки определений инструментов Claude Code первыми расходуют память — этот порог нельзя убрать на уровне скрипта, поэтому увеличьте лимит (требуется перезапуск). Проверьте метку SW в колонке модели лога, чтобы подтвердить переключение.

- [Полное руководство: переключение моделей по режиму планирования (документация)](https://docs.gatellm.io/en/howto/script-switch-model-by-plan-mode)

## Связанные сценарии
- [Зафиксируйте, какую модель на самом деле запускают агенты: закрепите модель, разделите планирование и исполнение](https://www.gatellm.io/ru/use-cases/enforce-model-policy.md)

## Связанные страницы
- [Главная](https://www.gatellm.io/ru/index.md)
- [Тарифы](https://www.gatellm.io/ru/pricing.md)
- [Калькулятор стоимости LLM](https://www.gatellm.io/ru/calculator.md)
- [О нас](https://www.gatellm.io/ru/about.md)
- [Заказать демо](https://www.gatellm.io/ru/demo.md)
- [FAQ](https://www.gatellm.io/ru/faq.md)
- [Сравнить AI-шлюзы](https://www.gatellm.io/ru/compare.md)
- [Сравнить LiteLLM](https://www.gatellm.io/ru/compare/litellm.md)
- [Сравнить OpenRouter](https://www.gatellm.io/ru/compare/openrouter.md)
- [Сравнить Alibaba Cloud AI Gateway](https://www.gatellm.io/ru/compare/alibaba-cloud.md)
- [Сравнить Azure API Management](https://www.gatellm.io/ru/compare/azure-apim.md)
- [Сравнить Apigee](https://www.gatellm.io/ru/compare/apigee.md)
- [Сравнить Cloudflare AI Gateway](https://www.gatellm.io/ru/compare/cloudflare.md)
- [Сравнить Kong AI Gateway](https://www.gatellm.io/ru/compare/kong.md)
- [Сравнить Portkey](https://www.gatellm.io/ru/compare/portkey.md)
- [LiteLLM vs Kong AI Gateway](https://www.gatellm.io/ru/compare/litellm-vs-kong.md)
- [LiteLLM vs OpenRouter](https://www.gatellm.io/ru/compare/litellm-vs-openrouter.md)
- [LiteLLM vs Portkey](https://www.gatellm.io/ru/compare/litellm-vs-portkey.md)
- [Сценарии использования](https://www.gatellm.io/ru/use-cases.md)
- [Снижение затрат на LLM](https://www.gatellm.io/ru/use-cases/reduce-cost.md)
- [Высокая доступность](https://www.gatellm.io/ru/use-cases/high-availability.md)
- [Мультитенантная изоляция](https://www.gatellm.io/ru/use-cases/multi-tenant.md)
- [Комплаенс и аудит](https://www.gatellm.io/ru/use-cases/compliance-audit.md)
- [Диагностика по симптомам](https://www.gatellm.io/ru/use-cases/troubleshooting.md)
- [Смешанный стек моделей от разных поставщиков](https://www.gatellm.io/ru/use-cases/mixed-model-stack.md)
- [ИИ в собственном контуре внутри Office](https://www.gatellm.io/ru/use-cases/self-hosted-office-ai.md)
- [Видимость и атрибуция использования токенов](https://www.gatellm.io/ru/use-cases/token-ops.md)
- [Token FinOps: распределение и контроль затрат на ИИ](https://www.gatellm.io/ru/use-cases/token-finops.md)
- [Управление инструментами MCP](https://www.gatellm.io/ru/use-cases/mcp-tool-governance.md)
- [Веб-поиск для всех моделей](https://www.gatellm.io/ru/use-cases/web-search-grounding.md)
- [Ротация и резерв нескольких ключей](https://www.gatellm.io/ru/use-cases/multi-key-pooling.md)
- [Контроль доступа подключённых клиентов](https://www.gatellm.io/ru/use-cases/client-admission-control.md)
- [Принудительная политика использования моделей](https://www.gatellm.io/ru/use-cases/enforce-model-policy.md)
- [Один протокол — любая модель](https://www.gatellm.io/ru/use-cases/one-protocol-any-model.md)
- [Надстройка Office / Microsoft 365](https://www.gatellm.io/ru/office-addin.md)
- [Глоссарий](https://www.gatellm.io/ru/glossary.md)
- [Каталог моделей](https://www.gatellm.io/ru/models.md)
- [Интеграции SDK и фреймворков](https://www.gatellm.io/ru/integrations.md)
- [ИИ-агенты для кодирования и harness](https://www.gatellm.io/ru/coding-agents.md)
- [Безопасность и комплаенс](https://www.gatellm.io/ru/security.md)
