Liquid AI Releases d1: A Decision Model That Returns Calibrated Probabilities With Zero Output Tokens

Liquid AI has launched d1, a new decision model designed for structured choices rather than text generation. The system accepts context and…

By Vane September 29, 2026 4 min read
Liquid AI Releases d1: A Decision Model That Returns Calibrated Probabilities With Zero Output Tokens

Liquid AI has launched d1, a new decision model designed for structured choices rather than text generation. The system accepts context and typed questions, returning calibrated probabilities across a fixed set of outcomes in a single call. It produces zero output tokens. The model targets tasks teams currently send to general large language models: classification, ticket routing, scoring, moderation, reranking, and LLM-as-judge checks.

Is it ready for production?

Yes. d1 is available today as a hosted API under the name d1:free. Liquid’s model library lists it as API only and not trainable. Consequently, there are no GGUF, MLX, or ONNX weights for self-hosting.

What is a Decision Model?

A decision model evaluates a situation and returns a typed answer from options defined before the call. It does not write text. In every response, usage.output_tokens is 0. Liquid AI’s migration guide sets a simple rule: if the answer is one of N known options, use a decision model. If the model must compose a new string, keep your LLM.

The 3 Primitives: Noul, Choice and Score

  • Noul is a yes/no question that returns a probability between 0 and 1. In Liquid’s example, ‘Is this message a complaint?’ returned 0.999.
  • Choice picks one option from a named set. It returns the top pick, the full distribution and a confidence value. A double-charge ticket scored 0.9997 on ‘billing.’
  • Score rates input on an ordered rubric and returns a probability-weighted position. Levels are indexed from 0, so a 4-level urgency rubric spans 0 to 3. A production outage scored 2.9995.

You can mix all 3 types in one request. The model evaluates every question against the same state in one round trip.

How a d1 API Call Works

Each request has 3 parts: the model, the state (plain text or a JSON object) and the questions. Calls go to POST https://api.liquid.ai/decisions/v1/systemone. Keys come from console.liquid.ai and start with liquid_. The clients are TypeSafe AI’s typesafe-sdk for Python and @typesafe-ai/sdk for TypeScript.

from typesafe_sdk import TypeSafeClient, Noul

client = TypeSafeClient(api_key=os.environ["LIQUID_API_KEY"],
                        base_url="https://api.liquid.ai")
result = client.system_one(
    model="d1:free",
    state="I have been waiting over three weeks for my order...",
    questions={"is_complaint": Noul(
        instructions="Is this message a complaint from the customer?")},
)
print(result.answers["is_complaint"].noul)  # 0.999

Why Move LLM Classification Calls to d1

The migration guide lists the concrete differences against an LLM with structured output:

  • No billed output tokens: An LLM bills output even for a one-word label.
  • Predictable latency: There is no decoding loop that grows with output length.
  • No schema errors: Answers always match the question type, so malformed JSON and retries go away.
  • Usable uncertainty: You get calibrated probabilities instead of a self-reported number.
  • Fewer round trips: 3 sequential classification calls become 1.

Probabilities make thresholds practical. Liquid’s moderation example blocks above 0.8, allows below 0.2 and sends the middle band to human review. Its routing example falls back to the most capable model tier when router confidence drops below 0.5. Liquid also says repeated evaluations of the same input are more consistent, which reduces verdict flips.

Keep an LLM for summarization, drafting, multi-turn chat, code generation and complex multi-step reasoning.

Demo: Road Decider

Liquid’s road-decider cookbook is a pixel-art survival racer. d1 uses a Choice question to pick left, center or right on every decision tick, about 2 to 5 times per second depending on game speed. The app is vanilla JavaScript on Node.js 18+, with a Vite proxy that keeps the API key server-side. A “Jev vs d1” mode races d1 against TypeSafe’s typesafe/jev-1.13 through OpenRouter. The most useful lesson is about state design. Per-lane summaries with distance to the first obstacle produced more confident decisions than a raw grid of the road.

Interactive Explainer: d1 Step by Step

&

d1 vs Closest Competitors

d1 enters a small but fast-moving category of non-generative decision models. Here is how it compares on published features.

FeatureLiquid AI d1TypeSafe Jev 1.13Convai LayaAutoTrust JEV-27B
AccessLiquid API onlyOpenRouter APIOpen weightsOpen weights
PrimitivesNoul, Choice, ScoreNoul, Choice, ScoreNoul, Choice, ScoreTrue/false, Choice (2 to 16), Score (0 to 5)
Output tokens00 (output billed at $0)0 (encoder)0 for decisions; can also generate text
Context windowNot published32K tokens512 (English), 1,024 (multilingual)4,096 tokens
Model sizeNot disclosedNot disclosed421M (English), 322M (multilingual)27B backbone, 108.9M trainable
Pricingd1:free tier; paid rates not published$0.042 per 1M input tokensSelf-hostedSelf-hosted
LicenseHosted APIHosted APIApache 2.0Apache 2.0
Fine-tuningNot trainableNot documentedYesYes (LoRA adapter)
SDKTypeSafe SDK (Python, TS)TypeSafe SDK, OpenRouter SDKsHugging FaceHugging Face

Data checked September 29, 2026 against each vendor’s primary page.

What it means

For teams building applications, this tool removes the cost and complexity of generating text for simple decisions. Developers can offload routing and classification tasks to d1, avoiding schema errors and unpredictable latency. It allows for more consistent verdicts by reducing the need for repeated evaluations of the same input.

Scroll to Top