У меня есть небольшой конвейер, который я называю Лабораторией. Всё интересное за день (рилсы, посты, ссылки на репозитории) я сохраняю в Telegram. Раз в сутки скрипт забирает новое, и Claude Sonnet пишет по каждому материалу разбор-инструкцию. Потом второй проход в роли редактора решает, публиковать разбор или отправить в архив.
Беда в том, что сохраняю я всё подряд. В Избранном вперемешку лежат полезные гайды, мои рабочие сообщения, личное и картинки без единого слова. Когда я разметил 67 материалов, лишними для блога оказались 28. И на каждый такой Sonnet честно писал полный разбор, который редактор потом выкидывал.
Sonnet у меня работает через подписку Claude Code, так что экономлю я здесь не столько деньги, сколько недельный лимит. Однажды он кончился посреди недели, и всё, что на нём держалось, молча встало. Поэтому хотелось дёшево отсеивать очевидный мусор ещё до большой модели.
Что такое Jev
Jev выпустил стартап TypeSafe 15 сентября 2026 года. Это модель для закрытых вопросов: вы присылаете текст и словарь вопросов, а назад получаете значения с вероятностями вместо абзаца текста. Типов вопросов три:
noulвозвращает вероятность «да» от 0 до 1;choiceвыбирает из вашего списка (до 255 вариантов) и отдаёт вероятность каждого варианта плюсconfidence;scoreоценивает по упорядоченной шкале.
Все вопросы про один текст считаются за один проход. Вход стоит $0,042 за миллион токенов, выход бесплатный, потому что текста на выходе нет.
Для меня главное вот что: ответ всегда из моего списка, его не надо разбирать регулярками, а вероятность можно сравнить с порогом обычным if. Правильность ответа при этом никто не обещает. По замерам самой TypeSafe ответы Jev совпадают с эталоном из больших моделей примерно в двух случаях из трёх (68%).
Как я к нему подключился
Когда я пробовал, TypeSafe новых пользователей не регистрировала. Зато Jev есть в Cloudflare Workers AI под именем typesafe/jev, с пометкой Zero data retention. Там две особенности:
платить можно только с предоплаченного баланса AI Gateway: бесплатный лимит Workers AI на партнёрские модели не распространяется, и без баланса прилетает
Insufficient balanceс кодом 2021;ответ лежит на уровень глубже, чем в документации TypeSafe:
result.result.answers.
Вызов выглядит так:
curl https://api.cloudflare.com/client/v4/accounts/$CLOUDFLARE_ACCOUNT_ID/ai/run \ -H "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "model": "typesafe/jev", "input": { "state": "текст материала", "questions": { "urgency": {"type": "noul", "instructions": "Сообщение срочное?"} } } }'
Русский язык Jev понимает нормально, вопросы и варианты я пишу по-русски.
Урок первый: формулировка важнее модели
До Лаборатории я пробовал Jev на другой задаче: отсеивал факты для своей базы знаний. Первый вопрос был общий, что-то вроде «это полезный факт?». На размеченном наборе он дал AUC 0,46, то есть хуже монетки.
Потом я переписал вопрос так, чтобы в нём была настоящая причина, по которой факт мне не нужен: «это про реальный мир, а не правка документа или технические детали». Та же модель, те же тексты, и AUC вырос до 0,95.
А вот на вкусовых решениях (какие из моих правок стоит запомнить как правило) выше 0,72–0,77 подняться не получилось. Там Jev годится разве что как очень осторожный предфильтр.
Отсюда правило, которое я перенёс в Лабораторию: не спрашивать модель про «полезность» вообще, а перечислить настоящие причины, по которым материал уходит в архив.
Вопрос для Лаборатории
Вместо нескольких вопросов «да/нет» здесь один choice, где варианты исключают друг друга. Они повторяют реальные причины отказов из журнала редактора (текст сокращён):
"worth": { "type": "choice", "instructions": "Это сохранёнка из Telegram. Выбери, что это за материал " "для внешнего блога гайдов про AI-инструменты, автоматизацию, контент и дизайн.", "criteria": { "guide": "Показан или назван конкретный инструмент, сервис, репозиторий, промпт, " "скилл, настройка или рабочий приём, который читатель может найти и повторить сам. " "Считается, даже если это реклама или приманка «напиши слово в комментах»", "idea": "Схема, фреймворк, формула или пошаговая модель, которую можно разложить " "читателю по пунктам, даже если инструмент не назван", "no_text": "Текста и речи почти нет: только ссылка, картинка или фото", "owner_work": "Рабочее самого владельца: его сообщение коллеге, вопрос про оплату, " "черновик его поста, ссылка на его собственный продукт", "personal": "Личное, не про работу с AI: спорт, семья, здоровье, быт", "no_method": "Мнение, тезис, реклама или новость без инструмента, приёма или схемы", }, },
Оговорка «считается, даже если это реклама» нужна, потому что много полезного в соцсетях упаковано в приманку «напиши слово в комментах, пришлю гайд». По форме это реклама, а по сути там как раз инструмент, который читатель может повторить.
Вероятность «оставить» считается как сумма вероятностей двух вариантов:
def p_keep(worth: dict) → float: if not has_answer(worth): # пустой ответ = оставить, а не выкинуть return 1.0 probs = worth.get("probabilities") or {} if probs: return sum(float(probs.get(k, 0) or 0) for k in ("guide", "idea")) return 1.0 if worth.get("choice") in ("guide", "idea") else 0.0
Если p_keep ниже порога, материал до Sonnet не доходит.
Как выбирал порог
Сначала я проверил порог на тех же 67 размеченных материалах. На пороге 0,2 Jev не выкинул ни одного хорошего и отсеял 10 из 28 лишних. Это всего треть мусора, но я сознательно оставил порог таким. Пропущенный мусор стоит одного лишнего разбора, редактор его всё равно выкинет. А выкинутый хороший материал я просто никогда не увижу и даже не узнаю, что он был.
Потом неделю Jev работал в тени: отвечал и писал ответ в журнал, но ничего не отсеивал. С 26 сентября по 3 октября пришло 19 свежих материалов. Jev отсеял бы девять. Восемь из них Sonnet и так выкинул (аффирмации, тестовые сообщения, служебные выгрузки), девятый просто не успели разобрать. Все пять хороших материалов получили от Jev не меньше 0,73.
С 4 октября отсев включён по-настоящему.
Предохранители
Отсев устроен так, чтобы при любом сбое материал уходил к большой модели:
нет ответа: материал остаётся;
таймаут или ошибка Jev: отсева нет, всё идёт в Sonnet;
порог за пределами от 0 до 0,4 код не принимает и шлёт алерт, чтобы случайная правка конфига не начала резать всё подряд;
если материалов пришло аномально много, отсев не срабатывает вообще: такой всплеск обычно означает сбой где-то выше по конвейеру;
ответы кешируются по хешу текста и версии вопроса, так что за повторный прогон того же материала платить не нужно;
отсеянный материал можно вернуть одной командой.
Что показал журнал
С 26 сентября по 6 октября в журнале 26 вызовов. Все вместе они стоили $0,0028, то есть около сотой доли цента за вызов, на текстах от 90 до 3100 знаков.
Из Москвы ответ идёт заметно дольше заявленных 70–500 мс (TypeSafe мерила с ноутбуков на Западном побережье США). Медиана у меня 1,3 секунды. Первый вызов в каждом прогоне занимает от 2 до 9 секунд, следующие обычно укладываются в полторы. Ночному конвейеру это неважно, а для интерактивных сценариев я бы замерил отдельно.
В первом боевом прогоне 5 октября Jev отсеял один материал, медиафайл почти без текста, с вероятностью 0,01 (ответ взят из журнала тени, второй раз за него не платили). В деньгах экономия смешная, а по лимиту заметная: раньше каждый такой материал съедал полный разбор Sonnet и ещё проход редактора.
Где Jev не годится
Открытые задачи и всё, где нужно объяснение человеческим языком. Это по-прежнему работа LLM.
Вкусовые решения без чётких признаков. Мои AUC 0,72–0,77 тому пример.
Счёт, даты и длинный шумный текст. На официальной странице слабых мест так и написано: модель читает вопрос буквально, плохо считает и путается в датах.
Чувствительные данные. Тексты уходят в американский сервис, даже если ходить через Cloudflare, поэтому что туда отправлять, лучше решить заранее.
В общем, Jev хорош там, где одна и та же мелкая развилка повторяется много раз, у неё есть понятные признаки, а ошибка в одну сторону обходится дешевле, чем в другую. У меня это отсев перед дорогой моделью. Через пару недель пересчитаю порог на свежей разметке, посмотрим, можно ли его поднять.
DoomeR18G
Облегчил себе работу контентмейкера интересным способом. Молодцом.