d1
3 TagsUpdated LFM Open License v1.0by LiquidAI
LiquidAI d1-3B: typed decisions with max-pooled answer forms, Q8_0.
ollaya run d1 --preset triage "I was charged twice for my subscription this month and want a refund."curl http://localhost:11435/api/decide \
-H "Content-Type: application/json" \
-d '{
"model": "d1",
"state": "I was charged twice for my subscription this month and want a refund.",
"questions": {
"department": {
"type": "choice",
"instructions": "Which team should handle this?",
"criteria": {
"billing": "Payments, invoices and refunds",
"technical": "Bugs, errors and outages",
"account": "Login, profile and settings"
}
},
"refund": {
"type": "noul",
"instructions": "Is the customer asking for a refund?"
}
}
}'# Already using a TypeSafe SDK? Set TYPESAFE_BASE_URL=http://localhost:11435 instead.
import requests
response = requests.post(
"http://localhost:11435/api/decide",
json={
"model": "d1",
"state": "I was charged twice for my subscription this month and want a refund.",
"questions": {
"department": {
"type": "choice",
"instructions": "Which team should handle this?",
"criteria": {
"billing": "Payments, invoices and refunds",
"technical": "Bugs, errors and outages",
"account": "Login, profile and settings"
}
},
"refund": {
"type": "noul",
"instructions": "Is the customer asking for a refund?"
}
}
},
)
answers = response.json()["answers"]
print(answers["department"]["choice"], answers["refund"]["noul"])const response = await fetch("http://localhost:11435/api/decide", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
model: "d1",
state: "I was charged twice for my subscription this month and want a refund.",
questions: {
department: {
type: "choice",
instructions: "Which team should handle this?",
criteria: {
billing: "Payments, invoices and refunds",
technical: "Bugs, errors and outages",
account: "Login, profile and settings"
}
},
refund: {
type: "noul",
instructions: "Is the customer asking for a refund?"
}
}
}),
});
const { answers } = await response.json();
console.log(answers.department.choice, answers.refund.noul);Models
View all| Name |
|---|
| d1latest2.9 GB · 32768 ctx · 100+ languages |
| d1:3b2.9 GB · 32768 ctx · 100+ languages |
| d1:3b-vision3.5 GB · 32768 ctx · 100+ languages |
Readme
d1-3B by Liquid AI is a multimodal decision model based on LFM2.5-VL-3B. Ollaya reads its answer-token probabilities directly, with the author's prompt and max-pooled answer forms, and never generates an explanation.
Needs Ollaya 0.13.0 or newer, the first release that runs the
d1-v1layout. Update first (ollaya --version); an older version downloads the weights and then refuses to load them.
Models
| Tag | Weights | Images |
|---|---|---|
d1, d1:3b | Author Q8_0 GGUF, 2.87 GB | No |
d1:3b-vision | Same GGUF plus the author's 583 MB Q8_0 projector | Yes |
Use the vision tag for image questions. Both tags use temperature 1.0, without additional calibration, and support predicate, choice and score questions. Scores take 2–10 levels. The context holds 32,768 positions. Questions run independently because the model has recurrent state.
Typed-decisions accuracy, the argmax against the majority label on all 400 states and measured by Ollaya on an RTX 5090, is 0.650 (choice 0.603, score 0.571, yes/no 0.802), with a calibration error (ECE) of 0.033 at temperature 1.0. On an RTX 4090 the runner answers five questions in about 48 ms; each question evaluates the whole state again, so long states with many questions take longer.
License
LFM Open License v1.0. Commercial use by an organization with US$10 million or more in annual revenue is not covered by the license and needs a separate agreement with Liquid AI. Weights and projector download directly from Liquid AI, pinned to a verified revision.