Где находится этот паттерн
У обычного 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 судит, код действует
Вопросы модели должны быть атомарными и предметными: «содержит ли ответ неподтверждённое утверждение?» лучше, чем «можно ли доверять этому агенту?». Композиция остаётся в коде:
- код собирает каноническое состояние;
- модель независимо оценивает узкие вопросы;
- код применяет бизнес-правила и учитывает последствия;
- сомнительные случаи уходят в более дорогую проверку, уточнение или человеку;
- фактический исход возвращается в 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 — ограничения синтетического судьи и зависимой разметки