Agentic AI / Models

A practical guide · Updated November 2026

System 1 models answer questions with probabilities

A System 1 model, also called a decision model, takes some text and a set of typed questions. It doesn't write a reply. It returns a number for each question: how likely something is true, which option fits best, or where the case sits on a scale. The answer usually arrives in well under a second, and your software can set thresholds on it, test it, and act on it.

01What a System 1 model is

Every organisation makes a steady stream of small judgement calls about text. A support agent reads a ticket and decides how urgent it is. A claims handler decides whether a claim needs an adjuster. A lawyer skims a contract to see who should review it. Each call takes a person a minute, but there are thousands of them, and they don't fit simple rules because the input is free text.

A System 1 model is a language model built for these calls. You give it the text, the questions you want answered, and the answers it is allowed to give. In return you get a probability for each allowed answer, and your software decides what to do with those numbers.

You will see two names for this category. System 1 comes from Daniel Kahneman's Thinking, Fast and Slow, where System 1 is fast, intuitive judgement and System 2 is slow, deliberate reasoning. TypeSafe AI introduced the term with its Jev model in September 2026. Microsoft, OpenAI, Perplexity and others call the same thing a System 1 model. This guide treats the two names as the same thing, and calls chat and reasoning models System 2.

Same message, two kinds of model

Customer message“I've been charged twice for this month's invoice. Our finance team closes the books tonight, so I need this fixed today.”
Chat model
“This sounds fairly urgent: a duplicate charge with a same-day deadline. I'd probably send it to billing with high priority.”

Helpful for a person to read. But your code has to interpret “fairly” and “probably”, and the next run may word it differently.

System 1 model
needs urgent help?0.91
which team?billing · 0.78
priority (0–3)?level 2 · 0.64

You chose the questions and the allowed answers. Each comes back as a number your code can compare with a threshold.

Where it fits

Rules in code
Reads
Structured fields such as amounts, dates and status codes
Returns
A fixed answer, identical every time
Best when
The decision follows a written rule exactly
Chat model
Reads
Any text
Returns
Written language
Best when
A person will read the result: drafting, summarising, explaining
System 1 model
Reads
Any text, plus the questions and allowed answers you define
Returns
A probability for each allowed answer
Best when
Software has to act on a judgement about free text, at volume

These work together rather than compete: code checks the hard facts, the System 1 model judges the text, and people handle what stays uncertain. If you already have thousands of labelled examples for one narrow task, a purpose-trained classifier is another option.

What about structured outputs?

Many chat models can reply in a fixed JSON shape. That fixes the format of the answer, not the information in it. You still get one answer the model wrote, and a “confidence” field is just more generated text: the model's description of how sure it is, not a measured probability.

Chat model, structured output
{
  "team": "billing",
  "confidence": 0.9
}

One answer. The 0.9 is written like any other word, so nothing shows that “payments” was a close second, and a threshold on it means little.

System 1 model
billing0.48
payments0.44
account0.08

Every allowed answer gets a probability you can check against labelled cases. The near tie is visible, so this case can go to a person.

The two combine well. Use structured outputs to extract facts such as names, amounts and dates, check those facts in code, then put them in the state and let the System 1 model make the judgement.

Why numbers help

Thresholds

Pick a cut-off such as 0.8 and act automatically above it.

Testing

Compare outputs with labelled cases and measure accuracy and calibration.

Routing

Send work to a queue, a team or a person based on the answer.

Auditing

Store the inputs, questions and probabilities so you can explain every decision later.

The next two sections cover where these models pay off and how they work alongside chat and reasoning models. After that the guide turns technical.

02Where it pays off

A System 1 model earns its place where software makes the same kind of judgement about text thousands of times a day. Five kinds of work cover most uses so far.

Triage and routing

Send each ticket, claim or email to the right team, queue or workflow.

Which team should handle this request?

Guardrails and checks

Check an AI agent's inputs, planned actions and answers before they go further.

Is this command hard to undo?

Choosing the next step

Pick the tool, skill or model for a request, and send only the hard ones to an expensive model.

Which of these skills fits the request?

Screening before a costly step

Filter out what doesn't need a reasoning model or a person at all.

