Jev in 25 regels Python

Het model laden

# /// script
# requires-python = ">=3.12"
# dependencies = ["huggingface-hub", "llama-cpp-python", "numpy"]
# ///
import numpy
from llama_cpp import Llama

# Je kunt echt elk GGUF-model gebruiken van 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,
)

De prompt laden en de keuzes definiëren

labels = ["A", "B", "C"]
choices = ["Legitiem", "Spam", "Phishing"]
email = "Payroll vraagt om je wachtwoord op een niet-bedrijfsmatige inlogpagina."
options = "\n".join(
    f"{label}. {choice}" for label, choice in zip(labels, choices, strict=True)
)
prompt = f"""<|im_start|>system
Kies één optie.<|im_end|>
<|im_start|>user
E-mail: {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))

De logits omzetten naar kansen

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: {'Legitiem': 26.254, 'Spam': 27.262, 'Phishing': 29.614}
# Log probabilities: {'Legitiem': -3.482, 'Spam': -2.474, 'Phishing': -0.122}
# Probabilities: {'Legitiem': 0.031, 'Spam': 0.084, 'Phishing': 0.885}

Daar heb je het. Dat is Jev.

Maar nee, jij begrijpt Jev niet!

Ja, we weten het.

  • We noemen het geen System One-beslissingsmodel.
  • We hebben geen API aangeroepen.
  • We hebben geen hoop synthetische data gemaakt.
  • We hebben geen model getraind met Reinforcement Learning for Calibrated Decisions (RLCD) om de beslissingen en kansen te kalibreren (ook al zijn ze niet altijd correct).

Maar ja. Dit is Jev.

Het classificeert: het krijgt een prompt met keuzes en geeft kansen uit. Het is snel. Het is lokaal. Je verstuurt je gegevens nergens anders heen. En wij houden ervan om je gegevens nergens anders heen te sturen. Bekijk NobodyWho.

(Opmerking: dit is een parody-blogpost, zie deze links voor betere of completere open implementaties van Jev: OpenJev, openjev-sglang, en OpenJev op DiffusionGemma.)