この記事は2026年10月2日時点の情報です。各社の数値は提供元の公表値で、筆者が追試したものではありません。ベンチマークは誰が測ったかを併記し、測定条件が公開されていないものはその旨を書いています。
要点
- 意思決定モデル(System One Model)は、文章を生成せず、有限個の候補から選んで確率を返します。状態(state)、質問、選択肢を渡すと、各選択肢の確率が返ります。
- 形式を示したのは TypeSafe AI の Jev です(2026-09-15に初公開)。Cloudflare の Clef、Liquid AI の d1、Upstage の Solar Decide などが、同じ形式の API を提供しています。
- 構造は4つに分けられます。内部が非公開のホスト型、27B級のベースに LoRA とヘッドを付けたもの、0.8B〜9B級のベースに付けたもの、エンコーダ型です。
- Cloudflare が測った Jev の中央値は524.1msで、TypeSafe AI が示す応答時間の上限500msを超えています。測った人と条件が違う数字は、直接比べられません。
- 通常のLLMに構造化出力で enum を選ばせる方法でも、候補は有限に絞れます。意思決定モデルとの差は、各候補の確率が返ることと、出力の課金方式です。
- 特定のモデルに依存しないよう、インターフェースを1つ挟み、確信度が低いときだけ上位のモデルへ回す構成を最後に示します。
比較表
モデル本体を公開しているかどうかで、表を2つに分けました。確認できていない値は「未確認」「未公開」と書いています。
API で使うモデル(モデル本体は非公開)
| モデル | 提供元 | 入力 | 上限 | 入力の料金 |
|---|---|---|---|---|
| Jev | TypeSafe AI | テキスト | 64k | $0.042/MTok |
| d1 | Liquid AI | テキスト | 未公開 | 無料(d1:free) |
| Solar Decide | Upstage | テキスト | 512K | 未確認 |
| Decisions API | OpenAI | テキスト・画像(報道) | 未公開 | 未公開 |
モデル本体を公開しているモデル(手元で動かせる)
| モデル | 提供元 | 規模 | 画像 | 料金 |
|---|---|---|---|---|
| Clef | Cloudflare | 27B | 可 | $0.24/MTok(Workers AI) |
| Clef-flash | Cloudflare | 9B | 可 | $0.09/MTok(Workers AI) |
| Jeff 1 | Gestalt Lab | 4B | 不可 | 無料(自前で実行) |
| Jeff | firelex | 0.8B〜2B(実効) | 不可 | 無料(自前で実行) |
| Kev | Jared Palmer | 0.8B〜27B | 不可 | 無料(自前で実行) |
| Laya | Convai | 322M〜421M | 不可 | 無料(自前で実行) |
表の補足です。
- 「テキスト」には JSON も含みます。Clef の仕様ページには動画の記載もありますが、詳細は確認できていません。
- Jev の64kはリクエスト全体の上限です。state と最も長い1つの質問の合計は32kまでです。
- 出力は、Jev と Solar Decide が課金なしです。Clef の出力課金は確認できていません。d1 の有料価格は未発表です。
- Clef の料金は Workers AI で使う場合です。Clef もモデルのファイルが公開されているので、自前で動かすこともできます。画像は1回に最大4枚です。
- 「モデル本体を公開」は、学習済みのファイルを誰でもダウンロードできるという意味です。このファイルは学習で調整された数値の集まりで、一般に「重み(ウェイト)」と呼ばれます。Clef と Laya はモデル全体を配布しています。Jeff 1 と Kev の小型版は、公開されているベースモデル(Qwen)に重ねる追加分(LoRA アダプタとヘッド)だけを配布しており、ベースモデルは別に入手します。表の規模はベースモデルを含めた大きさです。Jeff(firelex)の Gemma 版は、実効2B・保存時4.6Bです。6つともライセンスは Apache 2.0 で、商用でも使えます(Jeff(firelex)はコードが MIT)。「無料(自前で実行)」は利用料がかからないという意味で、動かすためのGPUやサーバーの費用は別にかかります。
- 公開日は、Jev が2026-09-15(初公開。現行は1.13.0)、Kev 1.0 が10-01(日本時間10-02)、Jeff(firelex)が09-28、d1 と Decisions API が09-29(いずれも報道)、Clef が10-01です。Jeff 1 は09-22(報道)で、Solar Decide と Laya は確認できていません。
Jeff は同じ名前で別のプロジェクトが2つあります。この記事では「Jeff 1」と「Jeff(firelex)」と書き分けます。Laya にも、英語版 laya、多言語版 laya-multilingual、特化版 laya-typed-decisions の3つがあります。
意思決定モデルは何を返すのか
通常のLLMで分岐を決めるときは、文章を生成させ、JSON をパースして使います。
{
"prompt": "次の問い合わせの種別を billing / bug / other のどれかで答えてください。JSONで返してください。",
"output": "{\"category\": \"billing\"}"
}
出力は文字列です。形式が崩れればパースに失敗しますし、どのくらい自信があるのかも分かりません。
意思決定モデルは、状態と質問を渡すと、選択肢ごとの確率が返ります。以下は Jev の公式ドキュメントのフィールドに沿った例で、値は説明用です。
{
"model": "jev-latest",
"state": "問い合わせ本文: 先月の請求額が二重になっています。",
"questions": {
"category": {
"type": "choice",
"instructions": "問い合わせの種別を選んでください。",
"criteria": {
"billing": "料金・請求に関する問い合わせ",
"bug": "製品の不具合の報告",
"other": "上記以外"
}
}
}
}
{
"model": "jev-1.13.0",
"answers": {
"category": {
"type": "choice",
"choice": "billing",
"probabilities": { "billing": 0.93, "bug": 0.05, "other": 0.02 },
"confidence": 0.895
}
},
"usage": { "input_tokens": 120, "output_tokens": 2 }
}
confidence は、選択肢が n 個のとき (pmax − 1/n) / (1 − 1/n) で計算されます(Jev の公式ドキュメント)。この例は n = 3、最大確率 0.93 なので 0.895 です。
出力トークンについては、3つを分けて考える必要があります。
- 文章を生成しないこと。このカテゴリのモデルに共通します。
- 出力を課金しないこと。Jev は出力無料、Solar Decide は出力が課金されないと書かれています。
-
usage.output_tokensが0であること。d1 は常に0ですが、Jev、Kev、Ollama の公式例には0でない値があります。
Jev が決めた形式
TypeSafe AI は2026-09-15に、自社の Jev を System One Model として発表しました。公式ドキュメントでも "the first System One model" と書かれています。現行のバージョンは1.13.0です。
API の形
エンドポイントは POST https://api.typesafe.ai/v1/systemone です。Bearer 認証で、必須の項目は次の3つです。
-
state: 判断の材料になる状態(文字列、JSON オブジェクト、配列) -
model: モデル名。たとえばjev-latest -
questions: キーを付けた質問のマップ。各質問にtypeとinstructionsを持たせます
1回のリクエストに複数の質問を入れられます。質問の型は noul、choice、score の3種類です。
| 型 | 内容 | 返り値 |
|---|---|---|
| noul | はい/いいえの確率 |
{"type":"noul","noul":0.95} の形 |
| choice | 選択肢から1つ選ぶ |
choice、probabilities、confidence
|
| score | 順序のあるルーブリック(2〜10段階) |
score(段階の確率加重平均)、probabilities、confidence、legend
|
criteria で選択肢の意味を実行時に渡せる
従来の分類器は、ラベルを学習時に固定します。ラベルを増やしたり意味を変えたりするには、再学習が必要でした。
Jev の choice では、criteria に「選択肢名から説明へのマップ」を渡します。説明は文字列のほか、what、not_for、examples などを持つ構造化した形でも渡せます。選択肢の追加や定義の修正が、リクエストの書き換えだけで済みます。
料金と入力の制約
- 料金は入力 $0.042/MTok(10億トークンあたり $42)で、出力は無料です。
- コンテキストは、1リクエスト全体で64kトークンです。ただし、state と最も長い1つの質問の合計は32kまでです。
- 入力はテキストのみです。文字列、JSON オブジェクト、配列は渡せますが、画像、音声、動画は渡せません。
- レート制限は 100,000 tokens/s、40 req/s です。
速度と測定者による違い
TypeSafe AI のブログは、エンドツーエンドの応答時間を70ms〜500msとしています。ブログによれば、公開評価は一般に米国西海岸の自社のノートPCから測っています。ただし、70ms〜500msという範囲に対応する詳細な条件は、確認できていません。
一方、Cloudflare が Clef の発表で示した Jev の中央値は524.1msで、P95 は536.0msです。TypeSafe AI が示す上限の500msを超えています。測った人、場所、条件が違えば、同じモデルでも値が変わるという実例です。Cloudflare は Jev と互換性のある Clef を提供する立場でもあります。
学習手法として RLCD への言及がブログにありますが、詳細は確認できていません。パラメータ数とアーキテクチャは公開されていません。Vercel AI Gateway(/v1/evaluate)と OpenRouter(/api/v1/systemone)でも使えますが、これらは再配信で、公式エンドポイントではありません。
各モデルの解説
Clef / Clef-flash(Cloudflare)
Clef は Jev と API 互換で、エンドポイントとモデル名を変えれば Jev から切り替えられます。モデル本体は Apache 2.0 で公開され、画像を読むエンコーダを備えます。Jev がテキスト入力のみなのに対し、画像を状態として渡せる点を、ブログは差別化点として強調しています。
構造は Cloudflare の公式ブログに書かれています。Clef は Qwen3.8-27B、Clef-flash は Qwen3.5-9B のベースモデルを凍結し、rank-256 の LoRA とルーティングヘッドを一緒に最適化しています。LoRA とは、元のモデルの数値を動かさず、小さな追加の行列だけを学習する方法です。推論では prefill(入力の処理)だけを流してスコアを出します。学習には、label-smoothed cross-entropy と Brier loss を使っています。Brier loss は、予測した確率と正解のずれを測る指標です。
Workers AI のカタログから呼べます。コンテキストは64K、1リクエストあたり最大64質問です。画像は最大4枚で、埋め込み形式のみ(URL 指定は不可)、PNG / JPEG / WebP、1枚4MiB・16MPまでです。入力に動画も使えるとモデルページにはありますが、詳細な仕様は確認できていません。
そのほかに、顧客データで Clef を強化学習ファインチューニングするサービスも案内されています。当面は Cloudflare の forward-deployed engineer が支援し、将来はセルフサーブ化する予定です。
遅延は Cloudflare の自社測定で、ハードウェア、プロンプト長、測定場所などの条件は公開されていません。Cloudflare は43ベンチマークで評価したと記載しています。
| モデル | 中央値 | P95 |
|---|---|---|
| Clef | 209.3 ms | 238.6 ms |
| Clef-flash | 38.8 ms | 122.4 ms |
| Jev | 524.1 ms | 536.0 ms |
d1(Liquid AI)
d1 は Jev と同じスキーマのホスト型 API です。公式ドキュメントに "Decision models do not generate tokens" とあり、usage.output_tokens は常に0です。
エンドポイントは POST https://api.liquid.ai/decisions/v1/systemone です。型は noul、choice、score の3つで、noul は 0〜1 の値を返します。choice と score は probabilities と confidence を返し、score は legend も返します。SDK は TypeSafe の typesafe-sdk と @typesafe-ai/sdk をそのまま使えます。無料枠のモデル ID は d1:free です。
モデル本体は公開されていません。ローカル実行用の形式(GGUF、MLX、ONNX)での配布もなく、学習もできません。ローカル版は将来の予定と報じられています。有料の価格は未発表です。
Liquid AI は、Hugging Face の Decision Index で Jev を上回ったと主張しています。これは同社の主張で、公式のベンチ結果ページは確認できていません。
OpenAI Decisions API
2026-09-29の DevDay で発表されたと報じられています。公式ページの内容は、この記事では確認できていません。以下は報道に基づきます。
- GPT-6 Luna をベースにしているとの報道です。
- 選ばれた API 顧客向けの limited preview との報道です。
- 用途は、有限の回答空間を定義した分類、ルーティング、エージェントの次の一手の判断との報道です。
- 速度は、発表映像で約150msと主張されたとの報道です。
価格、スキーマ、確率を返すかどうかは、確認できていません。Jev 形式との互換性も確認できていないため、比較表の数値は埋めず、動向として紹介するにとどめます。
Jeff 1(Gestalt Lab)
Gestalt Lab の Jeff 1 は、Qwen3-4B-Instruct-2507 に LoRA アダプタ(Hugging Face の GestaltLabs/Jeff-1)を付け、Jev 形式の noul / choice / score リクエストに応えます。コードとアダプタは Apache 2.0 で、ベースモデル本体は含まれません。TypeSafe AI とは無関係の独立プロジェクトと明記されています。
生成はせず、候補ラベルを言語モデルのトークン確率でスコアします。候補の先頭トークンが異なれば先頭トークンの確率を、そうでなければ全系列のスコアを使います。候補トークンの確率を読む方式ですが、質問ごとに計算するため、1回の処理で全質問が終わる方式ではありません。
評価は作者自身によるものです。9,730件の事実検証データ(FEVER、VitaminC、SciFact、Climate-FEVER)で、次の結果が README に載っています。Macro-F1 は、クラスごとの F1 を平均した指標で、クラスの偏りの影響を抑えます。
| 精度 | Macro-F1 | |
|---|---|---|
| Jeff 1 | 81.83%(7,962 / 9,730) | 0.7789 |
| Jev 1.13.0 | 82.83% | 0.7994 |
この数値は事実検証タスクだけのものです。README 自身が、この評価セットを誤り分析にも使っており、未使用のテストセットではないと述べています。
Jeff(firelex)
GIGAZINE が、Jev 互換で約22〜28ミリ秒と紹介したのは、こちらのプロジェクトです。Jeff 1 とは別です。GitHub は firelex/jeff で、Hugging Face では mstrasser/Jeff-* として公開されています。Gestalt Lab との関係は確認できていません。公式の Changelog によると、v1.0の初公開は2026-09-28です。
モデルは Jeff-Qwen3.5-0.8B、Jeff-Qwen3.5-2B、Jeff-Gemma4-E2B(有効2B・保存4.6B)の3つです。コードは MIT、モデル本体は Apache 2.0 です。作者は Denis Yarats の AutoJev レシピ(MIT)に着想を得たと説明しています。LoRA アダプタを差し替えられる HTTP API と、Python・TypeScript のクライアントが付きます。
作者の測定による中央値の遅延は、次のとおりです。
| 環境 | 0.8B | 2B | E2B |
|---|---|---|---|
| RTX PRO 6000 | 22ms | 24ms | 29ms |
| Apple M4 Max(MLX) | 28ms | 60ms | 未確認 |
| CPU(32スレッド) | 463ms | 708ms | 約1.0秒 |
精度は5ベンチ(4,599問)で、Jeff が78.7〜81.7%、Jev は公表値で83.0%、AutoJev-27B は84.9%と、作者が報告しています。ただし、Jev や AutoJev の値は、同じベンチマークの別のサンプルで測った値で、作者も条件が違うと明記しています。差を直接比べることはできません。
Kev(Jared Palmer)
Kev は、Jev 互換の /v1/systemone を実装した、サイズ違いのファミリーです。Kev-0.8B、4B、9B は、それぞれ Qwen3.5 の Base モデルに rank-16 の LoRA と pointer head を付けています。Kev-27B だけは Qwen3.8-27B のフルファインチューンで、LoRA ではありません。
pointer head は、各選択肢の末尾トークンの隠れ状態と、質問の最後に置いた判断用トークンの隠れ状態を照合してスコアを出し、softmax で確率にする層です(Kev の公式ドキュメント)。判断用トークンは最後に置かれるため、選択肢の一覧全体を参照できます。1リクエスト内の質問は互いに独立で、相互参照はできません。文書の表現だけが質問間で共有されます。
精度は作者の測定で、評価セットは「New Sources」です。Jev の値は Kev の README が載せている参照値で、dev のみ、test は未測定です。
| モデル | 精度(dev / test) |
|---|---|
| Kev-0.8B | 0.648 / 0.697 |
| Kev-4B | 0.817 / 0.838 |
| Kev-9B | 0.820 / 0.852 |
| Kev-27B | 0.851 / 0.889 |
| Jev(参照値) | 0.857 / 未測定 |
遅延も作者の測定で、短文、6問、20回の中央値、ネットワーク時間を除く条件です。新規テキスト / キャッシュありの順に、Kev-4B は H100 で 18.1ms / 12.9ms、L40S で 41.5ms / 27.7ms です。Kev-27B は H100 で 75.0ms / 52.0ms ですが、この値は旧チェックポイントのものです。Kev-27B には80GB の GPU か、96〜128GB の Apple Silicon が必要で、後者は作者の見積もりです。ライセンスは Apache 2.0ですが、学習データは別ライセンスです。
Laya(Convai)
Laya は、Jeff や Kev が言語モデルに LoRA やヘッドを足しているのに対し、エンコーダ型です。入力を非自己回帰の単一の順伝播で処理し、トークンを順に生成しません。
公開されているのは3つの版です。
-
laya: 汎用の英語版です。ModernBERT-large(395M)に、2層の Transformer、選択肢の位置を示すマーカーを使うスコアラー、行動してよいかのスコア(act_probability)を出す act / escalate ヘッドを足した計421Mです。ただし公式のモデルカードは、このスコアはほぼすべての入力で1.0になり、現状では判断に使える信号を持たないとしています。確信度(confidence)で判定するよう案内しています。コンテキストは512です。 -
laya-multilingual: mmBERT-base の322Mで、100言語以上に対応します。コンテキストは既定1,024で、8,192まで拡張できます。 -
laya-typed-decisions: 特定のタスク向けにファインチューニングした版で、コンテキストは1,024です。汎用向けではないと作者自身が警告しています。
特化版の数値は、4つの合成ワークフローで精度0.766、Brier 0.062、ECE 0.213です。ECE は、予測した確信度と実際の正答率のずれを測る指標で、小さいほど確率が正直です。選択肢が多いタスク(Banking77)では0.425という結果もモデルカードにあります。多言語版は確率の較正をしておらず、過信する傾向があると作者が書いています。
Laya には laya-serve というサーバーがあり、Jev と同じ要求・応答の形で /v1/systemone を提供します。TypeSafe のクライアントは接続先を変えるだけで使えると、公式のモデルカードに書かれています。
遅延の数字は、測った人ごとに条件が違います。
- Cloudflare の測定: 5.8ms(条件は未公開)
- Convai の記載: 約33ms(GPU、単一クエリ)
- 公式モデルカード(
laya)の Tesla T4 での記載: 421M が39.5ms、322M が32.8ms
5.8msと33msは、測った人も条件も違うため、直接は比べられません。なお、Cloudflare は Laya を、非常に速い一方で、ベンチマークの品質は犠牲にしていると記述しています。
Solar Decide(Upstage)
Solar Decide はコンテキストが512Kで、Jev と Clef の64Kの8倍です。長い文書全体を state として渡せます。
POST /v1/systemone 互換で、モデル名は solar-decide のみです。choice は2〜26択で、A〜Z の単一トークンのラベルのロジット(出力前のスコア)から判断を読むと、公式のページに書かれています。
ベータ版で、GA 前にスキーマが変わる可能性があります。出力トークンは課金されませんが、入力単価、公開日、ベンチマークは確認できていません。
構造で4つに分ける
仕組みの違いで分けると、次のようになります。この分類は筆者の整理で、各社の区分ではありません。
| 分類 | 代表 | 公開されている構造 | 実行形態 |
|---|---|---|---|
| A 内部が非公開のホスト型 | Jev、d1、Solar Decide | Solar Decide はラベルのロジットを読む。ほかは非公開 | API のみ |
| B 27B級ベース + LoRA / ヘッド | Clef(rank-256 LoRA + ルーティングヘッド)、Kev-27B(フルファインチューン) | Clef は Qwen3.8-27B を凍結 | 本体公開。Clef は Workers AI でも提供 |
| C 0.8B〜9B級ベース + LoRA / ヘッド | Clef-flash(9B)、Jeff 1(4B)、Jeff(firelex)、Kev 0.8B〜9B | ベースを Qwen3.5 など | 本体公開。ローカルで実行できる |
| D エンコーダ型 | Laya | 非自己回帰の単一の順伝播 | 本体公開。ローカルで実行できる |
C の遅延は、GPU では数十msの値が作者から報告されています。CPU では Jeff(firelex)が463ms〜約1.0秒でした。Clef の構造が公開されたため、「Clef は大型ベースに LoRA とヘッドを付けたもの」と「Clef-flash は小型寄りのベースに同じ手法を使ったもの」は、規模の違いだけで同じ手法の仲間として並べています。Solar Decide は、ラベルの読み方だけが公開で、モデルの規模と学習方法は未公開です。
通常のLLM + 構造化出力との違い
AI SDK の generateObject に zod の enum を渡す方法でも、有限個の候補から1つを選ばせられます。以下は擬似コードで、実行確認はしていません。AI SDK のバージョンによって引数や名前が違う場合があります。
import { generateObject } from "ai";
import { z } from "zod";
const { object } = await generateObject({
model, // 任意のLLM
schema: z.object({ category: z.enum(["billing", "bug", "other"]) }),
prompt: "問い合わせ本文: 先月の請求額が二重になっています。",
});
// object.category === "billing"
結果は1つの値です。以下は仕組みから導いた筆者の見立てで、同条件で実測した結果ではありません。
| 観点 | 意思決定モデル | LLM + 構造化出力 |
|---|---|---|
| 候補を有限に絞る | 可能 | 可能(enum への制約・検証) |
| 確率 | 選択肢ごとに返る | 通常は返らない(一部の API は出力トークンの確率を取れる) |
| 候補の定義 | リクエストごとに criteria で渡せる |
プロンプトや schema で渡せる |
| 出力トークン | d1 は常に0。Jev、Kev、Ollama は0でない例がある | 回答の生成にトークンを使う |
| 出力の課金 | Jev は無料、Solar Decide は課金されない。d1 の有料価格は未発表、Clef は未確認 | 一般にトークンごとに課金される |
| 入力長の上限 | Jev は state と最長の1質問で32k、Laya 英語版は512 | 使うLLMのコンテキスト長 |
エージェントの中での使いどころ
ループの中では、次のツールの選択や、直前の呼び出しが成功したかの判定のような、有限候補の判断が繰り返し出ます。ここに意思決定モデルを使うと、判断ごとに確率が手に入ります。
たとえば、1回のタスクで30回判断するとします。Cloudflare が公表した中央値を単純に掛けると、次のとおりです。
| モデル | 中央値 | 30回分の合計 |
|---|---|---|
| Jev | 524.1ms | 約15.7秒 |
| Clef | 209.3ms | 約6.3秒 |
| Clef-flash | 38.8ms | 約1.2秒 |
これは Cloudflare 公表の中央値を単純に掛けた試算で、ネットワーク条件などは考慮していません。通常のLLMとの比較ではなく、この3つの間の差を見るための数字です。1つのリクエストに複数の質問を入れられるので、判断の回数を減らせる場合もあります。
3層構成の見立て
エージェントを、推論モデル、意思決定モデル、決定的なコード、ツールの順につなぐ構成を、筆者は考えています。設計の見立てで、各社が推奨する構成ではありません。
意思決定モデルの出力は確率なので、決定的なコード側で「確信度がしきい値を下回ったらツールを実行しない」と書けます。ただし、confidence の意味はモデルごとに違い得ます。次の節で述べるとおり、しきい値はモデルごとに決める必要があります。
選び方
| 状況 | 候補 | 理由と注意 |
|---|---|---|
| すでに Cloudflare を使っている | Clef / Clef-flash | Workers AI から呼べ、Jev 互換。遅延は Cloudflare の自社測定 |
| まず基準の API として試したい | Jev | 形式を示したモデル。state と最長の1質問は32kまで。料金は公開されている |
| ローカルで動かし、自分で調整したい | Jeff 1、Jeff(firelex)、Kev | モデル本体が公開されている。Jeff(firelex)は LoRA アダプタの差し替えに対応。精度は作者の自己評価 |
| エンコーダ型を試したい | Laya | 英語版、多言語版、特化版の3つ。特化版は汎用向けではない。laya-serve で /v1/systemone 互換のサーバーを立てられる |
| 長い文書を丸ごと渡したい | Solar Decide | 512K。ベータでスキーマが変わりうる |
| 画像を判断に使いたい | Clef / Clef-flash | 最大4枚。Jev はテキストのみ。OpenAI は報道では画像入力に対応 |
Strands Decider 2B という名前の AWS 関連モデルが、報道では存在するとされています。AWS 公式、Hugging Face、GitHub では確認できていないため、比較に含めません。
特定のモデルに依存しない設計
/v1/systemone 形式が共通なので、呼び出し側にインターフェースを1つ置くと、モデルを入れ替えやすくなります。以下は考え方を示す短い例です。
type Choice<T extends string> = {
choice: T;
probabilities: Record<T, number>;
confidence: number;
};
interface DecisionProvider {
choose<T extends string>(
state: string,
criteria: Record<T, string>,
): Promise<Choice<T>>;
}
Jev、Clef、d1、Kev、Jeff をこのインターフェースの実装として包みます。エンドポイントと認証だけが違う /v1/systemone 互換のモデルなら、1つの実装を共有できる場合もあります。Laya も laya-serve を使えば、同じ実装に載せられます。
確信度が低いときだけ上位のモデルへ回す
確信度が低い判断だけを、上位のモデルで処理し直す構成です。
Jev の confidence は、前述の式で選択肢数を踏まえて正規化された値です。ほかのモデルが同じ意味とは限りません。たとえば Laya の多言語版は、確率の較正をしておらず、過信する傾向があると作者が書いています。しきい値を決める前に、手元のデータで確信度と正答率の関係を測ってみてください。
ローカルで試す
ローカルで動かす手段として、Ollama 本体と Ollaya があります。名前が似ていますが、別のものです。
- Ollama 本体は、公式ブログ(2026-09-29)で決定モデルへの対応を発表しました。0.35 から対応しています。モデルは Nimble(Bespoke Labs)、Tev1(Together AI)、Tev1:0.8b で、ローカルの
/v1/systemoneで呼べます。choice は2〜26択です。今後 MLX に対応する予定です。 - Ollaya は、Mert Cobanov 氏によるオープンソース(Apache 2.0)のランタイムです。Ollama および TypeSafe とは無関係と自称しています。
localhost:11435で、独自の/api/decideと TypeSafe 互換の/v1/*を提供します。winnow、laya、kev、decider、nli、qwen3guard など16のモデルファミリーに対応し、Windows、macOS、Linux で動きます。選択肢は最大255です。
Ollaya の性能の数字(laya が CPU で約10ms など)は、Ollaya の公式サイトの記載で、第三者の測定ではありません。
まとめ
- 意思決定モデルは、状態、質問、選択肢を渡すと、各選択肢の確率を返します。文章は生成しません。
- Jev が形式を示し、Clef、d1、Solar Decide が同じ形式の API を提供しています。Clef と Clef-flash、Jeff 1、Jeff(firelex)、Kev は、ベースモデルに LoRA やヘッドを付けた構造で、Laya はエンコーダ型です。
- Cloudflare が測った Jev の中央値524.1msは、TypeSafe AI の示す上限500msを超えています。Laya の5.8msとConvai の約33msも、測定者が違います。
- 構造化出力でも候補は有限に絞れます。意思決定モデルとの違いは、各候補の確率が返ることと、出力の課金方式です。
- 呼び出し側にインターフェースを置き、確信度が低いときだけ上位のモデルへ回す構成を示しました。
confidenceの意味とモデルごとの較正は、しきい値を決める前に確認が必要です。
出典
公式ページ(提供元のドキュメント、ブログ、リポジトリ)です。
- TypeSafe AI ブログ(Jev 発表)
- TypeSafe AI ドキュメント(API)
- TypeSafe AI ドキュメント(モデル)
- TypeSafe AI ドキュメント(choice)
- TypeSafe AI ドキュメント(confidence)
- Cloudflare ブログ(Clef)
- Cloudflare changelog(Clef)
- Workers AI の Clef モデルページ
- Workers AI の Clef-flash モデルページ
- Liquid AI ドキュメント(決定モデル)
- Gestalt Lab の Jeff 1 リポジトリ
- firelex/jeff リポジトリ
- jaredpalmer/kev リポジトリ
- Laya モデルカード(laya)
- Laya モデルカード(laya-typed-decisions)
- Laya モデルカード(laya-multilingual)
- Upstage コンソール(Solar Decide)
- Ollama 公式ブログ(決定モデル対応)
- Ollama ドキュメント(決定モデル)
- Ollaya 公式サイト
報道(公式ページで確認できなかった内容)の出典です。