Is this passage relevant to the question?

Judging data in bulk

Ask the same questions of a million reviews, records or log lines and analyse the answers.

Does this review mention a safety problem?

Good fit, poor fit

Good fit when
  • The answer is one of a fixed set you can write down.
  • The decision happens at volume, and speed or cost matters.
  • You can label 50 to 100 real cases to test against.
  • Uncertain cases have somewhere to go: a person or a slower model.
  • A wrong automatic answer is cheap to catch or reverse.
Poor fit when
  • You need written output or an explanation of the answer.
  • The task needs multi-step reasoning, arithmetic or date logic.
  • The answer depends on facts that aren't in the text you send.
  • The input comes from someone who gains by steering the outcome, and nothing screens it first.
  • The output would be the final word on a decision about a person.

Five questions to ask before a pilot

  • Which decision is this, how many do we make each month, and what does a wrong one cost?
  • Do we have past cases with known answers to measure against?
  • Where do uncertain cases go, and who reviews them?
  • Who could gain by manipulating the input?
  • Which vendor numbers have we re-measured on our own data?
On the numbersThe launch claims of roughly 190 times faster and 440 times cheaper than a frontier chat model come from the vendor's own benchmarks, and the vendor says they sit at the high end of what to expect. One independent test on 20 payment transactions found accuracy level with most frontier chat models, using one 0.4-second call where the chat models needed 20 calls and 33 to 81 seconds. Expect real savings in time and cost, and measure accuracy yourself.

03Fast and slow together

System 1 models work beside chat and reasoning models. In the usual design the fast model handles the routine cases and passes the rest up, to a reasoning model or to a person.

System 1 modelSystem 2 model (chat, reasoning)
ReturnsProbabilities for answers you defineWritten language, plans, code
SpeedOne pass, usually tens to hundreds of millisecondsSeconds, and longer with reasoning
BillingInput tokens only, at most providersInput and output tokens
Strong atRouting, gating, scoring, checkingReasoning, drafting, explaining, using tools
Weak atWriting, multi-step reasoning, numbers and datesCost and speed at volume; its self-reported confidence is just more generated text
Role in an agentThe reflex around each step: route, check, gateThe deliberate worker inside the step

What escalation does to cost and speed

0of requests finish on the fast path
0per 1,000 requests, with escalation
0per 1,000 requests, all on System 2
0average response time

The defaults are illustrative: about 700 input tokens at $0.04 per million for System 1, and a one-cent, eight-second reasoning call for System 2. Every request pays for the System 1 call; escalated requests pay for both. Replace the figures with your own. The agentic design pattern library on this site covers System 1 / System 2 escalation alongside the other patterns.

In depth

04How a request flows

Every request has two parts: the state, which is the text being judged, and the questions, each with a type, instructions and criteria. The response has one answer per question, plus token usage.


        

The values are invented. The shape follows the /v1/systemone format used by TypeSafe and Microsoft Foundry. Other providers use different field names, so check the documentation for the model you use.

Under the hood

One pass, no writing

A chat model runs once for every token it writes. A System 1 model reads the input once and returns the distribution for every question.

Questions are independent

Each question is judged against the same state without seeing the others, so adding questions barely changes response time.

Valid by construction

The answer is always one of the answers you defined. That guarantees the format. It says nothing about whether the answer is right.

Trained for calibration

Providers train these models so that stated probabilities track how often answers are right. TypeSafe calls its method RLCD. Check the result on your own data.

Call it from Python

Standard library only. The later code examples reuse this ask() helper.

import json, os, urllib.request

# Microsoft Foundry: https://<resource>.services.ai.azure.com/providers/microsoft/v1/systemone
URL = os.environ["S1_ENDPOINT"]
TOKEN = os.environ["S1_TOKEN"]
MODEL = os.environ["S1_MODEL"]      # model name, or your deployment name on Foundry

def ask(state, questions):
    body = json.dumps({"model": MODEL, "state": state, "questions": questions}).encode()
    req = urllib.request.Request(URL, body, {
        "Content-Type": "application/json",
        "Authorization": f"Bearer {TOKEN}",
    })
    with urllib.request.urlopen(req, timeout=30) as r:
        return json.load(r)["answers"]

