Суть
Типичная ошибка — одна (самая мощная) модель на всё: «который час?» и «напиши алгоритм» стоят одинаково дорого. Роутер оценивает сложность запроса и выбирает модель.
Зачем это нужно
Разница цены Tier 1 vs Tier 3 — 17–19×, а на простых задачах (классификация/FAQ) gap качества < 2%. Без роутинга платишь флагман-цену за тривиальное.
Как работает (3 способа + cascade)
- Rule-based — ключевые слова/длина/тип задачи → cheap/expensive. Просто, предсказуемо, негибко.
- Classifier-based — мини-модель оценивает simple/complex/ambiguous. Гибко, нужны данные. ⚠️ Оговорка для security: маленькие классификаторы хороши для роутинга по сложности, но проваливаются в задачах безопасности — PromptGuard-2 (Meta ~100M) даёт F1 ~0.35, паттерн-матчинг не ловит семантически разнообразные атаки. Для детекции инъекций нужна модель с пониманием HTML/семантики (≥Qwen3-30B) — см. Injection Detection.
- Cascade (самый популярный в проде): cheap-модель → возвращает ответ + confidence score (0.0–1.0) → если ≥ порога отдаём, иначе эскалируем на дорогую.
- Порог (старт 0.85) калибруется экспериментом на 100–200 реальных запросах (LLM-judge), не «на глаз».
- Confidence получают через structured output (JSON:
{answer, confidence, reason}). Триггеры эскалации на дорогую модель: confidence < 0.85, агент запросил tool >3 раз, ответ содержит «I'm not sure» (подход «trust or escalate»). - Готовые semantic-router'ы: vLLM Semantic Router (прослойка на Rust между фронтом и LLM: смотрит на запрос → дешёвая 8B или SOTA) даёт −48% токенов, −47% задержки, +10% точности; альтернативы —
musistudio/claude-code-router,lm-sys/RouteLLM. - Budget-aware (см. Agent CostControl): при остатке бюджета <30% — форсим cheap + уведомляем; <10% — только простые запросы.
- Реализация в LangGraph: роутинг = условное ребро (
add_conditional_edges), где функция-маршрутизатор возвращает имя следующего узла; решением может быть и выбор LLM. Практический intent-router двухуровневый (intent → ветка, затем внутри ветки — следующее решение) — см. LangGraph Intent Router, LangGraph Nodes and Edges.
Альтернативный взгляд
У Прошинского роутер — про экономику (cascade по confidence, 80% на дешёвую модель). У Стурейко роутер — это Intent / Task Router: лёгкая классификация запроса («объясни термин», «дай план», «сделай отчёт», «найди в документах», «диагностика») → выбор сценария ответа, шаблона и источника контекста, а не модели. Плюс роутер работает как guardrail: отсекает вредные запросы и prompt-injection ещё до «мозга» (policy before reasoning, см. Guardrails). Цена ошибки: ошибся роутер → ассистент «делает не то» (вместо отчёта выдаёт теорию).
Связано с
- Model Selection — роутинг оперирует выбором моделей
- Reasoning Effort — модель + усилие = рычаги цены/качества
- Agent CostControl — роутер и бюджет работают вместе
- LangGraph Intent Router — роутинг как условные рёбра графа
Открытые вопросы
- как калибровать порог под свой домен
- confidence от самой модели — насколько ему доверять