A typed readout for open models
You define a state and one or more bounded questions. AnyJev returns distributions for categorical choices, a probability for yes/no questions, or an expected value over an ordered score.
AnyJev is an open-source Python toolkit from Nokia Applied Research. It reads Choice, Score and Noul-style decisions from causal language models, then adds controls for option-order bias and probability calibration.
Important: AnyJev is not a new foundation model, an open release of TypeSafe's Jev weights, or an official Jev product. It is an independent way to build Jev-shaped decisions on models you run.
anyjev on PyPIstate → typed decisionsI was charged twice. Please fix this today.
result.level = "L0"Illustrative outputIt keeps the causal language model you choose and changes how a bounded decision is read from it. That makes it closer to a decision layer than to a standalone model such as a fine-tuned classifier.
You define a state and one or more bounded questions. AnyJev returns distributions for categorical choices, a probability for yes/no questions, or an expected value over an ordered score.
Raw answer-token logits can favor a label or its position. AnyJev exposes which correction level produced each decision so application code can require the level it expects.
The project does not publish or reproduce TypeSafe's private weights, training data or RLCD method. Similar request shapes do not establish equivalent behavior.
“No training” accurately describes L0. The higher levels add labeled examples, and L2 fits a small question-specific head without updating the base model's weights.
No correction for option position or label preference.
More stable, but its probabilities are not task-calibrated.
Improves confidence estimates; it does not fix wrong rankings.
Specific to one model and question; needs local hidden-state access.
This small example mirrors the project's public API: a Qwen model stays local, AnyJev reads two bounded decisions, and ordinary code decides what happens next.
pip install "anyjev[hf]"Python 3.10 or newer is required. The first real run also downloads the open model you select.
Choice + Noulfrom anyjev import Decider, Question
from anyjev.backends.hf import HFBackend
decider = Decider(HFBackend("Qwen/Qwen3-8B"))
route = Question.choice(
"Which team should handle this?",
["billing", "technical", "sales", "other"],
name="route",
)
risky = Question.noul(
"Is this tool call destructive or irreversible?",
name="risky",
)
result = decider.decide(
{"message": "I was charged twice.", "tool_call": "refund"},
[route, risky],
)
result["route"].distribution
result["risky"].p_true
result.level # "L0"The application names the allowed teams and asks whether the proposed tool call is risky.
No free-form answer is generated. The result carries a distribution or probability and the level used.
Your code sets thresholds, sends uncertain cases to review and prevents side effects when the risk is too high.
AnyJev reports the following Qwen3-8B results on 300 BANKING77 test items. These figures are author-reported from committed benchmark artifacts; Jev AI Dev has not independently rerun the model benchmark.
| Metric | Raw logits | AnyJev L0 | AnyJev L1 |
|---|---|---|---|
| Answer flips after reversing options | 0.230 | 0.073 | 0.077 |
| Accuracy | 0.747 | 0.803 | 0.807 |
| Expected calibration error | 0.240 | 0.184 | 0.095 |
| Coverage at no more than 5% error | 7.7% | 46.3% | 52.0% |
Accuracy moved from 0.747 to 0.807 in this test. The larger operational change was reported coverage at no more than 5% error: 7.7% for raw logits and 52.0% after L1 calibration. That estimate is based on a small test set and should not be transferred to another workflow.
Inspect the benchmark and ablationsData Science in your pocket published this short introduction after AnyJev appeared. It is a third-party explanation, not an official Nokia Applied Research demo or an independent benchmark.
Watch “How to convert any LLM into Jev AI?” on YouTubeWquGuru compared official Jev and three open projects on one MacBook using 20 Chinese support tickets. The thread includes video, timing and per-project accuracy.
The same thread reports 20/20 for official Jev, 65% for Laya and 35% for djev. Treat this as an early community observation—not a controlled benchmark: it uses one small question set, one machine and project-specific model configurations.
View the comparison and video on X“The latency is real. We went correctness first.”
Jiamu “Morris” Zhang said the first release had not tuned its serving path. He framed AnyJev as a method for models a team already serves and said vLLM/SGLang optimization work was starting.
Read the author's full responseMarkTechPost summarizes the typed readout, L0/L1 distinction and BANKING77 results. Those figures originate from the project's own benchmark rather than a separate replication.
Evidence boundary: Jev AI Dev verified that the posts contain these statements, but did not reproduce the community test. View and engagement counts are intentionally omitted because they change over time.
Typed output removes one integration problem. It does not make a semantic judgment correct, safe or transferable to a different distribution.
A choice with K options uses cyclic rotations, so the zero-label correction needs K prefills. It trades inference work for better order stability.
Calibration and heads belong to a particular model and question. They should be rebuilt or revalidated when either changes.
The current L2 path uses a local Transformers backend. Served engines such as vLLM and SGLang are listed on the project roadmap.
Measure accuracy, calibration, order sensitivity and abstention on representative data before a probability controls an important action.
AnyJev is moving quickly. Verify the latest release, backends and limitations before you build against it.
AnyJev is one approach: adapt an open causal LLM at decision time. The wider ecosystem also includes purpose-trained models, local runtimes and API-compatible experiments.