a = ask(
    "My account payment has failed twice today. I need help before the end of the day.",
    {
        "urgent": {"type": "noul", "instructions": "Does the customer need help today?"},
        "team": {
            "type": "choice",
            "instructions": "Which team should handle the request?",
            "criteria": {"billing": "Payment and invoice issues",
                         "technical": "Software and integration issues"},
        },
    },
)
print(a["urgent"]["noul"], a["team"]["choice"], a["team"]["probabilities"])

05The three question types

Most decisions fit one of three shapes. APIs that follow TypeSafe's format call them noul (a yes/no probability), choice and score. Other providers say binary or boolean for the first. The type you choose determines what the answer looks like and what you can do with it.

Noul

Is this true?

“Does the customer report a charge they did not authorize?”

0.86
cut-off 0.70
00.51

Returns one probability from 0 to 1. Use it for flags, gates and yes/no checks.

Choice

Which option is it?

“Which team should handle this request?”

Returns the most likely option and a probability for every option, adding up to 1. Use it for routing and categories with no natural order.

Score

How much?

“How quickly does this need a response?”

0
a week
1
3 days
2
24 hours
3
2 hours

Returns a probability for each level and a score, which is the probability-weighted average (1.83 here). Use it for severity, priority and risk.

Watch forTwo different numbers get called confidence. The probability of the top answer says how likely that answer is. The confidence field that some APIs return is calculated from the same distribution and summarises how concentrated it is. It adds no separate evidence of accuracy. Keep the full distribution: “level 2 at 0.58” with 0.22 on level 1 is far less settled than “level 2 at 0.90”. If your options have a natural order (low, medium, high), use a score, not a choice. An ordered answer lets you sort, set thresholds, and count “one level off” as a smaller miss than “three levels off”.

06Writing good questions

The model only knows what the question tells it. Clear instructions and well-separated options matter more than anything else you control.

Vague
Is this bad?

“Bad” for whom, and judged on what? The answer will drift with tone and wording.

Specific
Does the message report a failed payment or a charge the customer did not authorize? Consider only what the message states.

Names the condition and limits the evidence to the input.

Overlapping options
billing · payments · account

A failed card payment fits all three, so probability gets spread across them.

Distinct options
billing: invoices, refunds, plan changes
payments: card or bank transfer failures
account: login, profile, access

Each option has a definition, and the definitions don't overlap.

Unanchored scale
low · medium · high

“Medium” means different things to different readers, and to the model.

Anchored levels
0: no customer impact
1: one customer, workaround exists
2: one customer, blocked
3: many customers blocked

Each level is tied to something observable.

Bundled judgement
How good is this sales lead?

Several judgements hide in one question, and you can't see or adjust how they were weighed.

Atomic questions
Does the message state a budget?
Does it state a purchase deadline?
Does the sender make the buying decision?

Three narrow answers, combined in your code with weights you control.

  • Ask one thing per question. Split “urgent and angry” into two.
  • Say what evidence counts, for example “only the facts stated”.
  • Define every option and level in a single sentence.
  • Add a fallback option such as “none of these” when it's realistic.
  • Keep wording stable once you start testing, so results stay comparable.
  • Put rules and facts the model needs into the state, not into your head.
  • Write literally. The model answers the wording, not the intent, so spell out boundary cases.
  • Give each question only the state it needs. Irrelevant detail lowers accuracy.
  • Shuffle the option order when you test. Some models lean toward the first option.

07Design patterns

Six patterns cover most production use. Each keeps the model's job narrow and leaves control flow, weights and thresholds in your code. The snippets use the ask() helper from section 04.

08Scenario gallery

The same three question types cover very different work. These are invented examples with illustrative results.

09From probability to action

A probability becomes an action once you choose thresholds. A common pattern uses two: act automatically when the model is confident in either direction, and send the uncertain middle to a person. Drag the sliders to see the trade-off on 16 labelled example cases.

Should be approved Should be declined
0auto-approved
0sent to a person
0auto-declined
0wrong automatic decisions

Calibration: what should 0.8 mean?

