Skip to main content

Decision model benchmarks

These benchmarks test every decision model that LiteLLM supports on three jobs: as a guardrail, as an Auto Router classifier, and as an LLM judge for Lens Signals. Each model got the same requests through a LiteLLM proxy on /v1/decisions in October 2026. The self-hosted models ran on an 8-core CPU without a GPU, so their latency does not compare with the hosted models

The best model depends on the job. GPT-6 Luna is in the top group as a guardrail and as a Lens judge, but it sends 15 of 80 prompts to a cheaper tier in the Auto Router test. Decision-1 ties for second on routing but picks the right evidence for only 44% of Lens flags

Guardrails​

The guardrails test has 394 coding-agent tool calls, 195 dangerous and 199 safe. Each model answers the same yes/no question about a call, and the call is blocked when the probability is 0.5 or more. This is how the Decision Model guardrail uses a decision model

agrees with the labelover-blocks a safe callmisses a dangerous call
Hosted APIs
Top tier · within noise
pplx-decider v1.1 / v1
Perplexity
$0.010 / 1k calls · p50 0.40s
v1 returned identical scores
97.7%
385 of 394
Jev 1.14
TypeSafe
$0.029 / 1k calls · p50 0.29s
97.5%
384 of 394
Clef
Cloudflare
$0.131 / 1k calls · p50 0.60s
97.2%
383 of 394
GPT-6 Luna
OpenAI
$0.055 / 1k calls · p50 0.35s
96.7%
381 of 394
Jev 1.13
TypeSafe
$0.029 / 1k calls · p50 0.24s
95.2%
375 of 394
gpt-oss-120b chat baseline
Fireworks
$0.184 / 1k calls · p50 1.13s
chat model with the auto-mode safeguards prompt
93.9%
370 of 394
Rune
Fireworks
$0.021 / 1k calls · p50 0.34s
87.1%
343 of 394
Decision-1
Azure AI Foundry
$0.018 / 1k calls · p50 0.67s
86.8%
342 of 394
Clef Flash
Cloudflare
$0.049 / 1k calls · p50 0.57s
ranks well (AUROC 0.96), scores sit below the 0.5 cutoff
71.1%
280 of 394
Clef Omni
Cloudflare
$0.081 / 1k calls · p50 0.40s
ranks well (AUROC 0.95), scores sit below the 0.5 cutoff
67.0%
264 of 394
OpenJev Qwen3.5 4B
Databricks
cost not tracked · p50 0.32s
ai_decide matched OpenJev on every call
59.4%
234 of 394
Open weightsSelf-hosted on an 8-core CPU, no GPU. Latency is not comparable to the hosted rows
Bespoke Nimble 9B
Bespoke via Ollama
your hardware · p50 11.96s
ranks well (AUROC 0.94), scores sit below the 0.5 cutoff
74.9%
295 of 394
Laya English
Laya
your hardware · p50 1.42s
no better than chance (AUROC 0.42)
50.3%
198 of 394
Laya Multilingual
Laya
your hardware · p50 0.85s
no better than chance (AUROC 0.58)
49.7%
196 of 394
Laya Typed Decisions
Laya
your hardware · p50 1.59s
no better than chance (AUROC 0.45)
48.2%
190 of 394
Strands Decider 2B
Strands Agents
your hardware · p50 3.62s
no better than chance (AUROC 0.42)
48.0%
189 of 394

Oct 2026. The top four are within noise (95% CI about ±2 points). The chat baseline uses the Claude Code auto-mode safeguards prompt. Cost from x-litellm-response-cost; Databricks cost is not tracked yet.

pplx-decider, Jev 1.14, Clef and GPT-6 Luna are within noise of each other at about 97%. Almost all errors are dangerous calls that the model lets through, and no hosted model blocks more than 3 safe calls. Clef Flash, Clef Omni and Bespoke Nimble 9B rank dangerous calls above safe ones well, with an AUROC of 0.94 to 0.96, but their scores sit below 0.5, so a lower threshold catches more of the dangerous calls. The gpt-oss-120b row is a chat model with the Claude Code auto-mode safeguards prompt, for comparison. The Laya models and Strands Decider 2B score no better than chance on these long tool-call inputs

Auto Router classification​

The routing test has 80 prompts with an authored tier, 20 each for SIMPLE, MEDIUM, COMPLEX and REASONING. Each model answers the same choice question that picks the tier, the way the Auto Router decision classifier does

picks the authored tierover-routes (pricier tier)under-routes (cheaper tier)
Hosted APIs
Top tier · within noise
pplx-decider v1.1 / v1
Perplexity
$0.010 / 1k calls · p50 0.27s
v1 returned identical scores
97.5%
78 of 80
Rune
Fireworks
$0.021 / 1k calls · p50 0.07s
95.0%
76 of 80
Jev 1.13
TypeSafe
$0.032 / 1k calls · p50 0.09s
95.0%
76 of 80
Jev 1.14
TypeSafe
$0.032 / 1k calls · p50 0.11s
95.0%
76 of 80
Decision-1
Azure AI Foundry
$0.019 / 1k calls · p50 0.40s
95.0%
76 of 80
Clef
Cloudflare
$0.138 / 1k calls · p50 0.35s
93.8%
75 of 80
Clef Flash
Cloudflare
$0.052 / 1k calls · p50 2.65s
88.8%
71 of 80
OpenJev Qwen3.5 4B
Databricks
cost not tracked · p50 0.23s
86.2%
69 of 80
Clef Omni
Cloudflare
$0.086 / 1k calls · p50 0.18s
83.8%
67 of 80
GPT-6 Luna
OpenAI
$0.049 / 1k calls · p50 0.14s
81.2%
65 of 80
ai_decide
Databricks
cost not tracked · p50 0.26s
78.8%
63 of 80
Open weightsSelf-hosted on an 8-core CPU, no GPU. Latency is not comparable to the hosted rows
Bespoke Nimble 9B
Bespoke via Ollama
your hardware · p50 8.76s
93.8%
75 of 80
Strands Decider 2B
Strands Agents
your hardware · p50 2.65s
86.2%
69 of 80
Laya Typed Decisions
Laya
your hardware · p50 1.71s
53.8%
43 of 80
Laya English
Laya
your hardware · p50 1.98s
52.5%
42 of 80
Laya Multilingual
Laya
your hardware · p50 0.73s
40.0%
32 of 80

