# 用25行Python代码实现Jev：一个本地运行的分类概率模型

- 来源：Hacker News 热门（buzzing.cc 中文翻译）
- 作者：bashbjorn
- 发布时间：2026-09-23 17:18
- AIHOT 分数：47
- AIHOT 链接：https://aihot.news/items/cmudxd6qk0b8crogh5aduuxxe
- 原文链接：https://www.nobodywho.ai/posts/jev-in-25-lines

## AI 摘要

有人用25行Python代码复现了Jev：加载Qwen3-0.6B-GGUF模型，对提示词中的选项标签取logits并归一化为概率，示例中"Phishing"概率达0.885。作者称Jev本质是接收带选项的提示词并输出概率的分类器，速度快、本地运行、数据不外传。该文为戏仿博客，作者同时给出OpenJev等更完整的开源实现链接。

## 正文

Everyone and their mom is talking about Jev. Jev this, Jev that. Everyone on Twitter is all over Jev, how it's the next frontier of large language models and the AI paradigm. We don’t really think so. So here's Jev in 25 lines of Python.

Load the model.

# /// 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, )

Load the prompt and define your choices.

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}\n\n{options}<|im_end|> <|im_start|>assistant <think>\n\n</think>\n\n""" model.eval(tokens=model.tokenize(text=prompt.encode(), add_bos=False, special=True))

Massage the logits into probabilities.

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}

There. That’s Jev.

But no, you don’t understand Jev!

Yeah, we know.

We don't call it a System One decision model.

We didn’t call an API.

We didn't create a bunch of synthetic data.

We didn't train a model with Reinforcement Learning for Calibrated Decisions (RLCD) to calibrate the decisions and probabilities (even though they are not always correct).

But yes. This is Jev.

It classifies: it gets a prompt with choices and outputs probabilities.

It's fast.

It's local.

You don't send your data anywhere else.

And we like not sending your data anywhere else. Check out NobodyWho.

(note: this is a parody blog post, see these links for better/more complete open implementations of Jev: OpenJev, openjev-sglang, and OpenJev on DiffusionGemma.)
