Перейти к содержанию
Публикация AiManual

Jev от TypeSafe: классификатор или фильтр? Разбор 16 000 вызовов на открытых и внутренних данных

Автор прогнал Jev от TypeSafe через 16 000 вызовов: четыре открытых датасета, сравнение с gpt-5.4-mini и gpt-5.6-luna, затем несколько тысяч реальных решений. Р

Коротко

Что будет в материале

  1. 01

    Что такое Jev и почему это не очередная LLM

  2. 02

    Как проходил тест: 16 000 вызовов, четыре датасета и реальные процессы

  3. 03

    Результаты: где Jev выигрывает, а где проигрывает

  4. 04

    Jev как фильтр: как использовать его в связке с классификатором

Что такое Jev и почему это не очередная LLM

TypeSafe открыла ранний доступ к Jev 15 сентября. Компания называет модель первой «System One» для оценки утверждений и принятия решений. Логика работы такая: вы передаёте текст и вопрос с закрытым списком ответов, модель возвращает вероятности. Текста на выходе нет, поэтому нет и галлюцинаций в привычном смысле: придумать вариант, которого не было в вопросе, Jev не может. Как TypeSafe описывает этот подход и какие кейсы уже собраны у Vercel и Bryo AI, разобрано в материале про модель без текста на выходе.

Два типа вопросов: noul и choice

Тип noul, то есть вопрос «да/нет», возвращает одно число: вероятность ответа «да». Шкала читается буквально: 0,05 означает уверенное «нет», 0,95 - уверенное «да». Тип choice возвращает вероятность каждого варианта из предложенного списка, а вариантов в одном вопросе может быть до 255. В ответе на choice приходит и confidence, то есть уверенность в сделанном выборе.

Один вызов может содержать много вопросов сразу. Для экономики это важно: HTTP-запрос и передача контекста делятся между вопросами, и вы не платите за каждый вопрос отдельно.

Пример ответа на вопрос choice о тональности отзыва:

{
  "choice": "negative",
  "probabilities": {"negative": 0.97, "positive": 0.03},
  "confidence": 0.93,
  "usage": {"input_tokens": 336},
  "model": "jev-1.13.0"
}

Код запросов и полные таблицы автор приводит в переводе разбора на Habr.

Confidence: что это и почему ему не всегда можно верить

TypeSafe не объясняет, как вычисляется confidence. Из примера выше видно, что это не максимальная вероятность: там значения 0,93 и 0,97 соответственно. На открытых датасетах отбор по максимальной вероятности дал ту же картину, что и отбор по confidence, с расхождением в пределах одного процентного пункта. Практический вывод: считать confidence отдельным сигналом смысла мало, для фильтрации хватает вероятности.

Дальше в статье под «уверенным ответом» понимается значение не дальше 0,1 от одного из концов диапазона для вопросов «да/нет» (то есть 0-0,1 или 0,9-1,0) либо значение от 0,9 для выбора одного варианта.

Как проходил тест: 16 000 вызовов, четыре датасета и реальные процессы

Тест провёл Aman Kumar, на него ушло два дня и около 16 000 вызовов. Сначала Jev проверялся на четырёх открытых датасетах для классификации, где на те же вопросы отвечали две небольшие модели OpenAI: gpt-5.4-mini и gpt-5.6-luna. Затем проверка шла на нескольких тысячах реальных решений из рабочих процессов автора. Правильность оценивалась по тому, что произошло на самом деле, а не по мнению другой модели: LLM-судья добавил бы к результату собственный шум и предпочтения. Исходные данные с разбивкой по наборам опубликованы на Habr.

Открытые датасеты: Enron, SST-2, AG News, Banking77

Четыре набора подобраны так, чтобы покрыть разные типы классификации:

  • Enron - классификация email-сообщений;
  • SST-2 - бинарная классификация тональности коротких текстов;
  • AG News - тематическая классификация новостей;
  • Banking77 - определение интента в банковских запросах с 77 категориями.

