llm-semantic-router/Decision-1.0-Sol-2B
Decision-1.0-Sol-2B
Sol, Latin for sun.
Give Sol a state, questions and possible answers. It returns decisions and probabilities with labels defined at runtime.
Measured capability
66.32% weighted accuracy across 3,766 decisions and 54 tasks. Compare decision, reading and transfer capabilities in the complete results below.
Accuracy (%). Overall weights: Decisions 30%, Composition 25%, Reading 15%, Inference 15%, Transfer 15%. These outcome-informed product-priority weights were chosen after observing results. Bold marks a Decision-family cell above every external open or untuned reference; Jev and other Decision models are excluded.
All 54 tasks · Probability, order and missing-evidence diagnostics · Methods and uncertainty
More questions, measured
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 request latency includes tokenization and inference; loading and network are excluded. p50, p95 and memory.
Use Sol-2B
Use the official TypeSafe Python SDK with your SystemOne-compatible endpoint, configured to serve Decision-1.0-Sol-2B. 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-Sol-2B",
) 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-Sol-2B",
"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
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-2B. It evaluates supplied evidence without live retrieval; confidence does not guarantee correctness. License · Attributions.
