Typed Decision Models

Типизированная модель решений получает состояние и набор узких вопросов, а возвращает не свободный текст, а вероятности по заранее заданному пространству ответов. Это семантический if внутри детерминированного workflow: модель оценивает неоднозначное условие, но ветвление, побочные эффекты и право на действие остаются у кода.

Где находится этот паттерн

У обычного Structured Output модель по-прежнему генерирует содержание, только укладывает его в JSON Schema. У агента модель ещё и выбирает дальнейшие шаги. Типизированная модель решений уже обоих вариантов: она отвечает на ограниченный вопрос вроде «к какому из этих классов относится состояние?» или «насколько выполнен этот критерий?», не генерирует объяснение и не управляет процессом.

state + typed questions
          ↓
probability distributions
          ↓
policy in code → accept | verify | escalate | abstain

Первая публичная реализация этого подхода — Jev от TypeSafe AI. Его три примитива иллюстрируют форму интерфейса:

  • Choice — один вариант из конечного множества плюс распределение по всем вариантам;
  • Score — уровень по упорядоченной рубрике плюс распределение;
  • Noul — вероятность истинности утверждения от 0 до 1.

Названия принадлежат конкретному продукту, переносимая идея — фиксированное пространство решений и вероятностный ответ вместо строки.

Четыре свойства, которые нельзя склеивать

Свойство Что оно означает Чего не гарантирует
Валидность типа ответ принадлежит разрешённому множеству что выбран правильный вариант
Семантическая точность решение совпало с размеченным исходом что вероятность хорошо откалибрована
Калибровка среди решений с p ≈ 0.8 около 80% верны на группе что конкретный ответ верен
Полномочие политика разрешает выполнить действие не следует автоматически ни из типа, ни из confidence

Поэтому обещание «нулевых галлюцинаций» допустимо только в узком смысле: модель не может придумать поле или значение вне закрытого пространства. Она всё ещё может выбрать неверный допустимый вариант, в том числе с высокой уверенностью.

Вероятность — вход политики, а не готовое решение

Хранить нужно всё распределение, а не только победителя. Тогда политику можно менять без повторного инференса, если смысл состояния и вопроса остался тем же:

judgment = classify(ticket)

if judgment.p("fraud") >= FRAUD_BLOCK_THRESHOLD:
    require_human_review(ticket)
elif judgment.confidence < REVIEW_THRESHOLD:
    verify_with_reasoning_model(ticket)
else:
    continue_workflow(ticket, judgment.choice)

Порог зависит от последствий. Одинаковое 0.8 может быть достаточным для сортировки входящих документов и недопустимым для удаления данных. Confidence, понимаемый как концентрация распределения, также не равен вероятности истинности и не выдаёт полномочий на side effect (Agent Control Plane).

Где паттерн полезен

  • массовая классификация и маршрутизация;
  • проверка узких рубрик качества;
  • семантический линтер трасс агента: есть ли обход подтверждения, зацикливание или неподтверждённое утверждение;
  • извлечение повторно используемых признаков из неструктурированного текста;
  • дешёвый первый рубеж перед reasoning-моделью или человеком;
  • параллельная оценка многих независимых вопросов к одному состоянию.

Он не подходит для открытого планирования, генерации объяснений, выбора неизвестной последовательности инструментов и решений, для которых невозможно задать конечную рубрику. В этих случаях нужен workflow с генеративной моделью или агент (Agent vs Workflow).

Архитектурное правило: AI судит, код действует

Вопросы модели должны быть атомарными и предметными: «содержит ли ответ неподтверждённое утверждение?» лучше, чем «можно ли доверять этому агенту?». Композиция остаётся в коде:

  1. код собирает каноническое состояние;
  2. модель независимо оценивает узкие вопросы;
  3. код применяет бизнес-правила и учитывает последствия;
  4. сомнительные случаи уходят в более дорогую проверку, уточнение или человеку;
  5. фактический исход возвращается в eval-набор.

Этот раскол делает систему наблюдаемой: можно отдельно менять вопросы, модель, пороги и политику действий и видеть, какой слой вызвал регрессию.

Как оценивать

Одной accuracy недостаточно. Минимальный набор включает:

  • task quality: accuracy/F1 для Choice, MAE или ordinal-метрики для Score;
  • probability quality: Brier score или log-loss;
  • calibration: reliability diagram и ECE, с разрезом по значимым группам;
  • selective prediction: risk/coverage curve — как падает ошибка при эскалации неуверенных случаев;
  • system metrics: p50/p95 latency, стоимость, доля эскалаций и ошибки с учётом тяжести последствий.

Разметка должна происходить из реального outcome или независимого человеческого критерия. Консенсус сильных LLM может быть bootstrap-разметкой, но не превращается от этого в ground truth (LLM as Judge).

Зрелость подхода

TypeSafe AI представила Jev 15 сентября 2026 года в early access. Публичного описания архитектуры, весов и независимого широкого исследования калибровки пока нет. Поэтому переносим архитектурный интерфейс и протокол проверки, но не рекламные множители скорости/стоимости, не универсальные пороги и не утверждение о безошибочности.

Связано с

  • Structured Output — фиксированная форма ответа не гарантирует истинность его содержания
  • Cascade Routing — вероятностное решение как рубеж accept/verify/escalate
  • Behavioral Evals — много узких вопросов как семантический линтер траектории
  • Agent Control Plane — право на side effect остаётся вне модели
  • Quality Metric Design — калибровка и risk/coverage вместо одной средней accuracy
  • LLM as Judge — ограничения синтетического судьи и зависимой разметки