Все четыре набора состоят из коротких текстов с чёткими метками. Это условие, при котором результаты вообще можно сравнивать: на таких данных задача сводится к выбору из закрытого списка, без генерации и без длинного контекста. На синтетическом бенчмарке с произвольными формулировками картина была бы другой.

Внутренние данные: несколько тысяч реальных решений

Вторая часть проверки - несколько тысяч решений из реальных рабочих процессов. Правильность здесь оценивалась по фактическому исходу: сработала ли маршрутизация, попал ли запрос в нужную категорию, подтвердилось ли решение дальше. Такой подход грязнее прогона по эталонной разметке, зато показывает поведение модели там, где метки размыты, а цена ошибки различается от случая к случаю. Именно на этих данных проявилась основная закономерность: на длинных входах и неоднозначных категориях точность и уверенность падают вместе.

Результаты: где Jev выигрывает, а где проигрывает

Сводка по открытым датасетам: на классификации коротких текстов Jev не уступает gpt-5.4-mini и gpt-5.6-luna или превосходит их на трёх наборах из четырёх, при меньшей стоимости и меньшей задержке.

Три из четырёх: где Jev обошёл небольшие LLM

Логика выигрыша предсказуема. Когда текст короткий, метка одна, а список вариантов закрыт, генеративной модели нечего делать: она так же сводит задачу к выбору одного варианта, но тратит токены на преамбулы и объяснения. Jev выбирает напрямую и возвращает число. Там, где метки не пересекаются, например в бинарной тональности, формат работает без потерь.

Задержка и цена при этом ниже, и это уже аргумент не про качество ответа, а про стоимость решения. Разбивка по конкретным наборам приведена в исходном разборе.

Где точность и уверенность падают одновременно

Длинные входы и размытые метки ломают картину. Типичные примеры: письмо, где тема размазана по абзацам; категории с пересекающимся смыслом; запросы, в которых смешаны два интента. Здесь точность падает, и одновременно падает уверенность: низкая вероятность почти всегда сопровождает ошибку. Такое поведение полезно для пайплайна, потому что слабые ответы отсекаются по числу, а не по самооценке модели.

Что делать с этим практически: не строить на Jev классификацию длинных документов, не ждать роста точности при пересекающихся категориях и всегда держать вторую ступень для середины диапазона.

Jev как фильтр: как использовать его в связке с классификатором

Главный вывод теста: Jev работает как отсеивающий фильтр перед существующим классификатором, а не как его замена. Уверенные ответы у краёв диапазона можно принимать сразу, середину передавать более сильной модели. Нагрузка на дорогую модель падает, обработка ускоряется, а качество на принятой части остаётся под контролем.

Схема пайплайна: Jev → порог → LLM

Схема состоит из трёх шагов:

  1. Текст и вопрос с вариантами уходят в Jev. Если вопросов несколько, они объединяются в один вызов.
  2. Ответ разбирается по порогам: значение у края диапазона принимается как финальное решение.
  3. Всё, что попало в середину, уходит сильной модели, текущему классификатору или человеку на разбор.
Зона вероятностиДействиеПочему так
0-0,1 или 0,9-1,0 для noul, от 0,9 для choiceПринять ответ JevОтвет идёт на выход без вызова дорогой модели
0,1-0,9Передать сильной модели или на ручную проверкуНа длинных текстах и размытых метках падают и точность, и уверенность

Технически это встраивается в существующие пайплайны: для LangChain есть TypeSafeClassifier и готовые middleware, включая маршрутизацию моделей и блокировку рискованных вызовов инструментов до их выполнения. Как это устроено, разобрано в материале про System One модель, LangChain и middleware.

Как подобрать пороги отбрасывания на своих данных

