15 сентября TypeSafe выпустила Jev и назвала её первой моделью класса System One. Jev получает состояние системы и набор типизированных вопросов, а возвращает распределение вероятностей по допустимым ответам. Весь ответ считается за один прямой проход, без генерации токенов.
За 16 дней вышли ещё пять реализаций той же идеи: Clef и Clef-flash от Cloudflare, pplx-decider-v1-27b от Perplexity, Strands Decider 2B от AWS, Laya от Convai Innovations и GLiDE от Fastino. Интерфейс у них почти общий, а внутри пять разных решений: замороженная LLM с обучаемым выходным слоем, LLM с заменённой LM head, pointer-механизм, энкодер на 322 млн параметров и рассуждение, которое включается по требованию.
Ниже разбор архитектур, независимых замеров и того, что стоит проверить перед запуском такой модели в продакшен.
Зачем агентам отдельная модель
Во многих агентных системах LLM вызывается на каждом шаге, хотя на большинстве шагов текст не нужен. Агент выбирает инструмент, проверяет, закончена ли задача, решает, можно ли выполнять команду. Полная генерация на таком шаге стоит дороже и работает медленнее, чем требует выбор, а ответ ещё приходится парсить и проверять на соответствие формату.
TypeSafe предложила для этих шагов отдельный быстрый контур и назвала его System One, по аналогии с быстрым интуитивным мышлением, которое Канеман назвал Системой 1. Название Jev отсылает к парадоксу Джевонса: чем дешевле ресурс, тем больше его потребляют. Сама Jev стоит 0,042 доллара за миллион входных токенов, TypeSafe заявляет задержку 70–500 мс и контекст 32K токенов.
Сценарии, на которых такие модели уже проверяли:
-
Проверка команды перед запуском. Агент собирается выполнить
rm -rf /data/tmp, и модель относит команду к одному из классов: только чтение, обратимое изменение или разрушительное действие. LangChain встроила такую проверку в middleware своей интеграции с Jev. -
Выбор модели под запрос. Простой запрос уходит дешёвой LLM, сложный дорогой.
-
Оценка агентов. LangChain сравнила Jev с тремя LLM в роли судьи на 500 оценках ответов агента. Результаты в таблице ниже. Тест узкий: один агент и пять запросов, повторённых по 100 раз.
-
Пентест. В препринте на arXiv предлагают поставить Jev и Laya в четыре точки автономного пентест-агента: подтверждение найденных уязвимостей, пересмотр их критичности, отсечение лишних агентов и циклы подтверждения.
|
Судья |
Совпадение с оценкой человека, % |
Цена вызова, USD |
Время ответа, с |
|---|---|---|---|
|
Jev |
100 |
0,00035 |
0,44 |
|
GPT-5.6 Terra |
99,8 |
0,00289 |
2,83 |
|
GPT-5.6 Luna |
96,4 |
0,00039 |
2,50 |
|
Claude Sonnet 4.6 |
80,0 |
0,02811 |
2,16 |
Интерфейс: состояние и типизированные вопросы
Запрос состоит из двух частей. Состояние (state) — текст или JSON: тикет, страница, трасса агента, история переписки. Вопросы к нему бывают трёх типов:
-
noul: вероятность ответа «да»;
-
choice: один вариант из списка, у Jev до 255 вариантов;
-
score: уровень на упорядоченной шкале.
В ответе приходит вероятность для каждого допустимого ответа каждого вопроса. Схематично запрос выглядит так (имена полей у поставщиков различаются, сверяйтесь с документацией):
{
"state": "С меня дважды списали деньги за одну подписку",
"questions": [
{"id": "team", "type": "choice",
"question": "Какой отдел должен обработать обращение?",
"options": ["billing", "technical", "account"]},
{"id": "urgent", "type": "noul",
"question": "Обращение срочное?"}
]
}
Ответ из разбора на Hyperstack: billing 0,91, technical 0,06, account 0,03, срочность 0,61. Что делать с этими числами, решает код приложения: порог, эскалация, логирование.
Выходных токенов нет, поэтому Jev, Clef и pplx-decider тарифицируют только вход. Несколько вопросов к одному состоянию выгодно отправлять одним запросом: состояние оплачивается один раз. Clef принимает до 64 вопросов за запрос.
Интерфейс быстро становится общим. Cloudflare называет Clef полностью совместимой с API Jev. Fastino отдаёт GLiDE через тот же эндпоинт /v1/systemone и публикует гайд по миграции с TypeSafe. Сменить поставщика можно заменой URL и имени модели, поэтому код стоит писать под этот интерфейс, без привязки к SDK конкретного вендора.
Что меняется в архитектуре
В обычной LLM трансформер переводит вход в скрытые состояния, а последний слой, LM head (language modeling head), проецирует вектор последней позиции на словарь из десятков или сотен тысяч токенов. Генерация состоит из двух фаз: prefill читает весь вход за один проход, затем decode добавляет по одному токену за шаг.
Decision-модель оставляет только prefill. Вместо проекции на словарь стоит выходной слой, который оценивает допустимые варианты, и softmax по ним. Следствий три:
-
ответы на все вопросы к состоянию считаются за один проход, параллельно;
-
ответ всегда входит в допустимое множество, парсить и валидировать нечего;
-
пропускная способность GPU на такой нагрузке определяется скоростью prefill, а она намного выше скорости генерации.
Дальше реализации расходятся в двух вопросах: что делать с LM head и какую часть сети обучать.
Шесть моделей в одной таблице
|
Модель |
Разработчик |
Основа и размер |
Механизм выбора |
Доступ |
Цена, USD за 1 млн входных токенов |
Контекст, токенов |
|---|---|---|---|---|---|---|
|
Jev |
TypeSafe |
Не раскрыта |
Не раскрыт |
API |
0,042 |
32K |
|
Clef |
Cloudflare |
Qwen3.8-27B (заморожена) + LoRA |
Выходной слой оценивает варианты параллельно |
API и веса (Apache 2.0) |
0,24 |
64K |
|
Clef-flash |
Cloudflare |
Qwen3.5-9B (заморожена) + LoRA |
Так же, как Clef |
API и веса (Apache 2.0) |
0,09 |
64K |
|
pplx-decider-v1-27b |
Perplexity |
Qwen3.8-27B (переобучена), 26,1 млрд |
Фиксированный выход на 255 решений |
API и веса (Apache 2.0) |
0,04 |
262K |
|
Strands Decider 2B |
AWS |
Qwen3.5-2B + LoRA, 1,9 млрд |
Pointer-head примерно на 1 млн параметров |
Веса (Apache 2.0) |
Бесплатно, своё железо |
4K в тестах авторов |
|
Laya |
Convai Innovations |
ModernBERT, 421 млн / mmBERT, 322 млн |
Маркер |
Веса (Apache 2.0) |
Бесплатно, своё железо |
512–1 024 |
|
GLiDE |
Fastino |
Не раскрыта |
Быстрый проход, при неуверенности рассуждение |
API |
0,30, включая токены рассуждения |
40K |
Clef и Clef-flash: замороженный Qwen и обучаемый выходной слой
Cloudflare оставила базовую модель нетронутой: у Clef это замороженная Qwen3.8-27B, у Clef-flash Qwen3.5-9B. Обучаются LoRA-адаптеры и отдельный механизм маршрутизации внимания между вариантами. После prefill выходной слой оценивает все варианты параллельно. Визуальный энкодер Qwen сохранён, поэтому обе модели принимают до четырёх картинок за запрос, а при локальном запуске и видео в виде массива кадров.
Веса открыты под Apache 2.0 и запускаются через Transformers, vLLM или SGLang. В Workers AI модели стоят 0,24 и 0,09 доллара за миллион входных токенов при контексте 65 536 токенов. Деталь из карточки на OpenRouter: Workers AI сейчас обрезает длинное текстовое состояние примерно до первых 2 000 токенов, и остальное модель не читает. Для длинных документов это повод поднять веса у себя.
По тестам Cloudflare, Clef или Clef-flash первые в 7 из 10 decision-бенчмарков. Внутри картина неоднородная. На BANKING77 Clef обходит Jev на 14,5 пункта (94,2 против 79,7), а на When2Call, где модель решает, вызывать ли инструмент прямо сейчас, проигрывает 8,6 (72,4 против 81,0). Clef-flash обходит старшую Clef в трёх строках из шести.
Задержка в анонсе: медиана 209 мс у Clef, 38,8 мс у Clef-flash и 524 мс у Jev. Флавио Копес замерил со стороны клиента 191–205 мс у Clef-flash и 524–726 мс у Clef. Разница уходит на сеть, TLS и очередь.
pplx-decider-v1-27b: LM head заменена на 255 выходов
Perplexity взяла ту же Qwen3.8-27B, удалила LM head и поставила выход сразу на 255 решений. Это тот же предел, что у вопроса choice в Jev. В отличие от Cloudflare, Perplexity переобучила основную модель, визуальный энкодер и новый выходной слой, а вероятности откалибровала отдельно. Итог: 26,1 млрд параметров, контекст 262K токенов, веса под Apache 2.0, в API 0,04 доллара за миллион входных токенов.
На собственной панели из 11 тестов модель набирает в среднем 85,71% против 84,51% у Jev и 74,76% у исходной Qwen. При этом в 6 тестах из 11 впереди Jev. Разброс по задачам больше разницы средних: на RAGTruth, где нужно найти галлюцинацию в ответе по источнику, pplx-decider выигрывает 11,5 пункта, а на BBH с многошаговыми рассуждениями столько же проигрывает. Для проверки фактов по источнику данные говорят в пользу pplx-decider, для рассуждения по короткому тексту в пользу Jev.
Фиксированный выход ограничивает схему: все варианты одного вопроса должны уложиться в 255 позиций.
Маленькие модели: Strands Decider 2B и Laya
Strands Decider 2B: pointer-head и любое число вариантов
AWS Strands Labs взяла Qwen3.5-2B-Base, обучила LoRA-адаптер и вместо LM head поставила pointer-head примерно на миллион параметров. Она сравнивает представление вопроса с представлением каждого варианта, поэтому число вариантов не зашито в архитектуру и может меняться от запроса к запросу. Всего 1,9 млрд параметров.
Это самый открытый релиз волны. Под Apache 2.0 выложены веса, код, рецепт обучения, список данных и оценки. Обучающие данные синтетические: их сгенерировали и проверили открытые LLM.
pip install strands-decider
Устройство выбирается флагом --device со значениями cuda, mps или cpu. Медиана на RTX 3090 около 115 мс. На публичной части JevBench с окном 4096 токенов модель решает 167 задач из 231 при ECE 0,050. Калибровка подобрана одной температурой на тип вопроса по коротким задачам классификации, и авторы прямо советуют перемерить пороги на своём трафике. Встроенный HTTP-сервер слушает 127.0.0.1 без аутентификации, так что в продакшене нужен свой слой авторизации.
Laya: энкодер на 322 млн параметров
Convai Innovations отказалась от декодера совсем. Laya построена на двунаправленном энкодере ModernBERT с 421 млн параметров, мультиязычная версия на mmBERT содержит 322 млн. Для каждого варианта во вход добавляется свой маркер [MASK], модель оценивает все варианты одновременно и применяет к ним softmax. Запрос обрабатывается примерно за 33 мс на T4, лицензия Apache 2.0, контекст от 512 до 1 024 токенов.
Предел такого размера виден на бенчмарках. На наборе из 2000 решений специализированная Laya Typed-Decisions даёт точность 0,766 против опубликованных 0,727 у Jev. На BANKING77 с 77 классами точность падает до 0,425 против 0,870 у Jev. В тесте Anthus на многошаговую логику Laya набрала 42,4% и 55,6% на двух вариантах задачи, Jev 83,8% и 89,3%.
GLiDE: System Two за интерфейсом System One
Fastino построила GLiDE как гибрид. Модель сначала считает быстрое распределение вероятностей, а если лидирующий вариант неуверенный, выделяет дополнительное рассуждение. Токены рассуждения делят с запросом контекст в 40K и тарифицируются как входные, по 0,30 доллара за миллион. Веса и размер не раскрыты, доступ только через API. Fastino рекомендует таймаут чтения не меньше 300 секунд.
На собственном Decision Index 0.2.1 GLiDE набирает 64,81 против 57,91 у Jev и выигрывает 31 тест из 38, в том числе CRUXEval (92,6% против 73,0%) и CLadder (88,7% против 72,6%). Сильнее всего отрыв на задачах знания и рассуждения: 62,9 против 51,4.
Anthus прогнала GLiDE и Jev на 3 600 задачах многошаговой логики из ProofWriter с одинаковыми запросами. Результаты первого прогона:
|
Метрика |
GLiDE |
Jev |
|---|---|---|
|
Точность, открытый мир |
82,9% |
83,8% |
|
Точность, закрытый мир |
71,8% |
89,3% |
|
Медианная задержка |
около 1 с |
179 мс |
|
Ответов дольше 10 с |
243 из 3 600 |
0 |
|
Цена миллиона решений, USD |
213 |
23 |
|
AUROC уверенности, открытый / закрытый мир |
0,56 / 0,52 |
0,85 / 0,86 |
Цена GLiDE растёт из-за рассуждения: медленные запросы тратят около 2 000 входных токенов, быстрые около 290. Самый долгий ответ занял 135 секунд.
Повторный прогон по просьбе Fastino оказался быстрее и дешевле, но точность упала до 76,4% и 68,8%.
Ключевая проблема в калибровке. GLiDE решает, когда рассуждать, по собственной первой вероятности, а она плохо отделяет правильные ответы от ошибочных. На задачах с закрытым миром быстрые ответы шли со средней уверенностью 86% и были верны в 68% случаев, поэтому модель рассуждала только на 13% задач. Там, где она всё же рассуждала, точность поднималась до 91–95%.
Anthus сама в основном работает с Jev, это стоит учитывать. Методика при этом открыта, а все ответы обеих моделей выложены на hard-decisions.anth.us.
Что проверять самому
Бенчмарки. Все четыре претендента обошли Jev в собственных таблицах. Каждый вендор настраивает модель под свои задачи и показывает свой набор тестов, поэтому средний балл модели не ранжирует. Смотреть стоит на строки, похожие на вашу задачу.
Задержка. Цифры из анонсов показывают время модели внутри дата-центра. Для решения внутри пользовательского запроса важна задержка со стороны клиента, а у Clef-flash она в пять раз выше заявленной. Хвост распределения тоже важен: у GLiDE медиана около секунды, но 6,8% ответов приходят дольше чем за 10 секунд.
Калибровка. На практике decision-модель используют выборочно: ответ принимается, если вероятность выше порога, остальное уходит на LLM или человеку. Поэтому кроме точности важно, насколько вероятность отделяет правильные ответы от ошибочных. ECE показывает, насколько заявленная уверенность совпадает с фактической точностью. AUROC показывает, насколько уверенность разделяет верные и неверные ответы: 0,5 означает «никак», 1,0 — идеально.
Пример из теста Anthus: при пороге 0,9 Jev пропускает 70% решений с точностью 95,9%, а GLiDE пропускает 26% с точностью 84,5%.
Nadir предлагает считать полную стоимость решения так:
cost = decider_price + (1 - coverage) * fallback_price
Здесь coverage — доля решений, принятых при пороге, который даёт нужную точность, а fallback_price — цена решения на запасной модели. В условном примере Nadir модель за 12 долларов за миллион решений с coverage 70% и откатом на Claude Haiku 4.5 обходится в 117 долларов, а модель за 72 доллара с coverage 90% — в 107. Хорошо откалиброванная модель реже уходит на дорогой откат и может оказаться дешевле.
Закрытый список. Модель всегда отвечает вариантом из списка и может уверенно выбрать неправильный. Если в схеме маршрутизации есть только биллинг, техподдержка и вход в аккаунт, инцидент безопасности всё равно попадёт в один из них. В список стоит добавлять вариант «другое» или «передать человеку» и следить, как часто модель его выбирает.
Свой сервер или API
Decision-модели работают только в режиме prefill, поэтому окупаемость своего железа считается по входным токенам в секунду. Nadir посчитал, сколько токенов видеокарта должна обрабатывать круглосуточно, чтобы обойтись дешевле API:
|
Модель |
GPU, аренда |
Цена API, USD за 1 млн токенов |
Порог окупаемости, входных токенов/с |
|---|---|---|---|
|
pplx-decider-v1-27b |
H100, 2,5 USD/ч |
0,04 |
17 361 |
|
Clef |
H100, 2,5 USD/ч |
0,24 |
2 894 |
|
Clef-flash |
L40S, 1 USD/ч |
0,09 |
3 086 |
Дешёвый API Perplexity фактически задаёт потолок цены для всех. Свой сервер нужен прежде всего тогда, когда данные не должны уходить стороннему обработчику. Strands Decider и Laya этот вопрос снимают: им хватает потребительской видеокарты или CPU.
Как сравнить модели на своих данных
-
Соберите несколько сотен решений из продакшена с известными правильными ответами и разделите их пополам на калибровочную и тестовую выборки.
-
Оберните каждую модель в общий интерфейс: вероятность по вариантам плюс число входных токенов. Добавьте обычную LLM как базовую линию, иначе неясно, нужна ли decision-модель вообще.
-
Запускайте замеры из того же региона, где работает ваш сервис.
-
На калибровочной выборке найдите минимальный порог, при котором точность принятых ответов достигает цели. На тестовой посчитайте coverage, ECE, p95 задержки и стоимость миллиона решений с учётом отката.
-
Повторяйте сравнение при изменении цен: Perplexity уже пообещала снизить свою.
Подбор порога для шага 4:
import numpy as np
def threshold_for(results, target=0.98):
"""Минимальный порог уверенности, при котором принятые ответы дают нужную точность."""
for t in np.arange(0.50, 1.00, 0.01):
kept = [r for r in results if r["conf"] >= t]
if kept and np.mean([r["correct"] for r in kept]) >= target:
return t
return None # подходящего порога нет, все решения уходят на откат
При 200 тестовых примерах разница в один-два пункта точности укладывается в шум. Разрыв в coverage на 20 пунктов уже значим.
Выводы
За две недели пять команд попробовали пять способов превратить трансформер в модель выбора. Замороженная LLM с обучаемым выходным слоем (Clef) даёт быстрый релиз и мультимодальность. Переобученная модель с фиксированным выходом (pplx-decider) даёт самую низкую цену и длинный контекст. Pointer-head (Strands Decider) снимает ограничение на число вариантов и запускается на CPU. Энкодер (Laya) самый быстрый, но теряет точность на длинных списках и многошаговой логике. Рассуждение по требованию (GLiDE) работает, только если модель хорошо понимает, когда она не уверена.
Интерфейс «состояние плюс типизированные вопросы» уже общий для Jev, Clef и GLiDE, и модель за ним становится заменяемой зависимостью. Код стоит писать под этот интерфейс, держать размеченный набор своих решений и прогонять на нём каждую новую модель. Сравнивать модели нужно по стоимости правильного решения при нужном пороге: таблицы из анонсов для этого не годятся.
Останутся ли decision-модели отдельным классом надолго, пока неясно. Но шесть реализаций за 16 дней показывают, что в агентных системах складывается отдельный слой моделей, задача которых выбирать действие.
Источники
Автор: NoHatus


