d1-ultra は、Liquid AI が 2026-10-15 に発表した決定モデルだ。文章を生成せず、型を決めた質問に答えごとの確率を返す。質問の型は TypeSafe の Jev と同じで、Liquid AI の公式サンプルは同じ本文を両方に送っている。

この記事では、Jev の Python SDK(typesafe-sdk 0.7.5)を d1-ultra に向けたときに何が送られるかを、手元の記録用サーバで受けて確かめた。実際の API とモデルは呼んでいない。

WHAT CHANGESJevのコードから

d1-ultraに向けるとき書き換えるのは2か所

Jev(SDKの既定)

d1-ultra に向ける

Jev(SDKの既定): base_url: api.typesafe.ai

d1-ultra に向ける: base_url: api.liquid.ai/decisions

Jev(SDKの既定): model: jev-latest

d1-ultra に向ける: model: d1-ultra

Jev(SDKの既定): 質問: Noul / Choice / Score

d1-ultra に向ける: 同じ(本文のキーも同じ)

Jev(SDKの既定): 送り先: /v1/systemone

d1-ultra に向ける: /decisions/v1/systemone

出典: typesafe-sdk 0.7.5 のソースと Liquid4All/cookbook road-decider(2026-10-17確認)。実APIへの送信は未検証

30秒でわかる d1-ultra(2026-10-17時点)

  • ・正体:Liquid AI のホスト型の決定モデル。文章ではなく、答えごとの確率を返す。
  • ・何ができる:分類・振り分け・採点を、はい/いいえ・選択肢・段階の3つの型で1往復で答える。
  • ・実測:Jev の SDK は base_url と model を替えると、Liquid AI の経路 /decisions/v1/systemone へ同じ形の本文を送った。
  • ・注意:ベンチマークと価格は Liquid AI の発表値。重みは配布されず、手元に置けるのはオープン版の d1-3B。

決定モデルを含む LLM 全体の地図はLLMとは?仕組み・主要モデル比較・ローカル実行・量子化を一気にまとめる2026年版にまとめている。

「d1」という名前のものは他にもある。検索で混ざりやすいので先に分けておく。

名前 何か この記事での扱い
d1-ultra(Liquid AI) ホスト型の決定モデル(2026-10-15発表) 主題
d1・d1-3B・d1-omni-600M(Liquid AI) 同じ系列。d1 はホスト型、d1-3B と d1-omni-600M は重みを配布 比べる相手
d1(dllm-reasoning/d1) 拡散型LLMの推論を強化学習で伸ばす研究のコード 無関係
AGIBOT D1 Ultra 四足歩行ロボット 無関係

答えの確率だけを返すLiquid AIの決定モデルd1-ultra

決定モデルは判断材料(state)と、型を決めた質問(questions)を受け取り、許された答えそれぞれの確率を返す。チャットのように文章は書かない。型は noul(はい/いいえ)・choice(選択肢から1つ)・score(順序のある段階)の3つで、Liquid AI の cookbook も d1 の型としてこの3つを挙げている。

仕組みの源流である Jev についてはJevとは|文章を返さないSystem Oneモデルの正体を公式SDKのコードで実測し、Claude Codeで試すで SDK のコードから読んだ。d1-ultra はその同じ契約の上に、Liquid AI が自社のモデルを載せたものだ。

Liquid AI の発表では、d1-ultra は系列の最上位にあたる。発表の要点は次のとおり。

・入力はテキストと画像。44言語に対応
・入力100万トークンあたり0.042ドル、出力は0ドル
・Liquid API、OpenRouter、Vercel AI Gateway から使える
・パラメータ数は公表していない

系列の4つと Jev 1.14 を並べると次のようになる。当サイトで確かめられなかった値は「未確認」とした。

観点 d1-ultra d1 d1-3B Jev 1.14
提供形態 ホスト型 ホスト型(cookbook の例は d1:free) 重みを配布(LiquidAI/d1-3B) ホスト型(TypeSafe)
入力 テキスト+画像(発表) 未確認 テキスト+画像(LFM2.5-VL-3B が土台) 未確認
規模 非公表 非公表 3B(cookbook の記載) 非公表
価格(入力100万トークン) 0.042ドル・出力0(発表) 未確認 自前の計算資源 0.042ドル・出力0(Jev 公開時の公称)
文脈長 未確認 未確認 未確認 未確認
ライセンス API の利用規約 API の利用規約 LFM Open License v1.0(発表) API の利用規約(SDK は MIT)
呼び方 /decisions/v1/systemone 同左(cookbook で確認) model.system_one(...) /v1/systemone