Универсальных порогов нет: они зависят от задачи, длины текстов и того, насколько метки пересекаются. Методика подбора выглядит так:

  1. Возьмите размеченную выборку из своей задачи, минимум несколько сотен примеров, лучше больше.
  2. Прогоните её через Jev и сохраните вероятность и confidence по каждому примеру.
  3. Постройте распределение значений и посмотрите, как меняется точность на принятых ответах при разных порогах.
  4. Выберите порог, при котором точность на принятой части близка к целевой, а доля отброшенных запросов укладывается в бюджет по стоимости и задержке.
  5. Проверьте выбранный порог на отложенной выборке: на тренировочной он почти всегда выглядит лучше, чем есть на самом деле.

Отдельно посмотрите на калибровку: если модель на ваших данных переоценивает уверенность, порог придётся сдвинуть ближе к краям. Расхождение между confidence и максимальной вероятностью в пределах одного процентного пункта, которое автор увидел на открытых датасетах, упрощает отбор: достаточно смотреть на вероятность. На своих данных это стоит перепроверить, а не переносить как готовую настройку.

Сколько это стоит и насколько быстро работает

Один вызов Jev с ноутбука автора занял 850 мс и стоил $0,000014: 336 входных токенов по $0,042 за миллион. Выход бесплатный, поскольку выходных токенов нет: модель возвращает числа, а не текст. Детали тарификации есть в исходном разборе.

Сравнение с небольшими LLM складывается в пользу Jev там, где задача сводится к выбору из списка. У генеративной модели оплачиваются и вход, и выход, а на классификации выход небесплатный: она пишет пусть короткое, но объяснение. У Jev платный только вход, и при 336 токенах на запрос цена одного решения измеряется миллионными долями доллара.

Ориентир по другому сценарию, где Jev выступает судьёй: 0,44 с и $0,00035 за вызов, тогда как LLM-судьи на той же задаче обходились от $0,39 до $28,17. Разбор с этими цифрами приведён в материале про Jev-as-a-judge.

Экономия растёт на объёме. Если фильтр принимает уверенную часть ответов, сильная модель вызывается только для середины диапазона, и её счёт падает пропорционально доле отброшенных запросов. При больших потоках и простых задачах этот эффект важнее абсолютной цены одного вызова Jev.

Ограничения и риски: когда Jev не стоит использовать

  • Длинные тексты и размытые метки. Точность и уверенность падают одновременно, доля середины растёт, и экономия от фильтрации исчезает.
  • Непрозрачный confidence. TypeSafe не объясняет, как он вычисляется, и он не равен максимальной вероятности. Строить на нём бизнес-логику без собственной проверки рискованно.
  • Нет генерации и объяснений. Если после решения нужен текст, обоснование или извлечение сущностей из ответа, Jev такую задачу не закрывает.
  • Чужие пороги не работают. Значения, снятые с открытых датасетов, плохо переносятся на другой домен: их нужно подбирать по своим размеченным данным и проверять на отложенной выборке.
  • Jev не заменяет классификатор целиком. На пересекающихся категориях без второй ступени часть ошибок уйдёт на выход вместе с «уверенными» ответами.

Если нужен полный контроль над моделью и локальный запуск вместо внешнего API, есть путь дообучения открытой модели под похожие типизированные решения: энтузиаст собрал аналог Jev на Qwen3.5 4B за пару часов аренды GPU, и разбор с метриками и ограничениями лежит в материале про LoRA-файнтюнинг. До уровня Jev тот результат пока не дошёл.

Итог: кому и как использовать Jev

Jev работает фильтром перед классификатором. На коротких текстах с чёткими метками он дешевле и быстрее небольших LLM и держится с ними наравне или впереди. Уверенные ответы у краёв диапазона можно принимать сразу, середину передавать более сильной модели. Экономия заметна при больших объёмах и простых задачах, где доля уверенных ответов высока.

Практический старт: возьмите размеченную выборку из своей задачи, прогоните её через Jev, постройте распределение вероятностей, подберите пороги под целевую точность и сравните схему с текущим решением на отложенных данных. Ранний доступ к Jev открыт с 15 сентября.

Подписаться на канал