Decision-1.0-Nox-4B
Nox, Latin for night.
Give Nox a state, questions and possible answers. It returns typed decisions and probabilities, with labels defined at runtime.
| Type | Use it for | Output |
|---|---|---|
| Choice | Route a request or choose among 2–255 actions. | Selected ID + distribution |
| Noul | Check a condition against supplied evidence. | P(true) |
| Score | Apply 2–10 ordered rubric descriptions. | Expected index + distribution |
Measured capability
73.09% weighted accuracy across 3,766 decisions and 54 tasks: +2.99 points over Kev-4B on the same benchmark.
| Model | Size | Decisions | Composition | Reading | Inference | Transfer | Overall |
|---|---|---|---|---|---|---|---|
| Nox-4B | 4B | 83.00 | 51.79 | 79.06 | 86.25 | 69.60 | 73.09 |
| Lux-9B | 9B | 84.10 | 51.75 | 89.69 | 91.46 | 77.34 | 76.94 |
| Kev-9B | 9B | 76.75 | 45.75 | 86.72 | 83.54 | 79.25 | 71.89 |
| Kev-4B | 4B | 71.90 | 48.54 | 81.88 | 84.58 | 76.10 | 70.09 |
| Qwen3.5-9B | 9B | 73.91 | 44.62 | 89.84 | 79.58 | 73.23 | 69.73 |
| Decider | 2B | 64.01 | 46.58 | 92.03 | 84.38 | 69.31 | 67.71 |
| Qwen3.5-4B | 4B | 69.89 | 43.33 | 87.97 | 79.79 | 68.83 | 67.29 |
| Sol-2B | 2B | 73.75 | 46.08 | 76.56 | 84.17 | 57.07 | 66.32 |
| Eos-0.8B | 0.8B | 65.94 | 46.04 | 70.31 | 81.67 | 52.01 | 61.89 |
| Kev-0.8B | 0.8B | 60.14 | 42.29 | 67.81 | 68.75 | 61.19 | 58.28 |
| Qwen3.5-2B | 2B | 57.12 | 39.00 | 73.75 | 72.29 | 56.31 | 57.24 |
| Kai-0.6B | 0.6B | 57.96 | 40.83 | 54.69 | 69.79 | 48.37 | 53.52 |
| Laya · English | 0.421B | 56.54 | 35.33 | 51.41 | 63.75 | 53.06 | 51.03 |
| Laya · Multilingual | 0.322B | 47.25 | 38.92 | 50.78 | 57.29 | 47.13 | 47.19 |
| Jev | — | 79.10 | 66.38 | 94.53 | 89.79 | 87.19 | 81.05 |
Accuracy (%). Overall weights: Decisions 30%, Composition 25%, Reading 15%, Inference 15%, Transfer 15%. These outcome-informed product-priority weights were chosen after observing results; reweighting is not a training improvement. Bold marks Decision-family cells above every external open or untuned reference for that metric, excluding Jev and the other Decision models.
All 54 tasks · Order, missing-evidence and calibration diagnostics · Methods and uncertainty
More questions, one request
Distinct Choice questions at a fixed 499 input tokens per question. Thirty measurements per point across six independently loaded processes on an otherwise idle AMD gfx942 GPU. Python latency includes tokenization and inference; loading and network are excluded. p50, p95 and memory.
Use Nox-4B
Use the official TypeSafe Python SDK with your SystemOne-compatible endpoint, configured to serve Decision-1.0-Nox-4B. Replace the example URL and API key with your own.
pip install typesafe-sdk
from typesafe_sdk import Choice, Noul, TypeSafeClient
with TypeSafeClient(
api_key="YOUR_ENDPOINT_API_KEY",
base_url="https://your-decision-endpoint.example",
model="Decision-1.0-Nox-4B",
) as client:
result = client.system_one(
state="Customer reports a duplicate charge and asks for a refund.",
questions={
"route": Choice(
instructions="Which team should handle this request?",
criteria={"billing": "Payments and refunds", "technical": "Product faults"},
),
"refund_requested": Noul(instructions="Did the customer request a refund?"),
},
)
print(result.choices["route"].choice)
print(result.nouls["refund_requested"].noul)
The same request with curl:
curl -X POST 'https://your-decision-endpoint.example/v1/systemone' \
-H 'Authorization: Bearer YOUR_ENDPOINT_API_KEY' \
-H 'Content-Type: application/json' \
--data-raw '{
"model": "Decision-1.0-Nox-4B",
"state": "Customer reports a duplicate charge and asks for a refund.",
"questions": {
"route": {
"type": "choice",
"instructions": "Which team should handle this request?",
"criteria": {
"billing": "Payments and refunds",
"technical": "Product faults"
}
},
"refund_requested": {
"type": "noul",
"instructions": "Did the customer request a refund?"
}
}
}'
Typed request and response guide · Model runtime requirements
Choice candidates with a null description use their ID text, which may increase input tokens.
The complete state, question and candidates must fit 16,384 tokens; overflow is rejected. The bundled normalization profile loads automatically. AMD gfx942 is validated; CPU/MPS are unsupported and NVIDIA is unqualified. Use a fresh Python process when switching profiles.
Architecture
A causal Qwen3.5 text backbone combines gated linear and full attention. A shared candidate head reads candidate endpoints and the final query vector. Each question uses one forward pass; questions run independently in batches of eight.
Candidate head · Vector architecture · Inference code
Adapted from Qwen3.5-4B. It evaluates supplied evidence without live retrieval; confidence does not guarantee correctness. License · Attributions.




