18 сентября 2026 года TypeSafe выпустила Jev — модель, которая не написала ни одной строчки текста и не собирается. Вы передаёте ей состояние и список вопросов с заранее объявленным типом ответа, она возвращает число, метку или позицию на шкале. Всё. Для большой доли задач, которые сегодня решают языковыми моделями, этого достаточно — и обходится в тысячные доли цента.

Что такое System One

Название прозрачно отсылает к двум системам мышления: быстрой, автоматической — и медленной, рассуждающей. Большие языковые модели устроены как вторая: они думают вслух, перебирают варианты, пишут абзац там, где нужно одно «да». Это прекрасно, когда ответ и должен быть текстом. И это чистая растрата, когда от модели нужно одно решение из трёх.

System One — попытка закрыть вторую половину. Модель этого класса не рассуждает вслух и не выбирает, что делать дальше. Она отвечает на узкий вопрос о том, что ей показали, и отвечает мгновенно. Управляющая логика при этом остаётся в вашем коде — это, пожалуй, главная мысль всего руководства TypeSafe, и к ней мы ещё вернёмся.

Чем это отличается от «попросить GPT вернуть JSON»

Приём знаком каждому: описываешь схему, включаешь structured output, получаешь объект вместо прозы. Работает. Зачем тогда отдельная модель?

Разница в трёх вещах, и каждая из них меняет то, как вы пишете код вокруг.

  • Ответ — распределение, а не метка. Jev возвращает вероятности по всем вариантам и отдельную величину уверенности. Обычная модель напишет «код» — и вы не узнаете, выбрала она с трудом или это было очевидно.
  • Ответы сравнимы между собой. Модель откалибрована так, чтобы 0,7 в одном вопросе значило примерно то же, что 0,7 в другом. Это позволяет задать общий порог на всё приложение, а не подбирать его заново под каждый промпт.
  • Вопросов может быть много, и они не мешают друг другу. Десяток вопросов уходит одним запросом и стоит почти столько же, сколько один: платите вы за состояние, а его передали один раз.
Языковая модельJev
Что возвращаеттекст или объект по схемечисло, метку, позицию на шкале
Уверенностьнет, либо имитируется словамиотдельное поле плюс распределение
Сравнимость ответовпромпт-зависимаякалибрована между вопросами
Десять вопросовдесять запросов или один длинный промптодин запрос, цена почти та же
Типичное времясекундысотни миллисекунд
Может написать письмоданет, и не пытается
Обычная модель со structured output и 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 $ в час
Рецепты Jev Lab: объём, время, цена прогона

Главное в этой таблице — не цены, а то, как время относится к объёму. 475 ответов за 1,2 секунды и 8 ответов за 300 миллисекунд: рост объёма в шестьдесят раз стоит четырёхкратного роста времени. Значит, экономить вопросы бессмысленно, а вот сливать их в один запрос — необходимо.

Наш замер

Мы собрали реальный сценарий маршрутизации: в состоянии — новое сообщение пользователя, текущая модель чата и тема предыдущего разговора; вопросов шесть. Восемь запросов подряд с нашего сервера, через наш прокси.

ВопросОтвет
нужна модель сильнее0,67
тип задачикод (уверенность 1)
глубина раздумий1,78 из 2 (уверенность 0,66)
сменилась тема0,98
нужен поиск в интернете0,08
нужен запуск кода0,61
Шесть вопросов одним запросом, 902 входных токена

Разговор в нашем состоянии действительно перескочил с выбора шрифта для лендинга на оптимизацию SQL — смену темы модель оценила в 0,98. Поиск в интернете для такой задачи не нужен, и это 0,08. Цена всего запроса — 0,000038 доллара, то есть меньше четырёх тысячных цента.

Время: от 495 до 785 миллисекунд, ни одного сбоя на шестнадцати запросах. Это с российского сервера через прокси; рецепт Jev Lab с формой заказа укладывается в 300 миллисекунд, и разница здесь — дорога, а не модель.

Два эндпоинта, и разница между ними важна

Jev доступен через 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 и как устроен его протокол. В продолжении — семь сценариев с живыми цифрами и правила, по которым вопросы стоит проектировать.