A model is calibrated when its probabilities match reality. Of all the cases scored 0.8, about 80% should turn out true. You check this by grouping labelled cases by predicted probability and comparing each group's prediction with how often it was actually true.

The chart shows two models. The blue one follows the diagonal, so its numbers can be read at face value. The orange one is overconfident: when it says 0.9, it's right only about 70% of the time. Thresholds set on an uncalibrated model don't mean what they appear to mean.

Margins

For choices and scores, look at the gap between the top two answers. “Billing 0.48, payments 0.44” is a near tie and a good candidate for review, even though billing technically wins.

Which number to threshold

For a noul, use the probability itself. For a choice, use the probability of the option you are about to act on. For a score, first check that the distribution is settled, then route on the score. Set a higher bar for actions that are harder to undo.

10Repeatability

Send the exact same request many times and the answers may vary slightly. Before you automate anything, measure how much. The example below shows 20 identical runs of one noul question, with a 0.70 cut-off.

  • SpreadMinimum, maximum and standard deviation of each probability across runs. A small spread is normal.
  • Decision flipsHow often the final action changes. A 0.03 wobble doesn't matter at 0.95, but it flips the outcome near a cut-off.
  • Top-answer agreementFor choices and scores, the share of runs that pick the same top answer.
  • Identical inputHash the request body and confirm every run sent the same bytes, so you know any variation came from the service, not your code.
Keep in mindA repeatability test describes one input, one model version and one time window. It doesn't prove the model is deterministic for other inputs or after an update. Re-run it when the model, the questions or the input format changes.

11Known limits and failure modes

The category is weeks old, and the first independent tests are in. These are the failures reported so far, with what each one means for your design.

What goes wrongWhat was foundWhat to do
Manipulated input changes the decisionCheck Point added plausible fake evidence to a due-diligence report. Jev's verdict flipped in 59% of attempts, and in 25 of 27 for the strongest attacker, at about $0.50 per success. A written warning against manipulation changed almost nothing.Screen untrusted text before the model sees it. Typed output limits the format of an answer, not what can influence it. Keep irreversible actions behind a person, and attack the whole system before launch.
Confident and wrong on unfamiliar inputA small open model scored 0.000 accuracy on Khmer text while reporting 0.952 confidence.Check language, script and format in code before the call. A confidence threshold cannot catch this.
Numbers, dates and countingTypeSafe's documentation says Jev “is not a calculator”, treats dates as text, and counts less reliably as lists grow.Do arithmetic, date logic and counting in code and pass the results in the state.
Literal readingThe model answers the wording, not the intent. Double negatives and questions that need several hops lower accuracy.Write direct instructions with boundary cases. Split an interpretive question into literal ones.
Forced choice and option orderA choice always returns one of your options, even when none fits. Jev's documentation notes a lean toward the first option.Add a “none of these” option or a companion noul (section 07). Shuffle the order in testing and check answers hold.
Too much stateIrrelevant detail lowers accuracy. Context limits run from 512 tokens on small encoder models to tens of thousands on hosted ones, and oversized requests are rejected.Give each question only the context it needs. Filter in code or with a noul first.
Bundled questions on very small modelsIn one audit, putting several questions in one request flipped 11.7% to 22.4% of yes/no decisions on a 0.8B model, against 0.1% to 0.2% on a 4B model.Use models of about 4B parameters or more for bundled requests, or compare bundled and separate answers on your own cases.
No explanationYou get numbers and no rationale. The same audit found attribution methods fast enough to use interactively, at 1.3 to 3.2 seconds per input.Log state, questions and probabilities. Where an explanation is required, escalate to a System 2 model or a person.
Small models without fine-tuningThe 421M-parameter Laya model is reported at 0.362 accuracy zero-shot, close to a 0.318 random baseline, and 0.766 after fine-tuning.Fine-tune small models on labelled data, or start with a larger one.

What the first independent audit supports

Calibration held up

Under shifted wording, models of 4B parameters or more had calibration error of 0.030 to 0.087. Generative baselines scored 0.144 using token probabilities and 0.378 using JSON output.

Injection detection was strong