Oct 2026. 80 cases, so the top six are within noise (95% CI about ±5 points). Cost from x-litellm-response-cost; Databricks cost is not tracked yet.

pplx-decider routes 78 of 80 prompts to the authored tier. With only 80 prompts, the top six models are within noise of each other, about 5 points either way. Most errors send a prompt to a cheaper tier than the authored one. Bespoke Nimble 9B is the best self-hosted model at 93.8% and never picks a pricier tier

LLM as a judge (Lens Signals)​

This benchmark uses decision models to find LiteLLM Lens signals in agent traces. Each model received the same 621 yes/no questions for 207 test traces, three per trace. For each question, the model also picked the part of the trace that shows the problem, or none

agrees with the labelfalse flagmissed flagno answer
Hosted APIs
Top tier · within noise
GPT-6 Luna
OpenAI
$0.151 / 1k traces · p50 0.25s
right evidence passage for 98% of yes answers
99.4%
617 of 621
pplx-decider v1.1 / v1
Perplexity
$0.021 / 1k traces · p50 0.38s
right evidence passage for 95% of yes answers
99.2%
616 of 621
Rune
Fireworks
$0.057 / 1k traces · p50 0.13s
right evidence passage for 96% of yes answers
98.7%
613 of 621
Clef
Cloudflare
$0.343 / 1k traces · p50 0.49s
right evidence passage for 83% of yes answers
97.9%
608 of 621
Jev 1.13
TypeSafe
$0.053 / 1k traces · p50 0.13s
right evidence passage for 99% of yes answers
97.1%
603 of 621
Jev 1.14
TypeSafe
$0.053 / 1k traces · p50 0.16s
right evidence passage for 100% of yes answers
97.1%
603 of 621
Clef Flash
Cloudflare
$0.129 / 1k traces · p50 0.70s
right evidence passage for 90% of yes answers
93.7%
582 of 621
Decision-1
Azure AI Foundry
$0.041 / 1k traces · p50 0.49s
right evidence passage for 44% of yes answers
93.2%
579 of 621
Clef Omni
Cloudflare
$0.213 / 1k traces · p50 0.22s
right evidence passage for 80% of yes answers
92.8%
576 of 621
OpenJev Qwen3.5 4B
Databricks
cost not tracked · p50 0.29s
right evidence passage for 91% of yes answers
90.2%
560 of 621
Open weightsSelf-hosted on an 8-core CPU, no GPU. Latency is not comparable to the hosted rows
Bespoke Nimble 9B
Bespoke via Ollama
your hardware · p50 30.11s
right evidence passage for 87% of yes answers
94.4%
586 of 621
Strands Decider 2B
Strands Agents
your hardware · p50 30.03s
right evidence passage for 79% of yes answers
84.1%
522 of 621
Laya Typed Decisions
Laya
your hardware · p50 11.52s
right evidence passage for 32% of yes answers
74.6%
463 of 621
Laya English
Laya
your hardware · p50 10.78s
right evidence passage for 29% of yes answers
57.0%
354 of 621
Laya Multilingual
Laya
your hardware · p50 4.33s
right evidence passage for 20% of yes answers
42.7%
265 of 621

Oct 2026. Labels checked by an independent judge. ai_decide matched OpenJev and pplx-decider v1 matched v1.1 on every call. Strands failed on 9 traces (6 too long for its context, 3 server errors), counted as no answer. Cost and p50 are per trace, one request for all three signals, from x-litellm-response-cost; Databricks cost is not tracked yet.

GPT-6 Luna, Perplexity, Fireworks Rune and Cloudflare Clef agree with the labels on 97.9% to 99.4% of the questions. Decision-1 agrees on 93.2%, but it picks the right part of the trace for only 44% of the questions whose label is yes. Bespoke Nimble 9B gives the best self-hosted result, 94.4%

The traces are short and synthetic, about six steps each, so real traffic is harder and the top scores sit close together. An OpenAI model wrote the traces, which can give OpenAI models a small advantage. A Claude model checked every label before the runs, and the 13 traces where it disagreed were left out

On the chart, "right evidence passage for X% of yes answers" is the share of the questions whose label is yes where the model picked a part of the trace that the label marks as evidence. That is 157 questions for every model but Strands Decider 2B, which answered 155 of them. The 621 questions come from 207 requests, one per trace, so the chart gives cost and p50 latency per trace. Cost is the x-litellm-response-cost header, and the self-hosted models ran on an 8-core CPU, so their latency does not compare with the hosted models

pplx-decider v1 and v1.1 gave the same scores and picks on every trace, so the chart shows them as one bar. Databricks ai_decide and OpenJev gave the same yes or no answer on every question, and the chart shows the OpenJev run. LiteLLM sends null for an evidence option that has no description, and Strands Decider 2B answers that with a 422, so its run gave each option a short description such as excerpt L000. It still could not fit 6 traces in its context window and returned a 500 on 3 more, so those 27 questions count as no answer

Download the Lens Signals data and scripts to check these numbers.

LiteLLM Enterprise
SSO/SAML, audit logs, spend tracking, multi-team management, and guardrails, built for production.
Learn more →