yev
The client for Yev-Decision-1, a local System One decision model. Give it a state, which can be text, images or both, plus named questions. It returns a typed probability distribution for each one: a Choice between options, a Score on an ordered scale, or a Noul (yes or no). It generates no text and nothing leaves the machine.
Install
uv add "yev[inference] @ git+https://huggingface.co/HallD/yev"
pip install "yev[inference] @ git+https://huggingface.co/HallD/yev" works the same way. Python 3.13
or later.
| Extra | Brings | For |
|---|---|---|
| (none) | pydantic, huggingface-hub, numpy | Question and answer types only |
inference |
torch, transformers, peft, accelerate, pillow | Answering questions with a model |
quantized |
inference plus bitsandbytes |
quantize4bit=True on a CUDA GPU |
Use
from yev import Choice, Image, Noul, Score, YevClient
with YevClient() as client: # YEV_DEFAULT_MODEL, else HallD/Yev-Decision-1
response = client.system_one(
state="I was charged twice. Please fix this ASAP.",
questions={
"billing": Noul(instructions="Is this ticket about billing?"),
"tone": Choice(instructions="What is the customer's tone?",
criteria={"calm": None, "frustrated": None, "angry": None}),
"urgency": Score(instructions="How urgent is this ticket?",
criteria=["can wait", "this week", "today"]),
},
)
print(response.nouls["billing"].noul, response.choices["tone"].probabilities)
The first call downloads the model and its backbone,
Qwen/Qwen3.5-4B-Base at a pinned revision, into the
Hugging Face cache. After that it runs offline (HF_HUB_OFFLINE=1). The backbone runs in bfloat16;
its weights and the adapter take about 9.6 GB.
The call shape follows the TypeSafe SDK (0.7.5): YevClient and AsyncYevClient take its
system_one(state, questions, model=, assets=, response_model=), its question objects (TypeSafe's
own are accepted), and return its answer and response types. It runs in-process, so there are no
API keys, retries or timeouts; Box questions are refused, and a Score takes at most 10 levels.
yev --export HallD/Yev-Decision-1 --state "I was charged twice." --noul billing "Is this ticket about billing?"
asks from the command line.
JevBench
examples/jevbench_adapter.py is an adapter for the
JevBench harness: it sends the harness's own question
to system_one and returns the probabilities.