jiwo-4b
Version 2 (2026-10-09). jiwo-4b v2 scores 46.06 on the public part of the Decision Index 0.3 (v1: 45.76). v1 is on the official board with a Full score of 42.86, 3rd of 26 in the 3–6B class.
jiwo-4b is a decision model. It reads a state and one or more typed questions. For each question, it returns a probability for every option in one forward pass. It does not generate text.
The request and response format is the format of TypeSafe's Jev API (POST /v1/systemone). jiwo is an independent
project. TypeSafe does not endorse it.
| Base model | Qwen/Qwen3.5-4B |
| Parameters | 4.2B |
| Weights | Full weights: decoder, tokenizer and readout |
| Question types | choice (at most 255 options), score (2 to 10 levels), noul (true or false) |
| Training context length | 8,192 tokens |
| Licence | Apache-2.0 |
Code, server and documentation: github.com/jiwidi/jiwo. The other model of the family is eljiwo/jiwo-0.8b.
Versions
| Version | Date | What changed | Decision Index 0.3 public | Board Full score | Load it with |
|---|---|---|---|---|---|
v2 (main) | 2026-10-09 | Same recipe, a larger and more varied training mix | 46.06 | pending | revision="v2" |
| v1 | 2026-10-05 | First release | 45.76 | 42.86, 3rd of 26 in 3–6B | revision="v1" |
DecisionModel.from_pretrained("eljiwo/jiwo-4b", revision="v1") # the first release
Evaluation (v2)
| Benchmark | v2 | v1 |
|---|---|---|
| Decision Index 0.3, public index | 46.06 | 45.76 (board) |
| Decision Index 0.2.1 | 45.08 | 44.97 |
| Area skill ×100 (0.3): knowledge / language / retrieval and classification / tools / arts | 29.1 / 52.9 / 51.7 / 63.1 / 29.8 | |
| Three public datasets never used in training (accuracy) | 67.8% | 66.3% |
| Untrained Qwen3.5-4B on Decision Index 0.2.1, same server and calibration | 29.20: +15.9 points for v2 | |
| Median request latency on one H100 (0.2.1 run) | 48.5 ms | 53 ms |
The scores come from complete runs of the public suite (150,317 requests for 0.2.1, 140,178 for 0.3), served by
jiwo serve with JIWO_MAX_LENGTH=65536. On the board, the public suite is 20% of the Full score. The maintainers
run the private tests (80%) after review. The v1 board scores come from the board of 2026-10-07.
Use the model
pip install "jiwo @ git+https://github.com/jiwidi/jiwo" # on NVIDIA GPUs: "jiwo[cuda] @ git+..."
from jiwo.model import DecisionModel
model = DecisionModel.from_pretrained("eljiwo/jiwo-4b")
question = {"type": "noul", "instructions": "The customer is angry."}
response = model.decide("Refund please, the parcel arrived crushed.", {"angry": question})
print(response["answers"]["angry"]["noul"]) # the probability that the statement is true
Or serve it over HTTP. The server listens on 127.0.0.1:8765:
JIWO_CHECKPOINT=eljiwo/jiwo-4b jiwo serve
curl -s localhost:8765/v1/systemone -H 'content-type: application/json' -d '{
"state": "Refund please, the parcel arrived crushed.",
"questions": {
"team": {"type": "choice", "instructions": "Which team handles this?",
"criteria": {"billing": "Payments and refunds", "shipping": "Damaged or lost parcels", "account": null}},
"angry": {"type": "noul", "instructions": "The customer is angry."},
"urgency": {"type": "score", "instructions": "How urgent is it?", "criteria": ["Not urgent", "Soon", "Now"]}}}'
The jiwo README describes the response, the errors and all settings.
Request format
A request has a state (a string, a JSON object or a JSON array) and at most 64 named questions.
| Type | Meaning | criteria |
|---|---|---|
choice | Pick one of N named options | An object that maps option keys to descriptions or null |
score | Rate the state on 2 to 10 ordered levels | A list of level descriptions, lowest level first |
noul | Decide whether a statement is true | Optional. Descriptions for the keys true and false |
How the model works
- The decoder of the base model reads one prompt for each (state, question) pair.
- A linear readout with one row per answer code (A, B, ..., Z, AA, ...) gives one logit for each option.
- A softmax with a fitted temperature for each question type gives the probabilities.
Training data
The model was fine-tuned on the train splits of public datasets and on synthetic data. The training data is mostly English.
Limits
- The training prompts had at most 8,192 tokens. By default, the server refuses a longer prompt with a 400 error.
You can set a larger
JIWO_MAX_LENGTH, but the model did not see longer prompts in training. - A
choicequestion can have at most 255 options. - The model was trained mostly on English. Other languages are not evaluated.
- The model gives probabilities, not explanations. Check its answers before you use them for decisions with a high cost.
Licence
Apache-2.0, the licence of the base model. See LICENSE.