AI-инжиниринг

Model Routing: выбор модели на лету - GPT-4 vs Claude vs local models

Цели урока

  • Понять почему model routing экономит 60-80% бюджета без потери качества
  • Реализовать complexity-based routing: keyword routing, LLM classifier, embedding KNN
  • Построить cost-based router с cost per request tracking через Redis
  • Внедрить latency-based routing с sliding window p95 и fallback chains
  • Собрать универсальный Model Router: complexity × cost × latency → weighted score

70% запросов к LLM - простые: перефразировать, перевести, извлечь поле. GPT-4o на них - как Ferrari за хлебом. gpt-4o-mini справится за 16x меньше денег. Model routing - это маршрутизатор, который знает разницу. Один TypeScript-класс с routing логикой сократил счёт AI-стартапа с `47,000 USD` до `18,000 USD` в месяц. Stanford RouteLLM доказал: 60-80% экономии при деградации качества менее 1%.

  • OpenRouter - 10M+ ARR на одной идее: unified API + model routing для 100+ моделей
  • Cursor (IDE) - routing: автокомплит → fast local model, код-генерация → GPT-4o/Claude Sonnet
  • ChatGPT Plus - внутренний routing: простые вопросы → GPT-4o-mini, сложные → GPT-4o (o1)
  • LiteLLM - open-source router с fallback chains, cost tracking, budget limits из коробки

Предварительные знания

  • Orchestration Patterns: routing, fallback, chain, map-reduce, branching

Маршрутизация моделей и многомодельная эра

К 2024 году у инженеров появился выбор из десятков моделей с разной ценой и качеством: семейства GPT, Claude, Gemini и открытые модели. Платить за топовую модель на каждом запросе дорого, поэтому возникла идея маршрутизации: простые запросы отдавать дешёвой модели, сложные - сильной. В июне 2024 команда LMSYS (та, что ведёт Chatbot Arena) опубликовала статью RouteLLM (arXiv 2406.18665), а в июле вышел открытый фреймворк и блог-пост. RouteLLM обучает роутеры на данных о предпочтениях и динамически выбирает между сильной и слабой моделью; по их замерам это сильно снижает затраты при сохранении большей части качества топовой модели на популярных бенчмарках. Так маршрутизация по цене и качеству стала отдельной инженерной темой многомодельной эры.

Зачем нужен model routing

70% запросов к LLM - простые: перефразировать, перевести, извлечь поле из JSON, ответить на FAQ. GPT-4o на них - как Ferrari за хлебом. gpt-4o-mini справится за 16x меньше денег. Model routing - это маршрутизатор, который знает разницу.

Январь 2025. AI-стартап открывает счёт от OpenAI: **`47,000 USD`**. Аналитик смотрит логи: 68% запросов - "What's the status of order #1234?". GPT-4o обрабатывает каждый за `0.01 USD.` GPT-4o-mini сделал бы то же самое за `0.0003 USD` - в 33 раза дешевле. После внедрения routing счёт упал до `18,000 USD.` Один TypeScript-класс сэкономил `29,000` в месяц.

Модели различаются по трём осям, и разрыв между ними **огромен**:

МодельCost (input/1M)Cost (output/1M)Latency (TTFT)Quality (MMLU)
GPT-4o2.5010.00~500ms88.7%
GPT-4o-mini0.150.60~200ms82.0%
Claude 3.5 Sonnet3.0015.00~600ms88.7%
Claude 3.5 Haiku0.804.00~300ms84.0%
Llama 3.1 70B (local)0.000.00~150ms82.0%
Llama 3.1 8B (local)0.000.00~50ms68.0%

GPT-4o стоит в **17 раз дороже** GPT-4o-mini. При 100K запросов в день математика неумолима:

Model routing - это не компромисс между стоимостью и качеством. Это **оптимизация без потери качества**. GPT-4o-mini обрабатывает простые запросы с тем же результатом, что GPT-4o. Разница появляется только на сложных задачах: многоходовое рассуждение, сложный код, деликатная коммуникация. Stanford RouteLLM и LiteLLM router подтверждают: 60-80% экономии достижимо при MMLU-деградации менее 1%.

