Перейти к содержанию

Decision-модели

Decision-модель — это компактная модель, которая быстро принимает решения: отвечает «да/нет», выбирает один вариант из набора или ставит оценку по шкале. Она не пишет текстовых ответов пользователю, а обслуживает рутинные решения внутри платформы — дёшево и без вызова большой модели.

Что это

Decision-модели — отдельный класс моделей (семейство System One: Clef, Jev и совместимые с ним). Вместо генерации текста модель получает state (текст или структуру) и типизированные вопросы, а возвращает вероятности за один forward-pass.

Тип вопроса Что спрашивает Что возвращает
noul Бинарный вопрос «да/нет» Вероятность «да» (0–1)
choice Выберите один вариант из набора Выбранный вариант и вероятности по всем вариантам
score Поставьте оценку Позицию на шкале и вероятности по всем позициям

Для вопросов choice и score число вариантов — от 2 до 26.

Это не чат-модель

Decision-модель отвечает только на структурированные вопросы и не генерирует свободный текст. Для ответов пользователю рядом подключается обычная LLM — decision-слой лишь снимает с неё простые решения.

Где используется

  • Быстрые ответы. В микро-каскаде decision-слой подключается между эмбеддингами и микро-LLM: отвечает на вопрос-выбор и отдаёт метку с уверенностью. Подробнее — Маршрутизация и быстрые ответы.
  • Классификация при маршрутизации. Когда словарный классификатор неуверен, decision-модель определяет категорию запроса — coding, research или chat.
  • Маршрутизация внешних событий. Decision-модель может выбрать шаблон агента для пришедшего события ( События и автоматизация).

Как подключить

Протокол задаётся типом провайдера — путь к сервису провайдер добавляет сам:

Тип (--type) Адрес вызова Для чего
decision POST {baseUrl}/decisions SystemOne-совместимые API (RouterAI и другие), авторизация по Bearer
systemone POST {baseUrl}/v1/systemone Локальный Ollama

baseUrl — базовый адрес сервиса.

export SYNTH_PROVIDER_ROUTERAI_DECISION_TYPE=decision
export SYNTH_PROVIDER_ROUTERAI_DECISION_URL=https://routerai.ru/api/v1
export SYNTH_PROVIDER_ROUTERAI_DECISION_API_KEY=sk-xxx
export SYNTH_PROVIDER_ROUTERAI_DECISION_MODEL=clef-flash
export SYNTH_PROVIDER_OLLAMA_DECISION_TYPE=systemone
export SYNTH_PROVIDER_OLLAMA_DECISION_URL=http://localhost:11434
export SYNTH_PROVIDER_OLLAMA_DECISION_MODEL=clef-flash

Того же провайдера можно добавить через CLI:

# SystemOne-совместимый API (тип decision)
synth config provider add \
  --name routerai --type decision \
  --url https://routerai.ru/api/v1 \
  --api-key sk-xxx \
  --model clef-flash

# Локальный Ollama (тип systemone)
synth config provider add \
  --name ollama-local --type systemone \
  --url http://localhost:11434 \
  --model clef-flash

Подробнее о провайдерах и моделях — Провайдеры и модели.

Эскалация

У decision-слоя можно задать вторую пару «провайдер/модель» — тир эскалации. Работает единый каскад primary → escalation:

  • основная модель дала низкую уверенность, невалидную метку, не ответила или упала — запрос уходит на тир эскалации;
  • если и там решение не принято, каскад идёт дальше (fail-safe), а не отдаёт сомнительный результат пользователю.

Пара эскалации необязательна: если она не задана, каскад состоит из одной основной модели.

Порог уверенности и точечное отключение

Решение принимается только при уверенности не ниже порога confidenceThreshold (по умолчанию 0.6). Ниже порога, при ошибке или таймауте уровень считается неуверенным и каскад идёт дальше — безопасный откат к прежнему поведению.

В настройках сессии есть тумблер «Decision-уровень» (decisionFirst) — это точечное отключение: выключение принудительно отключает decision-слой в конкретной сессии, а включение наследует глобальную настройку.

Настройка

Общий decision-слой настраивается в админ-разделе «Decision-модели»:

Параметр Назначение
Мастер-выключатель Включить или выключить decision-слой целиком
Провайдер и модель Основная пара «провайдер/модель»
Модель эскалации Необязательная вторая пара — тир primary → escalation
Порог уверенности Ниже порога — эскалация и откат
Статистика Счётчики decision-каскада; сброс — кнопкой

Настройки применяются без перезапуска: изменение сразу подхватывают быстрые ответы, маршрутизация и маршрутизация внешних событий.

API

Те же настройки и статистика доступны по API (runtime, изменения без перезапуска; в командном режиме изменения — за ADMIN):

Метод Путь Назначение
GET /api/v2/settings/decision Текущие настройки decision-слоя, значения по умолчанию и признак переопределения
PUT /api/v2/settings/decision Изменить настройки (live-применение); невалидное значение — 400
DELETE /api/v2/settings/decision Сбросить настройки к значениям по умолчанию
GET /api/v2/settings/decision/metrics Снимок агрегатных метрик decision-слоя {metrics, ts}
DELETE /api/v2/settings/decision/metrics Сбросить накопители метрик (обнулённый снимок)

Снимок метрик выглядит так:

{
  "calls": 128,
  "handled": 104,
  "fallback": 24,
  "escalated": 6,
  "attempts": { "primary": 128, "escalation": 11 },
  "rejected": {
    "ok": 104,
    "low_confidence": 18,
    "invalid": 2,
    "no_answer": 1,
    "no_provider": 0,
    "error": 3
  },
  "by_model": {
    "routerai/clef-flash": {
      "calls": 128,
      "handled": 98,
      "latency_ms_avg": 142,
      "latency_ms_max": 810
    }
  }
}
  • calls — обращения к каскаду; handled — принятые решения; fallback — отказы; escalated — принятые на тире эскалации.
  • attempts — число попыток по тирам; rejected — распределение статусов попыток.
  • by_model — разбивка по моделям (провайдер/модель) с числом обращений, принятых решений и латентностью (latency_ms_avg/latency_ms_max).

Метрики ведутся в памяти и сбрасываются при перезапуске платформы.

Настройки конфигурации

Стартовые значения decision-слоя задаются секцией decision в конфигурации — см. Конфигурация.

Что дальше