- BrainTools - https://www.braintools.ru -
У меня есть небольшой конвейер, который я называю Лабораторией. Всё интересное за день (рилсы, посты, ссылки на репозитории) я сохраняю в Telegram. Раз в сутки скрипт забирает новое, и Claude Sonnet пишет по каждому материалу разбор-инструкцию. Потом второй проход в роли редактора решает, публиковать разбор или отправить в архив.
Беда в том, что сохраняю я всё подряд. В Избранном вперемешку лежат полезные гайды, мои рабочие сообщения, личное и картинки без единого слова. Когда я разметил 67 материалов, лишними для блога оказались 28. И на каждый такой Sonnet честно писал полный разбор, который редактор потом выкидывал.
Sonnet у меня работает через подписку Claude Code, так что экономлю я здесь не столько деньги, сколько недельный лимит. Однажды он кончился посреди недели, и всё, что на нём держалось, молча встало. Поэтому хотелось дёшево отсеивать очевидный мусор ещё до большой модели.
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.
А вот на вкусовых [1] решениях (какие из моих правок стоит запомнить как правило) выше 0,72–0,77 подняться не получилось. Там Jev годится разве что как очень осторожный предфильтр.
Отсюда правило, которое я перенёс в Лабораторию: не спрашивать модель про «полезность» вообще, а перечислить настоящие причины, по которым материал уходит в архив.
Вместо нескольких вопросов «да/нет» здесь один choice, где варианты исключают друг друга. Они повторяют [2] реальные причины отказов из журнала редактора (текст сокращён):
"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 октября отсев включён по-настоящему.
Отсев устроен так, чтобы при любом сбое материал уходил к большой модели:
нет ответа: материал остаётся;
таймаут или ошибка [3] Jev: отсева нет, всё идёт в Sonnet;
порог за пределами от 0 до 0,4 код не принимает и шлёт алерт, чтобы случайная правка конфига не начала резать всё подряд;
если материалов пришло аномально много, отсев не срабатывает вообще: такой всплеск обычно означает сбой где-то выше по конвейеру;
ответы кешируются по хешу текста и версии вопроса, так что за повторный прогон того же материала платить не нужно;
отсеянный материал можно вернуть одной командой.
С 26 сентября по 6 октября в журнале 26 вызовов. Все вместе они стоили $0,0028, то есть около сотой доли цента за вызов, на текстах от 90 до 3100 знаков.
Из Москвы ответ идёт заметно дольше заявленных 70–500 мс (TypeSafe мерила с ноутбуков на Западном побережье США). Медиана у меня 1,3 секунды. Первый вызов в каждом прогоне занимает от 2 до 9 секунд, следующие обычно укладываются в полторы. Ночному конвейеру это неважно, а для интерактивных сценариев я бы замерил отдельно.
В первом боевом прогоне 5 октября Jev отсеял один материал, медиафайл почти без текста, с вероятностью 0,01 (ответ взят из журнала тени, второй раз за него не платили). В деньгах экономия смешная, а по лимиту заметная: раньше каждый такой материал съедал полный разбор Sonnet и ещё проход редактора.
Открытые задачи и всё, где нужно объяснение человеческим языком. Это по-прежнему работа LLM.
Вкусовые решения без чётких признаков. Мои AUC 0,72–0,77 тому пример.
Счёт, даты и длинный шумный текст. На официальной странице слабых мест так и написано: модель читает вопрос буквально, плохо считает и путается в датах.
Чувствительные данные. Тексты уходят в американский сервис, даже если ходить через Cloudflare, поэтому что туда отправлять, лучше решить заранее.
В общем, Jev хорош там, где одна и та же мелкая развилка повторяется много раз, у неё есть понятные признаки, а ошибка в одну сторону обходится дешевле, чем в другую. У меня это отсев перед дорогой моделью. Через пару недель пересчитаю порог на свежей разметке, посмотрим, можно ли его поднять.
Автор: user230620
Источник [4]
Сайт-источник BrainTools: https://www.braintools.ru
Путь до страницы источника: https://www.braintools.ru/article/36848
URLs in this post:
[1] вкусовых: http://www.braintools.ru/article/6291
[2] повторяют: http://www.braintools.ru/article/4012
[3] ошибка: http://www.braintools.ru/article/4192
[4] Источник: https://habr.com/ru/articles/1093512/?utm_source=habrahabr&utm_medium=rss&utm_campaign=1093512
Нажмите здесь для печати.