Мульти-LLM-оркестрация: смена модели, сравнение и fallback
Как Simmetric Chat оркестрирует Ollama, OpenAI, Anthropic, OpenRouter и Gemini с 20 preset'ами провайдеров, палитрой моделей Cmd+K и сравнением бок о бок.
Развёртывание с одной моделью - решение, которое вы перерастёте
Команды не остаются верны одному LLM - и не должны. Быстрая локальная модель, отлично отвечающая на вопросы поддержки, проваливается на нюансированном юридическом анализе. Frontier-модель, справляющаяся с рассуждениями, слишком дорога, чтобы отвечать на «что в этом документе?». Провайдер меняет цены, снимает модель или уходит в даун - и внезапно весь продукт лежит или пересматривает контракт. Поэтому серьёзная AI-платформа относится к «какая модель» как к решению времени выполнения, а не установки.
Simmetric Chat делает это сквозным образом: каждая граница провайдера - стратегия, модель выбирается на чат, оценка встроена в интерфейс, а сбой изящно деградирует вместо ошибки. Эта статья разбирает слой оркестрации - провайдеры, опыт переключения, режим сравнения и цепочку fallback.
Пять первоклассных провайдеров, двадцать preset'ов
Из коробки платформа говорит с пятью первоклассными провайдерами: Ollama (локальный, privacy-first по умолчанию), OpenAI, Anthropic, OpenRouter и Gemini. У каждого выделенный потоковый парсер - сетевые форматы различаются достаточно, чтобы обработка стриминга как общей задачи порождала тонкие баги, - поэтому потоковые токены, цитаты и терминальные события парсятся по провайдеру, а не приблизительно.
Помимо первоклассной пятёрки двадцать preset'ов провайдеров покрывают OpenAI-совместимую экосистему: DeepSeek, Mistral, Kimi/Moonshot, NVIDIA NIM, Qwen, xAI, Z.AI/GLM, MiniMax, LM Studio, GitHub Copilot и другие. Поскольку эти сервисы реализуют сетевой протокол OpenAI, добавить ещё один - строка конфигурации (базовый URL, ключ, список моделей), а не правка кода. Развёртывание может смешивать локальный Ollama для чувствительной работы, облачную frontier-модель для глубокого анализа и дешёвый OpenAI-совместимый провайдер для массового суммаризации - всё в одном workspace.
Конфигурация следует правилам приоритета платформы: переменные окружения задают инфраструктурные значения по умолчанию, изменения из админ-панели действуют сразу, а настройки разрешаются как база данных выше окружения выше дефолтов. Глобальный провайдер по умолчанию - ровно это: значение по умолчанию, переопределяемое на workspace и на чат.
Смена модели, не покидая разговор
Выбор модели живёт там, где живёт разговор. Поле ввода чата несёт бейдж модели, показывающий, кто ответит на следующее сообщение; клик по нему - или Cmd+K (Ctrl+K в Windows/Linux) - открывает палитру быстрого переключения. Палитра группирует модели по провайдерам и аннотирует их бейджами возможностей из метаданных модели:
local-only- работает on-premise, никаких исходящих данныхfastest- самая низкая задержка в текущем наборе провайдеровsmartest- самое высокое доступное качествоreasoning- способна к chain-of-thought
Ввод /model <имя> в поле ввода мгновенно переключает на подходящую модель, с отфильтрованной палитрой как запасным вариантом, когда имя неточное. Текст команды удаляется из сообщения перед отправкой, так что slash-команда никогда не загрязняет историю чата.
Две детали делают это удобным, а не просто возможным. Первая: переключение происходит посреди разговора - один и тот же чат может перейти с локальной модели на frontier-модель и обратно, и каждое сообщение сохраняет, какая модель его на самом деле обслужила, - след аудита использования моделей переживает переключение. Вторая: палитра - keyboard-first поверхность: паттерн Cmd+K делает выбор модели ценой одной клавиши, а не путешествия на страницу настроек, и это разница между функцией, которой люди пользуются, и функцией, которую настроили один раз и забыли.
Сравнение бок о бок
Выбирать модель по описанию - выстрел вслепую; выбирать её, глядя на два ответа на ваш реальный промпт, - инженерия. Нажатие Cmd+Shift+M (Ctrl+Shift+M) открывает сравнение моделей бок о бок: две панели одновременно стримят ответы разных моделей на один промпт, токен за токеном.
Поток, который это открывает, - тот, что формализуют eval-harness'ы, - только в повседневной поверхности:
- Спросите один раз, наблюдайте, как обе модели рассуждают: задержка, формулировки и различия в grounding сразу видны
- Сохраните ответ и продолжайте разговор с этой моделью
- Отправьте в одну панель, чтобы свести выводы в один тред
- Закройте сравнение и продолжайте с той или другой моделью
Поскольку сравнение использует ту же инфраструктуру стриминга и цитат, что и обычный чат, сравниваемые ответы приходят с целыми RAG-цитатами - вы можете оценивать не только то, как модель формулирует ответ, но и опирает ли она его на правильные источники. Это различие важно на retrieval-платформе: модель, которая пишет красиво, но цитирует не тот документ, хуже той, что пишет просто и цитирует правильно.
Цепочка fallback
Модели становятся недоступны: сбой провайдера, снятое имя модели, исчерпанная посреди разговора квота. Ответ Simmetric Chat - детерминированная цепочка fallback: если выбранная модель стала недоступна, система автоматически падает на значение по умолчанию workspace, затем на глобальное, затем на любую доступную модель. Toast уведомляет о переключении с опцией «Отменить».
Цепочка срабатывает и при периодическом polling'е (каждые тридцать секунд), и при SSE-ошибках во время стриминга, так что сбой провайдера посреди ответа перенаправляется без потери разговора. Цель дизайна конкретна: сбой модели должен деградировать платформу до её следующей модели, а не до страницы ошибки. Пользователи видят уведомление вместо stack trace, а оператор - платформу, которая продолжала обслуживать.
Для многоинстансных развёртываний та же философия дизайна расширяется наружу: fan-out стриминга и очередь задач, держащие чат отзывчивым под нагрузкой, - это вынесенное состояние, разобранное отдельно в статье о масштабировании.
Что слой оркестрации вам покупает
Собирая нити вместе: слой оркестрации - это то, что превращает выбор провайдера из закупочного решения в набор runtime-рычагов:
- Контроль затрат. Направляйте массовую работу дешёвому OpenAI-совместимому провайдеру, а frontier-модель резервируйте для промптов, которые её требуют, - на чат, а не на развёртывание.
- Зоны приватности. Держите чувствительные workspaces на моделях
local-only, позволяя общим workspaces использовать облачные провайдеры, - бейджи возможностей делают зону видимой в момент выбора. - Устойчивость. Сбои провайдеров становятся сменами модели, а не простоями, благодаря цепочке fallback и перенаправлению стриминга.
- Оценка как привычка. Сравнение бок о бок делает «на какой модели нам стандартизироваться?» двухминутной проверкой раз в неделю вместо квартального исследовательского проекта.
Всё стоит на той же стратегийной границе провайдеров, которую использует остальная платформа, поэтому добавление провайдера - первоклассного или OpenAI-совместимого preset'а - никогда не трогает чат, RAG или цикл агента.


