Instructions to use asjson/jevson-4b-01 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- PEFT
How to use asjson/jevson-4b-01 with PEFT:
from peft import PeftModel from transformers import AutoModelForCausalLM base_model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen3-4B") model = PeftModel.from_pretrained(base_model, "asjson/jevson-4b-01") - Notebooks
- Google Colab
- Kaggle
jevson-4b-01
The first public adapter behind asjson. You send a JSON Schema and a document; you get back a schema-valid JSON record with a calibrated probability on every field, from one parallel pass over the document. No generated text to parse, no retries, no invalid JSON. The same adapter also answers Jev / System One style typed questions (yes/no, choice, score) with probabilities, which is the shape most decision-model benchmarks use.
This release is a LoRA over Qwen/Qwen3-4B plus small readout heads and fitted calibration temperatures.
What it does
Schema mode (asjson). The schema is compiled into decisions: enums, booleans and discriminators become choices;
nullable fields get a presence decision; arrays get a length decision and slots; strings are extracted as a choice
among candidate spans found in the document, cast to the declared type (date-time, integer, email...), with an
explicit "absent" option; fields that depend on other fields (a chosen tool's arguments, a present field's value) run
in a second pass conditioned on the first; a field may opt into free-text generation. Every field comes back with its
value, its probability distribution, and the evidence span it was read from.
Decision mode (jevson). System One compatible questions over a piece of state:
| type | you send | you get back |
|---|---|---|
noul |
a yes/no question with criteria | P(yes) |
choice |
options with one-line criteria | a probability for every option |
score |
ordered levels | a probability for every level and the expected level |
Both modes score every decision in the same pass over one shared read of the document, so ten fields cost about the same as one. Probabilities are calibrated and meant to be thresholded: accept the confident, route the uncertain.
Results
Schema mode, real documents, this adapter (per-field categorical accuracy / calibration error / whole-record exact):
| document type | fields | acc | ECE | whole record | ms / request |
|---|---|---|---|---|---|
| JSON webhook events (GH Archive) | 3 spans + enums | 1.000 | 0.000 | 0.974 | 292 |
| task-oriented dialogue (tool requests) | 8 typed slots | 0.952 | 0.012 | 0.422 | 219 |
| app reviews | category + complaint span | 0.925 | 0.008 | 0.426 | 262 |
| GitHub issues / releases | component, version, flags | 0.922 / 0.938 | 0.003 / 0.014 | 556 / 139 | |
| consumer complaints (CFPB, long) | company, date, category | 0.889 | 0.016 | 2883 | |
| a 12-tool RPC catalog it never saw (zero-shot) | 61 decisions | 0.907 | 0.054 | 0.571 | 311 |
On the unseen tool catalog, tool routing is 0.92 and 11 of 26 argument spans are extracted at >= 0.90 exact (URLs, emails, ids, timezones, subjects); prose-valued arguments are the weak ones.
Decision mode, JevBench v1.3 public items (231 decisions), scored with the public harness:
| easy | standard | hard | Intelligence (chance-corrected) | top-label ECE |
|---|---|---|---|---|
| 1.00 | 0.97 | 0.54 | 69.6 | 0.071 with the shipped calibration (0.089 raw) |
Kev transfer-v4 (764 out-of-domain decisions, never seen in training): accuracy 0.760, Brier 0.339, ECE 0.040 calibrated. Timings above are server-side on one H200 including the document prefill; requests with several hundred tokens of document return in a few hundred milliseconds.
Files
adapter_model.safetensors,adapter_config.json: LoRA weights forQwen/Qwen3-4B(loadable with PEFT).pointer.pt(and other*_head.ptwhere present): readout heads used by the asjson runtime for span extraction.asjson_config.json: the inference settings the runtime needs.calibration.json: temperatures per question type and option count; divide option logits by the matching temperature before the softmax for calibrated probabilities.
The adapter is the model; base weights stay at Qwen/Qwen3-4B. Loading the LoRA alone gives you the tuned base; the
schema compiler, parallel readout and extraction heads are part of the asjson runtime, which is being packaged.
Intended use and limits
Structured extraction and routing over documents, tickets, logs, JSON events and dialogue; typed judging and QA gates. Weak spots today: sentence-length prose values inside chat-style text, multi-step arithmetic and date/time reasoning in long documents. State should stay under ~8k tokens. Not a chat model: it produces no free text except where a schema field opts in.
Licence and attribution
Apache-2.0 for the adapter, heads and configs. Base model: Qwen3-4B (Apache-2.0). Independent of TypeSafe AI; "Jev" and "System One" are their names, used here only to describe API compatibility.
- Downloads last month
- 17