- BrainTools - https://www.braintools.ru -
Все кому не лень говорят о Jev [1]. Jev тут, Jev там. Все в Twitter только и говорят о Jev, что это следующее достижение больших языковых моделей и парадигмы ИИ. Мы в этом не уверены. Поэтому вот Jev за 25 строк на Python.
Загрузим модель.
# /// script
# requires-python = ">=3.12"
# dependencies = ["huggingface-hub", "llama-cpp-python", "numpy"]
# ///
import numpy
from llama_cpp import Llama
# Really, you can use any GGUF model from https://huggingface.co/models?library=gguf
model = Llama.from_pretrained(
repo_id="Qwen/Qwen3-0.6B-GGUF",
filename="Qwen3-0.6B-Q8_0.gguf",
n_ctx=512,
logits_all=True,
verbose=False,
)
Подготовим промпт и укажем варианты.
labels = ["A", "B", "C"]
choices = ["Legitimate", "Spam", "Phishing"]
email = "Payroll asks for your password on a non-company sign-in page."
options = "n".join(
f"{label}. {choice}" for label, choice in zip(labels, choices, strict=True)
)
prompt = f"""<|im_start|>system
Choose one option.<|im_end|>
<|im_start|>user
Email: {email}nn{options}<|im_end|>
<|im_start|>assistant
<think>nn</think>nn"""
model.eval(tokens=model.tokenize(text=prompt.encode(), add_bos=False, special=True))
Выжмем из логитов вероятности. (прим. перев.: логиты — сырые, ненормированные оценки для каждого варианта ответа).
logits = model.scores[model.n_tokens - 1]
token_ids = [model.tokenize(text=label.encode(), add_bos=False)[0] for label in labels]
choice_logits = numpy.asarray([logits[token_id] for token_id in token_ids])
logprobs = choice_logits - numpy.logaddexp.reduce(choice_logits)
probabilities = numpy.exp(logprobs)
for name, scores in (
("Logits", choice_logits),
("Log probabilities", logprobs),
("Probabilities", probabilities),
):
values = numpy.round(scores.astype(float), 3).tolist()
print(f"{name}:", dict(zip(choices, values, strict=True)))
# Logits: {'Legitimate': 26.254, 'Spam': 27.262, 'Phishing': 29.614}
# Log probabilities: {'Legitimate': -3.482, 'Spam': -2.474, 'Phishing': -0.122}
# Probabilities: {'Legitimate': 0.031, 'Spam': 0.084, 'Phishing': 0.885}
Вот. Это и есть Jev.
Да, мы в курсе.
Мы не называем это моделью решений System One [1].
Мы не вызывали API.
Мы не создавали тонны синтетических данных.
Мы не обучали модель методом обучения с подкреплением для калиброванных решений (Reinforcement Learning for Calibrated Decisions, RLCD) [1], чтобы откалибровать решения и вероятности (хотя они и не всегда правильные [2]).
Он классифицирует: получает промпт с вариантами и возвращает вероятности.
Он быстрый.
Он локальный.
Ваши данные никуда не отправляются.
А нам нравится никуда не отправлять ваши данные. Попробуйте NobodyWho [3].
(заметка: это пародийный пост, вот ссылки на более полные открытые реализации Jev: OpenJev [4], openjev-sglang [5] и OpenJev on DiffusionGemma [6].)
Всё, что делает NobodyWho, — опенсорс, поставьте нам звезду на GitHub [3], чтобы поддержать нас ❤️
Опубликовано 22 сентября 2026 года, автор — Duarte O.Carmo
Автор: ARad
Источник [7]
Сайт-источник BrainTools: https://www.braintools.ru
Путь до страницы источника: https://www.braintools.ru/article/35933
URLs in this post:
[1] Jev: https://typesafe.ai/blog/introducing-system-one-models-and-jev
[2] не всегда правильные: https://arcturus-labs.com/blog/2026/09/16/typesafes-jev-trades-text-generation-for-instant-calibrated-decisions/
[3] NobodyWho: https://github.com/nobodywho-ooo/nobodywho
[4] OpenJev: https://openjev.com/
[5] openjev-sglang: https://github.com/ekzhang/openjev-sglang
[6] OpenJev on DiffusionGemma: https://github.com/razorback16/openjev
[7] Источник: https://habr.com/ru/articles/1085890/?utm_source=habrahabr&utm_medium=rss&utm_campaign=1085890
Нажмите здесь для печати.