Три стратегии routing - они не конкурируют, а дополняют друг друга:

  1. **Complexity-based** - оценить сложность запроса и выбрать модель (рассмотрим далее)
  2. **Cost-based** - бюджетный лимит на пользователя/сессию, переключение при приближении к лимиту
  3. **Latency-based** - для real-time приложений выбирать быструю модель, для batch - качественную

При 100K запросов в день, 70% из которых простые, model routing экономит ~66% бюджета. За счёт чего?

Complexity-Based Routing: оценка сложности запроса

Сложность запроса - субъективное понятие. "Переведи 'hello' на французский" - простой. "Проанализируй trade-offs между microservices и monolith для стартапа с 3 инженерами" - сложный. Как научить систему различать - без участия человека, до миллисекунды?

Три подхода к оценке сложности. Они выстраиваются в каскад - от быстрого к точному:

Подход 1: Heuristic-Based (rule-based) - keyword routing

Подход 2: LLM-Based Classifier - LLM routing

Именно этот подход исследовал Stanford RouteLLM (2024): дешёвый классификатор (gpt-4o-mini) решает, нужна ли мощная модель. ROI классификации - 400x: стоимость вызова `0.000024 USD,` экономия на одном правильно сроутированном запросе - `0.01+ USD`.

Подход 3: Embedding-Based Classifier

На практике работает **каскад**: heuristic как fast path (бесплатно, 0ms) - если score < 10 или score > 70, решение принято мгновенно. Если 10-70 - вызываем LLM classifier. LiteLLM router реализует именно такую схему из коробки - fallback chains с cost tracking на каждом шаге.

Запрос 'What is the capital of France?' проходит через complexity router. Какой подход определит его сложность быстрее и дешевле всего?

Cost-Based Routing: бюджетный контроль

Complexity routing оптимизирует отдельный запрос. Но есть сценарии, где важен **бюджет на уровне пользователя, сессии или дня**. Freemium-сервис даёт 10 GPT-4o запросов бесплатно, потом переключает на mini. Enterprise-клиент имеет месячный бюджет `500,` после которого деградация.

Cursor делает именно так: бесплатный план - local model, Pro - GPT-4o-mini, Business - GPT-4o. Разница не в коде, а в бюджетном лимите, переданном в router. Cost per request tracking в Redis - стандарт для B2C AI SaaS.

В production cost per request tracking реализуется через Redis - атомарно и быстро:

Cost routing критичен для **B2C SaaS**: ChatGPT, Notion AI, Cursor. Пользователь платит `20 USD/мес`, а стоимость GPT-4o - `0.03 USD` за запрос. При 100 запросах в день - `90/мес` убытка на одного пользователя. Cost router переключает на mini после порога и делает unit economics сходящимися.

Пользователь на тарифе Pro (5 USD/день) потратил 4.85 USD. Приходит сложный запрос на 0.03 (GPT-4o). Что должен сделать cost router?

Latency-Based Routing: выбор по скорости

В real-time приложениях - чатботах, IDE-ассистентах, голосовых помощниках - latency важнее качества. Пользователь примет ответ чуть хуже, но через 200ms, а не через 3 секунды. **Latency routing** выбирает модель на основе допустимого времени ответа.

Use CaseTarget LatencyОптимальная модельПочему
Autocomplete в IDE<200msLocal Llama 8BМгновенный ответ, приемлемое качество
Chat reply (первый токен)<500msGPT-4o-mini / HaikuБыстрый TTFT, хорошее качество
Document analysis<5sGPT-4o / Claude SonnetКачество важнее скорости
Batch processingNo limitGPT-4o / Claude OpusМаксимальное качество, время не критично
Voice assistant<300msGPT-4o-mini + streamingUX требует мгновенной реакции

Latency провайдеров **нестабильна**. GPT-4o отвечает за 500ms утром и за 3000ms вечером (peak traffic в US timezone). Router должен использовать **sliding window p95** последних запросов - не фиксированные значения из документации. Один таймаут не сломает статистику. Средняя latency - сломает.

