Classification & Routing
Intent detection, ticket routing, content moderation, and triage.
Scoring & Rating
Urgency scoring, quality assessment, LLM-as-judge replacement.
Binary Gates
Safety checks, guardrails, extraction validation, yes/no decisions.
Multimodal
Visual inspection, image classification, voice-command routing.
d1 Models Latest release
d1-2B
1.9B RecommendedMultimodal decision model (text + images or video) with typed answers, built on LFM3-VL-2B.
d1-omni-2B
2.2B AudioMultimodal decision model (text + images or audio) with typed answers, built on LFM3-Omni-2B.
d1-omni-600M
587M SmallestMultimodal decision model (text + images or audio) built on LFM2.5-Encoder-350M.
d1.1
Hosted APIHosted decision model with Python and TypeScript SDKs via the Liquid API.
d1-ultra
Hosted Most capableMultimodal decision model (text + images) via the Liquid API, built on a larger open-weight model.
Which d1 Should I Use?
Pricing
The hosted models are billed on input tokens only. Output is free because decision models do not generate tokens. Each question is billed as its own prompt, including its text and all images. See Image Token Usage for how images are counted. The models are available through the Liquid Console. d1-ultra and the earlier d1 model are also on OpenRouter and Vercel AI Gateway. See the Liquid AI pricing page for current prices and available credits. d1-2B, d1-omni-2B, and d1-omni-600M are open-weight models under the LFM Open License and free to run on your own hardware.Primitives
Every question you ask a decision model uses one of three core types:- Noul: A yes/no question that returns a probability between 0 and 1. “Is this message spam?” might return
0.92. - Choice: A pick-one-from-many question that returns a probability distribution over named options.
- Score: A rate-on-a-scale question that returns a probability-weighted position on an ordered rubric.
Typed Answers
d1-2B and d1-omni-2B add typed answers on top of the three core types. Every question has atype and instructions, and every answer repeats its type.
- Missing values: a value or a box is missing when
foundis under 0.5. Its value,text, andspanare thenNone. Forboxes, instances under 0.5 are left out. - Values are read, not converted:
numberanddateare parsed from the span. For example,4 %reads as4with the unit%. A value that is found but can’t be parsed keeps its span, and the value isNone. - JSON states: when the state is JSON, a found value also has a
path, the RFC 6901 pointer to it. - Estimates: the model reads an estimate on at most 128 values between
lowandhigh. Estimates have nofound. They are reliable on counts and scores, less so on free quantities. at_least:Truewhen every instance the model read was present, so the picture may hold more thancount.- Boxes need one picture: a request with a
boxorboxesquestion must have exactly one picture inmedia. - Runtimes: typed answers run in Transformers and mlx-vlm. llama.cpp supports Noul, Choice, and Score only.
When to Use Decision Models
Decision models are a good fit when the answer is a structured decision: classification, categorization, routing (tickets, emails, requests), scoring, triage, content moderation, guardrails and safety checks, LLM-as-judge replacement, agent tool-call approval, and model routing or cascades. With image input, the same primitives support visual inspection, image classification, and decisions based on screenshots. With audio (d1-omni-2B and d1-omni-600M), they support voice-command routing and spoken-intent detection. Use a language model instead for free-form text generation, creative writing, multi-turn conversation, complex multi-step reasoning, open-ended Q&A, summarization, and code generation. To move existing LLM calls to a decision model, see the Decision Model Guide.Examples
Build a Game with Decision Models
Pixel-art racing game using d1 Choice for lane selection.Platform: Desktop