A newer version of this model is available: chaoliangUNSW/Jev-Style-2B-Decision-v4-MLX

Jev-Style v3 is available — smaller and stronger: Jev-Style-0.8B-Decision-v3-MLX scores 79.2% on the 2,000 typed decisions (v1: 53.4%, v2: 73.5%, as reported on the v2 card), takes 25,600-token inputs, works across 51 languages and scores options without the 26-letter cap (tested with 77 options), all at 0.8B parameters. This repository preserves v1; v2 is here.

Jev-Style-Qwen3.5-2B-Decision (MLX, bf16)

Local classification, routing and fixed-choice scoring with JevStyle.

This is the archived v1 2B release (2026-09-21), maintained by Chaoliang Yan; it used no Jev outputs. It is kept for existing integrations and runs only through the client shipped in this repository: the jev-style package does not load it (it loads the v3 and v4 releases). The current recommended release is 2B v4 (text and images; trained in part on soft labels distilled from TypeSafe Jev 1.14 through its public API) and, for the smallest text model, 0.8B v3. JevStyle is independently maintained by Chaoliang Yan, with no TypeSafe affiliation or endorsement. Training provenance is release-specific.

Official local installation of the current releases — no hosted API key or agent simulation: python -m pip install -U "jev-style[torch]" and jev-style serve --release 2b (2B v4; --release 0.8b for the 0.8B v3), or python -m pip install -U "jev-style[mlx]" on Apple silicon for text. The package runs downloaded JevStyle weights on your machine. Step-by-step installation and verification. TypeSafe/OpenRouter Jev access and skills that simulate decisions with another agent model are separate execution paths.

Hosted service is separate from local inference. Hosted API: operational. It serves the 2B v4 (text only; 8,192-token context, inputs up to 8,000 tokens). There is currently no fixed per-account quota: no daily request count and no per-minute cap. Capacity is shared, so a busy server answers 429 with a Retry-After header and clients should retry. Check current service status or live health when using the hosted API.

Choose a workflow: Python text classification, local routing tools and Apple silicon, receipt or screenshot yes/no decisions, reproducible routing comparison. These guides distinguish suitable alternatives and published evidence; they do not establish universal superiority.

Website: jevstyle.com/models — all JevStyle decision models, benchmarks and quickstart in one place. This v1 repository runs through its own jev_style_mlx.py (below); the jev-style package does not load it.

A Jev-style decision model: it does not write text. Give it a state, a question and a list of options, and one forward pass returns the decision with calibrated probabilities - in 77 ms on an M1 Max.

GGUF builds (BF16 / Q8_0 / Q4_K_M) for LM Studio and llama.cpp: chaoliangUNSW/Jev-Style-Qwen3.5-2B-Decision-GGUF

Results

Everything below is measured on data the model never trained on, with the probabilities exactly as the released weights produce them (no post-processing).

Qwen3.5-2B-Base, zero-shot This model
Accuracy, 5 decision tasks (1,500 held-out examples) 65.9% 82.3%
Calibration error (ECE) on those tasks 0.065 0.017
Negative log-likelihood / Brier score 0.786 / 0.446 0.418 / 0.242
Calibration error on task types never seen in training 0.155 0.075
Latency per decision (M1 Max, MLX bf16) 76 ms 77 ms (no added cost)
  • Calibrated out of the box. An ECE of 0.017 on 1,500 examples is statistically indistinguishable from a perfectly calibrated model: simulating labels from the model's own probabilities gives an expected ECE of 0.017 (95th percentile 0.025) from sampling noise alone. When this model says 80%, it is right about 80% of the time.
  • Large accuracy gains where the base model struggled: MNLI 52.3% -> 86.7%, SST-5 32.0% -> 61.7%, BoolQ 73.0% -> 82.7%, SST-2 87.3% -> 92.7%, AG News 84.7% -> 87.7%.
  • Calibration transfers to new task types: on emotion classification and RTE (never seen in training) the calibration error is halved (0.155 -> 0.075) at unchanged accuracy (64.5%).
  • Zero-cost calibration. A temperature fitted on 4,366 held-out examples is folded into the final RMSNorm weight, so every logit is already calibrated. Nothing to apply at inference time.
  • Quantisation-friendly. Q8_0 makes the same decision as bf16 on 99.4% of examples; Q4_K_M (1.3 GB) keeps 82.4% accuracy.
  • Efficient training recipe. LoRA rank 16 on all linear layers with a log-score loss, built on a custom chunk-parallel, differentiable Gated DeltaNet forward that matches the per-token training path to 1e-6 (outputs, state and all gradients) and is 6.5x faster per step (measured on the 0.8B sibling model).

