18 сентября 2026 года TypeSafe выпустила Jev — модель, которая не написала ни одной строчки текста и не собирается. Вы передаёте ей состояние и список вопросов с заранее объявленным типом ответа, она возвращает число, метку или позицию на шкале. Всё. Для большой доли задач, которые сегодня решают языковыми моделями, этого достаточно — и обходится в тысячные доли цента.
Что такое System One
Название прозрачно отсылает к двум системам мышления: быстрой, автоматической — и медленной, рассуждающей. Большие языковые модели устроены как вторая: они думают вслух, перебирают варианты, пишут абзац там, где нужно одно «да». Это прекрасно, когда ответ и должен быть текстом. И это чистая растрата, когда от модели нужно одно решение из трёх.
System One — попытка закрыть вторую половину. Модель этого класса не рассуждает вслух и не выбирает, что делать дальше. Она отвечает на узкий вопрос о том, что ей показали, и отвечает мгновенно. Управляющая логика при этом остаётся в вашем коде — это, пожалуй, главная мысль всего руководства TypeSafe, и к ней мы ещё вернёмся.
Чем это отличается от «попросить GPT вернуть JSON»
Приём знаком каждому: описываешь схему, включаешь structured output, получаешь объект вместо прозы. Работает. Зачем тогда отдельная модель?
Разница в трёх вещах, и каждая из них меняет то, как вы пишете код вокруг.
- Ответ — распределение, а не метка. Jev возвращает вероятности по всем вариантам и отдельную величину уверенности. Обычная модель напишет «код» — и вы не узнаете, выбрала она с трудом или это было очевидно.
- Ответы сравнимы между собой. Модель откалибрована так, чтобы 0,7 в одном вопросе значило примерно то же, что 0,7 в другом. Это позволяет задать общий порог на всё приложение, а не подбирать его заново под каждый промпт.
- Вопросов может быть много, и они не мешают друг другу. Десяток вопросов уходит одним запросом и стоит почти столько же, сколько один: платите вы за состояние, а его передали один раз.
| Языковая модель | Jev | |
|---|---|---|
| Что возвращает | текст или объект по схеме | число, метку, позицию на шкале |
| Уверенность | нет, либо имитируется словами | отдельное поле плюс распределение |
| Сравнимость ответов | промпт-зависимая | калибрована между вопросами |
| Десять вопросов | десять запросов или один длинный промпт | один запрос, цена почти та же |
| Типичное время | секунды | сотни миллисекунд |
| Может написать письмо | да | нет, и не пытается |
Три типа вопросов
Весь язык общения с Jev — это три типа. Ниже настоящие запросы и настоящие ответы: мы прогнали их через OpenRouter своим ключом.
noul — вероятность того, что утверждение верно
Вы формулируете утверждение, модель возвращает число от нуля до единицы. Не «да/нет», а именно вероятность.
Запрос: одно утверждение
{
"model": "~typesafe/jev-latest",
"state": { "сообщение": "Перепиши этот SQL, чтобы он не делал seq scan" },
"questions": {
"нужен_поиск_в_интернете": {
"type": "noul",
"instructions": "Чтобы ответить, нужны свежие данные из интернета."
}
}
}Ответ
{
"model": "typesafe/jev-1.13-20260917",
"answers": {
"нужен_поиск_в_интернете": { "type": "noul", "noul": 0.08 }
},
"usage": { "input_tokens": 279, "cost": 0.000011718 }
}Ключи вопросов могут быть на русском — мы проверили, кириллица проходит и в ключах, и в описаниях, и в состоянии.
choice — выбор одного варианта из объявленных
Варианты перечисляются в поле criteria, и это именно объект: ключ — сам вариант, значение — описание, по которому его следует узнавать.
Запрос: выбор из четырёх
"тип_задачи": {
"type": "choice",
"instructions": "К какому типу относится новое сообщение.",
"criteria": {
"код": "программирование, SQL, отладка, архитектура",
"текст": "письмо, статья, перевод, редактура",
"анализ": "разбор данных, расчёты, выводы",
"болтовня":"простой разговор, короткий вопрос"
}
}Ответ: метка, распределение и уверенность
"тип_задачи": {
"type": "choice",
"choice": "код",
"probabilities": { "код": 1, "текст": 0, "анализ": 0, "болтовня": 0 },
"confidence": 1
}score — позиция на упорядоченной шкале
Здесь criteria — массив строк, упорядоченный снизу вверх. Модель возвращает непрерывное число, распределение по ступеням и расшифровку шкалы.
Запрос: насколько глубоко думать
"глубина_раздумий": {
"type": "score",
"instructions": "Насколько глубоко модель должна обдумывать ответ.",
"criteria": [
"Отвечать сразу, думать не нужно",
"Немного подумать",
"Думать долго и тщательно"
]
}Ответ
"глубина_раздумий": {
"type": "score",
"score": 1.78,
"probabilities": { "0": 0.02, "1": 0.18, "2": 0.80 },
"legend": { "0": "Отвечать сразу...", "1": "Немного подумать", "2": "Думать долго..." },
"confidence": 0.66
}Обратите внимание: 1,78 — не одна из ступеней, а взвешенная позиция между ними. Это удобнее метки: порог можно поставить там, где вам нужно, а не там, где проходит граница ступени.
Сколько стоит и как быстро отвечает
У OpenRouter есть Jev Lab — витрина из семи живых рецептов, у каждого указаны объём, время и цена прогона. Это первоисточник, а не чьи-то замеры.
| Сценарий | Объём | Время | Цена |
|---|---|---|---|
| Разбор обращений в поддержку | 475 ответов | 1,2 с | 0,0014 $ |
| Одобрение действий агента | 96 проверок | 0,5 с | 0,0004 $ |
| Извлечение полей из документа | 12 полей | 0,6 с | 0,0002 $ |
| Вопросы из промпта (Jev и Haiku) | 380 ответов | 2 с | 0,0025 $ |
| Фильтр ленты | 40 постов | 0,5 с | 0,0003 $ |
| Проверка формы заказа | 8 ответов | 300 мс | 0,0001 $ |
| Игра в догонялки | 2–3 хода в секунду | непрерывно | 0,16 $ в час |
Главное в этой таблице — не цены, а то, как время относится к объёму. 475 ответов за 1,2 секунды и 8 ответов за 300 миллисекунд: рост объёма в шестьдесят раз стоит четырёхкратного роста времени. Значит, экономить вопросы бессмысленно, а вот сливать их в один запрос — необходимо.
Наш замер
Мы собрали реальный сценарий маршрутизации: в состоянии — новое сообщение пользователя, текущая модель чата и тема предыдущего разговора; вопросов шесть. Восемь запросов подряд с нашего сервера, через наш прокси.
| Вопрос | Ответ |
|---|---|
| нужна модель сильнее | 0,67 |
| тип задачи | код (уверенность 1) |
| глубина раздумий | 1,78 из 2 (уверенность 0,66) |
| сменилась тема | 0,98 |
| нужен поиск в интернете | 0,08 |
| нужен запуск кода | 0,61 |
Разговор в нашем состоянии действительно перескочил с выбора шрифта для лендинга на оптимизацию SQL — смену темы модель оценила в 0,98. Поиск в интернете для такой задачи не нужен, и это 0,08. Цена всего запроса — 0,000038 доллара, то есть меньше четырёх тысячных цента.
Время: от 495 до 785 миллисекунд, ни одного сбоя на шестнадцати запросах. Это с российского сервера через прокси; рецепт Jev Lab с формой заказа укладывается в 300 миллисекунд, и разница здесь — дорога, а не модель.
Два эндпоинта, и разница между ними важна
Jev доступен через OpenRouter по двум адресам с одинаковым форматом запроса.
- System One API — https://openrouter.ai/api/v1/systemone. Стабильный путь, его использует официальный SDK TypeSafe: достаточно подставить в клиент базовый адрес https://openrouter.ai/api и ключ OpenRouter.
- Decisions API — https://openrouter.ai/api/alpha/decisions. Маршрутизатор решений OpenRouter, помечен как альфа.
У нас оба отработали восемь запросов из восьми. Но в запросе на поддержку Jev в библиотеке pydantic-ai автор сообщает, что примерно 15% вызовов альфа-эндпоинта зависали на таймауте чтения. Шестнадцати наших запросов слишком мало, чтобы это опровергнуть. Вывод простой: в боевом коде берите стабильный путь, и в любом случае ставьте таймаут и повтор.
Чего Jev не умеет
- Не пишет текст. Ни абзаца, ни строчки кода, ни короткого резюме.
- Не вызывает инструменты и не решает, что делать дальше. Последовательность шагов — ваш код.
- Помнит немного: контекст 32 000 токенов. Длинный документ придётся резать самому.
- Отвечает ровно на то, что спросили. Не спросили — не подскажет: у модели нет права дополнить ответ от себя.
Есть ли Jev в СуперИнтеллекте
В каталоге моделей чата Jev нет, и это не упущение. Чат — это ответ словами, а Jev слов не производит: выбрать его моделью диалога так же осмысленно, как выбрать термометр в качестве собеседника. В каталоге платформы он не появится.
Настоящее место таких моделей — служебный слой, который пользователь не видит: подобрать модель под запрос, решить, нужен ли поиск в интернете, проверить действие агента до выполнения. Мы этот слой изучаем и прогоняем замеры, часть которых приведена выше. Как только из этого выйдет что-то, что стоит включать, мы напишем об этом в истории обновлений.
Как попробовать за пять минут
Нужен только ключ OpenRouter. Вот полностью рабочий запрос — подставьте свой ключ и выполните.
curl: два вопроса одним запросом
curl https://openrouter.ai/api/v1/systemone \
-H "Authorization: Bearer $OPENROUTER_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"model": "~typesafe/jev-latest",
"state": { "отзыв": "Заказ ехал две недели, менеджер не отвечал" },
"questions": {
"негатив": {
"type": "noul",
"instructions": "Отзыв отрицательный."
},
"тема": {
"type": "choice",
"instructions": "О чём жалуется клиент.",
"criteria": {
"доставка": "сроки, потеря, повреждение посылки",
"поддержка": "не отвечают, грубят, футболят",
"товар": "качество или комплектация"
}
}
}
}'В ответе будет вероятность негатива, выбранная тема и распределение по всем трём вариантам. Дальше начинается самое интересное — какие именно вопросы задавать и как складывать ответы в решение. Об этом вторая статья.
Разобрали, что такое Jev и как устроен его протокол. В продолжении — семь сценариев с живыми цифрами и правила, по которым вопросы стоит проектировать.