JevのSDKからd1-ultraへ送る中身

Liquid AI の cookbook にある road-decider(決定モデルが車線を選ぶゲーム)は、d1 と Jev を同じ本文で呼び分けている。設定ファイルでは d1 の送り先が https://api.liquid.ai に /decisions/v1/systemone を足したもの、Jev は OpenRouter の /api/alpha/decisions だ。README は「本文は両方の API で同じで、変わるのは URL・鍵・モデル名だけ」と書いている。

では、すでに Jev の Python SDK を使っているコードはどうか。typesafe-sdk 0.7.5 のソースを読むと、送り先は base_url に /v1/systemone を足して決まる。base_url を https://api.liquid.ai にすると /v1/systemone に送られ、cookbook の経路とずれる。cookbook と合わせるには https://api.liquid.ai/decisions を渡す。

ONE ROUND TRIP1往復の中身

文章を作らず答えごとの確率が返る

  1. state

    判断材料の文(画像も可と発表)

  2. questions

    noul・choice・score

  3. SDK

    POST /decisions/v1/systemone

  4. d1-ultra

    Liquid AI のホスト型

  5. answers

    選んだ値・確率・confidence

出典: Liquid4All/cookbook road-decider README、送信本文は当サイトが記録用サーバで確認(2026-10-17)

SDK は PyPI から入る。新しい venv で次を実行し、2.65秒で依存ごと入った。

python3 -m venv .venv
.venv/bin/pip install typesafe-sdk==0.7.5

呼び出しは次のとおり。LIQUID_API_KEY には Liquid AI のコンソールで発行した鍵を入れる。

import os
from typesafe_sdk import TypeSafeClient, Noul, Choice, Score

client = TypeSafeClient(
    api_key=os.environ["LIQUID_API_KEY"],
    base_url=os.environ.get("D1_BASE_URL", "https://api.liquid.ai/decisions"),
    model="d1-ultra",
)
r = client.system_one(
    state="Customer: I was charged twice for my October invoice. Please fix it today.",
    questions={
        "refund": Noul(instructions="The customer is asking for a refund."),
        "route": Choice(
            instructions="Which team should handle this?",
            criteria={"billing": "Billing", "tech": "Technical support", "other": "Other"},
        ),
        "urgency": Score(instructions="How urgent is this?", criteria=["later", "this week", "today"]),
    },
)
print(r.model, r.answers["route"].choice, r.answers["route"].probabilities)