Asked to spot prompt-injection attempts aimed at an LLM, the same models reached 0.988 to 0.998 AUROC at 48 to 60 ms per decision.

Confidence is a formula

The reported confidence was an exact function of the probabilities, such as how evenly they are spread. It is not an estimate of accuracy.

Read with careThe audit is a single-author preprint from November 2026 covering five open models, and it has not been peer reviewed. The two security results fit together: these models are good at detecting attacks on other models, and they can still be misled by fake evidence placed in their own input.

Sources: Check Point (manipulation test), Delaunay, arXiv 2611.12521 (audit), TypeSafe documentation (known rough edges), Sanjay Shankar (Khmer result, context limits), 47Billion (Laya figures). Retrieved November 2026.

12Cost and latency

A System 1 model reads your text and returns a few numbers. A chat model reads the same text and then writes its answer one token at a time. Most of the difference in cost and speed comes from that writing step.

Output is nearly free

Decision APIs typically bill input tokens only, because nothing is written back. Chat models bill every output token, usually at several times the input price.

No writing step

Chat latency grows with every output token, and more again with reasoning. A System 1 model's answers arrive in one pass.

Many questions, one call

Extra questions add a little input, not a longer answer. One provider reports 67 ms for one question and 81 ms for fifty. In an independent test, one call judged 20 transactions in 0.4 s.

Smaller models

Open models in this category range from under half a billion to 27 billion parameters, so many are cheap to serve and can run on your own hardware.

Estimate your monthly cost

Defaults: $0.04 is typical of the hosted decision APIs in section 15. $0.10 and $0.50 are the published input and output prices for OpenAI's GPT-6 Luna as reported in October 2026. Both sides include the questions in the input tokens. Sampling a chat model several times and counting the answers is the usual way to get rough probabilities from it.

Reported latency

ModelMedian latencyMeasured by
System 1 models
Cloudflare Clef-flash39 msCloudflare, on its own platform
Celeris-1 Decision67 msCeleris, from AWS us-east-1 (81 ms with 50 questions)
Microsoft-Decision-185 msMicrosoft (P95: 125 ms)
TypeSafe Jev135–524 msCeleris measured 135 ms; Cloudflare measured 524 ms; TypeSafe states 70–500 ms
Chat model
GPT-6 Luna, strict JSON schema, reasoning off1.3–2.6 seesel.ai test
GPT-6 Luna, single short answer110 msCeleris
Read with careThese figures come from different setups, regions and dates, and most were measured by a vendor about its own product. The two Luna rows show the pattern: a chat model asked for one short word can be fast, but full structured output with several fields takes seconds. Measure on your own workload, from the region you will deploy in, before you decide.

Sources: benchlm.ai (Celeris figures), eesel.ai (Cloudflare figures, Luna test and price), MarkTechPost (Microsoft figures), Dave Kerr (20-transaction test). Retrieved November 2026.

13Using it responsibly

A System 1 model is good at judgement calls on messy text. It shouldn't be the only thing standing between a request and an irreversible action.

Compute the hard facts in code

Money limits, date comparisons, eligibility rules and anything mandatory should be checked with ordinary code. Pass the results to the model as part of the state.

Recommend, don't approve

Use the output to route, prioritise and pre-fill. Keep people in charge of approvals, especially for legal, financial and safety decisions.

Never skip mandatory steps

A routing answer picks where the work starts. Steps your process requires, such as a compliance or security check, still happen whatever the model says.

Validate on labelled cases

Measure accuracy and calibration on real examples before you set thresholds, and keep measuring after launch.

Log everything

Store the state, questions, model version and probabilities. Without that record you can't explain or correct a decision later.

Protect the input

The state often holds personal or confidential data. Treat logs, stored requests and exports with the same care as the source.

Code decides
  • Limits and dates
  • Mandatory rules
  • Permissions
Model recommends
  • Urgency and severity
  • Routing
  • Risk signals in text
People approve
  • Uncertain cases
  • High-impact actions
  • Exceptions

14Putting it together