Reliability diagram

What "Jev-style" means

Jev (TypeSafe AI, 2026) introduced System One models: instead of generating text, the model takes a state plus a typed question and returns a decision with calibrated probabilities in a single pass. This model follows that pattern on top of an open base model:

  • Choice - pick one of N declared options, with a probability for each
  • Bool - probability that a proposition is true
  • Score - a distribution over ordered levels, and its expectation as a continuous score

It cannot answer outside the declared options, it does not decode text, and one prefill pass gives the whole distribution.

This is an independent, from-scratch reproduction of the publicly described idea. It is not affiliated with TypeSafe AI and is not the Jev model.

Quick start (Apple Silicon)

Important: you must use the prompt format below. Plain chat messages produce meaningless text continuation. This is a decision function, not a chat model. In a chat window, paste the full prompt (it must end with Answer:) and start a new chat for every decision.

pip install mlx-lm
python jev_style_mlx.py
from jev_style_mlx import JevStyle

jev = JevStyle()  # downloads this repo on first use
jev.decide("Shares of the chipmaker jumped 8% after it raised its revenue forecast.",
           "Which news section does this article belong to?",
           ["World", "Sports", "Business", "Science/Technology"])
# [('Business', 0.70), ('Science/Technology', 0.29), ('World', 0.005), ('Sports', 0.002)]

jev.decide_bool("Premise: A man is playing a guitar on stage.\nHypothesis: Someone is performing music.",
                "Does the premise entail the hypothesis?")
# 0.976

jev.decide_score("The plot is thin, but the two leads are so charming that I left the cinema smiling.",
                 "Rate the sentiment of this review on an ordered scale.",
                 ["very negative", "negative", "neutral", "positive", "very positive"])
# (3.05, [... ('positive', 0.68), ('very positive', 0.21)])

LM Studio: the model loads with the MLX engine and answers with the option letter in the chat window. LM Studio's MLX engine does not return token log-probs, so to read the probabilities inside LM Studio use the GGUF build with jev_style_client.py, or use jev_style_mlx.py above.

Prompt format

You are a decision function. Read the state, then answer the question by choosing exactly one option.

[State]
{state}

[Question]
{question}

[Options]
A. {option 1}
B. {option 2}

Answer:

The next token is the option letter ( A, B, ...). Its probability, renormalised over the declared letters, is the decision distribution. For Score, list the levels in order; for Bool, use yes / no. The repository ships a pass-through chat template, so chat endpoints and the LM Studio chat window pass this text to the model verbatim.

Scope

  • A decision function, not a chat model: send the prompt format above.
  • Trained on five English task families (sentiment, natural-language inference, topic, yes/no question answering, 5-level rating). On unseen task types it keeps the base model's accuracy with better, though not perfect, calibration.
  • Up to 26 options (20 when probabilities are read through a server's top_logprobs).

Training data and licence

SST-2 and MNLI (GLUE), AG News, BoolQ and SST-5, 22k examples converted to typed decisions; 80% for LoRA training, 20% held out for the calibration temperature. AG News is distributed for research / non-commercial use. Weights: Apache-2.0, same as Qwen/Qwen3.5-2B-Base.

Contact

I welcome internship, employment, and research collaboration opportunities. Please contact me at yanchaoliang369@gmail.com.

欢迎提供实习、工作及科研合作机会,请邮件联系:yanchaoliang369@gmail.com。

Downloads last month
3,585
Safetensors
Model size
2B params
Tensor type
BF16
·
F32
·
MLX
Hardware compatibility
Log In to add your hardware

Quantized

Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for chaoliangUNSW/Jev-Style-Qwen3.5-2B-Decision-MLX-bf16

Finetuned
(128)
this model
Quantizations
1 model

Datasets used to train chaoliangUNSW/Jev-Style-Qwen3.5-2B-Decision-MLX-bf16

Collection including chaoliangUNSW/Jev-Style-Qwen3.5-2B-Decision-MLX-bf16