当サイトでは D1_BASE_URL を手元の記録用HTTPサーバ(http://127.0.0.1:<ポート>/decisions)に向け、このコードをそのまま実行した。サーバが受けた内容は次のとおり。

項目 記録した値
送り先 POST /decisions/v1/systemone
本文のトップレベル state・model・questions の3つ(453バイト)
model d1-ultra
質問の形 各質問が type・instructions・criteria を持つ。cookbook の choice と同じキー
見出し Authorization: Bearer …・X-TypeSafe-SDK: typesafe-sdk/0.7.5

陰性対照として base_url を /decisions なしにすると、送り先は /v1/systemone になった。

コードに手を入れたくない場合は環境変数でも替えられる。次の4行を実行すると、引数なしの TypeSafeClient() が向け先とモデル名を拾ったことを表示する(通信はしない。鍵が空だと SDK が No API key was provided で止まる)。

export TYPESAFE_API_KEY="$LIQUID_API_KEY"
export TYPESAFE_BASE_URL=https://api.liquid.ai/decisions
export TYPESAFE_DEFAULT_MODEL=d1-ultra
.venv/bin/python -c 'from typesafe_sdk import TypeSafeClient; c = TypeSafeClient(); print(c._config.base_url, c._config.default_model)'

出力は https://api.liquid.ai/decisions d1-ultra だった。_config は SDK の内部属性なので、確認以外には使わない。

答えの形は cookbook の README が示すとおり answers.<名前> に choice・probabilities・confidence が入る。

未検証の範囲

  • ・Liquid API へ実際に送ること。鍵の発行・課金・レイテンシ・返ってくる確率は確かめていない。
  • ・モデル名。d1-ultra は発表の表記に合わせた。cookbook の例は d1:free なので、コンソールで名前を確かめてから使う。
  • ・画像。SDK 0.7.5 には画像を multipart で送る部品があるが、Liquid API がこの形を受けるかは確かめていない。
  • ・SDK の4つ目の型 Box(位置の特定)。cookbook が d1 の型に挙げるのは3つで、d1-ultra が受けるかは未確認。

d1-ultraの公表値とAA Decision Indexの読み方

Liquid AI の発表では、d1-ultra は Artificial Analysis の Decision Index で65となり、それまで首位だった Jev 1.14(57)を上回った。Liquid AI 自身の112評価のスイートでも8分野すべてで首位、平均76.7(Jev 1.14 は69.4)としている。どちらもLiquid AI が公表した値で、当サイトでは再現していない。

読むときの注意は2つある。

ひとつは指標が何を測っているか。決定モデルは確率を返すので、正解率だけでは良し悪しが決まらない。Liquid AI は確率の校正(確信度と実際の当たり具合が合うこと)も改善したとしている。校正の指標は分け方で値が大きく動くことを、Clefとは|Cloudflareの決定モデルの「Jev互換」を両側のJSONを生成して突き合わせたで実測した。自分のデータで Brier スコアを取って比べるのが確実だ。

もうひとつは比べた相手と版だ。Jev は版が上がるたびに性能が変わる。cookbook の road-decider の既定は OpenRouter 上の typesafe/jev-1.13 で、発表が比べた 1.14 とは版が違う。

BEFORE YOU SWITCH切り替える前に

d1-ultraを試す前に確かめる3点

  1. 1.model 名と経路

    cookbook の例は d1:free。d1-ultra の名前はコンソールで確かめる

  2. 2.公表値は Liquid AI の計測

    AA Decision Index 65 などは自分のデータで測り直す

  3. 3.重みが要るなら d1-3B

    d1-ultra は API だけ。手元に置くならライセンス本文を読む

出典: Liquid4All/cookbook・typesafe-sdk 0.7.5(2026-10-17確認)。公表値は Liquid AI の発表

d1-ultraとオープン版d1-3Bの使い分け

重みを手元に置きたいなら、d1-ultra ではなく d1-3B になる。cookbook の SFT ノートブック2本から分かることは次のとおり。

・d1-3B は LFM2.5-VL-3B をもとにした3B の決定モデル
・trust_remote_code=True で読み込み、model.system_one と model.system_one_batch で同じ形の答えを返す
・choice の選択肢は26個までは A〜Z、それを超えると 00〜76 の2桁の符号で表す
・score の段階は2〜10
・ノートブックは transformers 5.19.0(TRL 版)と 5.17.0(Unsloth 版)を指定

ノートブックの出力に残る答えも、API と同じ answers と usage の形で、output_tokens は0だった。Banking77 の100件では、微調整前の正解率83.0%が LoRA の微調整後に88.0%になったと出力されている。これは Liquid AI がノートブックを実行したときの値で、当サイトでは d1-3B を動かしていない。

使い分けの目安は次のとおり。

やりたいこと 向く方
既存の Jev コードのまま精度の高い判定を試したい d1-ultra(向け先とモデル名を替える)
データを外に出せない・オフラインで判定したい d1-3B
自社のラベルで微調整したい d1-3B(cookbook に LoRA の手順)
画像を混ぜた判定を API で行いたい d1-ultra(画像の送り方は公式ドキュメントで確認)

d1-3B のライセンスは Liquid AI の発表では LFM Open License v1.0 で、年間売上1,000万ドル未満は商用で無料、それを超えると別の契約が要る。使う前に配布物の LICENSE を読んでほしい。

送る本文が Jev と同じなので、移行の手間は小さい。一方で、名前が同じ「Decisions」でも契約が違う API がある点はDecisions APIとは|Jevの対抗馬と同名OSS実装の差をスキーマ15ケースで実測で整理した。

この記事の結論

  • ・Jev の Python SDK を使っているなら、base_url を https://api.liquid.ai/decisions、model を d1-ultra の名前に替えれば、Liquid AI の経路へ同じ形の本文が送られる。
  • ・AA Decision Index 65 などの数字は Liquid AI の発表値。切り替える前に自分のデータで正解率と Brier スコアを取る。
  • ・重みが要る用途は d1-3B。ライセンスの売上条件を先に確かめる。

参照ソース

・Liquid AI — d1-ultra 発表 — 発表日・入力の種類・言語数・価格・ベンチマーク
・Liquid AI Docs — Decision models — 決定モデルの API の公式ドキュメント
・Liquid AI Docs — d1
・OpenRouter — liquid/d1-ultra
・Hugging Face — LiquidAI/d1-3B
・Hugging Face Blog — open d1
・Liquid4All/cookbook — road-decider の設定と README、d1-3B の SFT ノートブック2本(2026-10-17時点・コミット 744c5b6)
・typesafe-sdk 0.7.5(PyPI) — 送り先の組み立て・質問の型・環境変数(2026-10-17時点)
・dllm-reasoning/d1 — 同名の拡散LLM研究(判別のため)