Each section above covers one piece. This is the order to use them in, from first draft to production.

  1. Write the questionsOne thing per question, distinct options, anchored levels. Put the policy and any facts computed in code into the state (section 06).
  2. Label real casesCollect 50 to 100 real inputs and record the answer a skilled person would give. Include hard and borderline cases, not just easy ones.
  3. Measure accuracy and calibrationFor nouls, compare against the labels at several cut-offs and draw a reliability chart. For choices, build a confusion matrix to see which options get mixed up. For scores, report exact matches and the share that are off by one level. Track false positives separately.
  4. Set thresholdsChoose cut-offs from the labelled results: how many automatic errors you can accept, and how much work the review queue can absorb (section 09).
  5. Test repeatability and option orderSend the same request 20 or more times and count decision flips near your cut-offs. Shuffle the options and check the answers hold (section 10).
  6. Attack itAdd misleading or injected content to realistic inputs and count how often the decision changes. Decide what screens the input before the model sees it (section 11).
  7. Decide what escalatesChoose which uncertain cases go to a reasoning model and which go to a person, and what each path costs (sections 03 and 07).
  8. Launch with people in the loopRoute and recommend rather than approve, log every request and answer, and repeat steps 3 to 6 whenever the model, the questions or the input format changes (section 13).

15System 1 models you can use

System 1 models became a product category in autumn 2026, and new ones appear every few weeks. These are widely discussed options as of November 2026. Prices are reported list prices per million input tokens; none of these providers lists a charge for output. Check each provider's page before you rely on a figure.

ModelProviderNotesInput, per 1M tokens
Hosted APIs
JevTypeSafe AILaunched the category in September 2026 (launch post). Text, JSON and image state; up to 255 options per choice$0.042
Microsoft-Decision-1Microsoft FoundryDeployed in your own Foundry resource; same /v1/systemone request shape; docs include a labelled-example test script$0.042 reported
Decisions APIOpenAIRuns on GPT-6 Luna with text and image input; opened in October 2026$0.10 reported
Celeris-1 DecisionCelerisCached input billed at the same rate (pricing)$0.04
d1-ultraLiquid AIHosted on the Liquid API (docs)$0.042
Decider v1.2 and Decider FlashPerplexity27B and 4B models (pricing)$0.02
GLiDEFastinoDescribed by Fastino as a decision model that reasons before it answers; weights under a community licence (pricing)$0.04
Drex MaxNace.AIListed on BenchLM; hosted, with open weights for one version$0.03 reported
Clef and Clef-flashCloudflare Workers AI27B and 9B; image and video input; open weights too (announcement)$0.24 / $0.09
Open weights: run on your own hardware
Strands Decider 2BAWS Strands LabsApache 2.0; runs on a single consumer GPU (announcement)Your hardware
d1 open modelsLiquid AISmall text, image and speech models from about 600M to 3B; LFM Open LicenseYour hardware
Decider v1 27BPerplexityApache 2.0 weights of the hosted modelYour hardware
LayaConvai InnovationsApache 2.0; 421M-parameter encoder with a 512-token context; about 33 ms on a GPU; needs fine-tuning for good accuracyYour hardware
SemIfCommunity (formerly OpenJev)MIT licence; built on a 4B base model; serves a Jev-compatible endpointYour hardware

The Microsoft-Decision-1 price is not on its documentation page; the figure shown is from press coverage. The OpenAI price is from press coverage of the October release. Several community fine-tunes of 4B open models sit near the top of the JevBench leaderboard alongside Jev; they are not listed here because they change weekly.

Comparing and switching

One API for many models

LiteLLM exposes several providers behind one decisions endpoint, so you can test models without rewriting your code.

Leaderboards

BenchLM tracks JevBench, a composite of accuracy, calibration, speed and cost, and links each provider's own results.

Before you chooseBenchmarks use different protocols, and many scores are reported by the model's own provider. Treat a leaderboard as a shortlist, then run your own labelled cases through two or three candidates (section 14, steps 2 and 3).

Sources: provider pages linked above; prices as reported by benchlm.ai and eesel.ai, October and November 2026.

Further reading

The examples, scenarios and demo numbers on this page are invented for illustration. Prices, latency figures, test results and model listings come from the public sources cited in each section, as of November 2026. Many are reported by vendors about their own products, and all of them change often.