Продвинутая стратегия - **Adaptive Routing** на алгоритме **UCB1 (Upper Confidence Bound)** из multi-armed bandit теории. Система автоматически балансирует exploitation (лучший провайдер) и exploration (пробовать другие - вдруг стали быстрее):

Voice assistant требует TTFT < 300ms. GPT-4o показывает p95 = 600ms, GPT-4o-mini - p95 = 250ms. Какое решение router?

Реализация универсального Model Router

Все три стратегии - complexity, cost, latency - объединяются в одном **Model Router**. Это центральный компонент: принимает запрос и метаданные, возвращает оптимальную модель. LiteLLM router и Portkey делают именно это - только с прослойкой SaaS поверх. Ниже - production-ready реализация без vendor lock-in.

Использование router в NestJS-сервисе:

Сервисы, которые реализуют model routing как продукт - и которые стоит знать:

СервисЧто делаетМодель ценообразования
OpenRouterЕдиный API к 100+ моделям, routing по цене/качествуPass-through + markup
MartianAI-router с автоматическим выбором моделиSaaS, per-request
PortkeyGateway с fallback, load balancing, cachingOpen-source + cloud
LiteLLMUnified API + budget management + routingOpen-source

Начинать просто: heuristic complexity scorer + 2 модели (GPT-4o и GPT-4o-mini). Это покрывает 90% выгоды model routing. Embedding classifiers, adaptive UCB1, multi-provider fallback chains - оптимизация второго порядка. Специализация + routing > одна лучшая модель для всего.

Model Router получает запрос: complexity=15, бюджет пользователя исчерпан на 95%, target latency не задан. Какую модель выберет корректная реализация?

Нужна одна лучшая модель для всего - она справится с любым запросом

Специализация + routing бьёт универсальность: разные модели оптимальны для разных задач

GPT-4o-mini на простых вопросах достигает 98% качества GPT-4o за 6% стоимости. Stanford RouteLLM, LiteLLM router и реальные кейсы показывают: 60-80% экономии при правильном routing без ощутимой деградации. 'Одна лучшая модель' - это платить за Ferrari, чтобы ездить за хлебом.

Итоги

  • Model routing - маршрутизатор запросов: простые → дешёвая модель, сложные → мощная. Экономия 60-80%
  • Complexity routing: keyword routing (0ms, бесплатно) → LLM classifier (точно, 0.00002) → embedding KNN
  • Cost routing: cost per request tracking в Redis, downgrade при приближении к лимиту
  • Latency routing: sliding window p95, fallback chains. Нестабильность latency - главный враг
  • Universal Router: complexity × cost × latency → weighted score → оптимальная модель
  • Начало: heuristic + 2 модели (GPT-4o/mini). Это 90% выгоды. Специализация + routing > одна лучшая модель

Что дальше

Model routing оптимизирует выбор модели. Следующие темы - оптимизация самих вызовов: кеширование ответов, сжатие промптов, управление rate limits.

  • Caching и Optimization — Semantic cache для LLM-ответов, prompt compression, KV-cache - ещё 30-50% экономии
  • Cost Management — Полная стратегия управления расходами: routing + caching + prompt optimization
  • Rate Limiting для AI — Token bucket, sliding window, per-user limits - защита от перерасхода

Связанные уроки

  • aie-21-orchestration-patterns — Роутинг это конкретный паттерн оркестрации
  • aie-28-caching-optimization — Роутинг и кэширование вместе режут стоимость
  • aie-29-cost-management — Роутинг это главный рычаг управления стоимостью
  • aie-30-rate-limiting-ai — Решения роутинга взаимодействуют с лимитами по моделям
  • net-37-load-balancing — Роутинг моделей это балансировка нагрузки между бэкендами моделей
  • ml-05-evaluation — Роутинг по сложности требует классификатора запросов
Model Routing: выбор модели на лету - GPT-4 vs Claude vs local models

0

1

Войти