llm-semantic-router/Decision-1.0-Nox-4B
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.
Measured capability
73.09% weighted accuracy across 3,766 decisions and 54 tasks: +2.99 points over Kev-4B on the same benchmark.
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. These measurements precede null-description normalization and use explicit descriptions. p50, p95 and measurement scope.
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-sdkfrom 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.
