Jev Recipe / ベンダー比較

Jev vs OpenAI Decision API(Luna):型付き決定 API の正面比較

OpenAI が DevDay で Jev 対抗として GPT-6 Luna ベースの Decision API を発表しました。契約の違いを比較します。事前定義された回答セット vs Choice/Score/Noul の 3 プリミティブ、150ms vs 約95ms、非公開 vs 公開の価格設定、そして2つの信頼度スコアにそれぞれどれだけの信頼を置けるか。

決定 API を選ぶ前の 6 つのチェック

01まず、チャットモデルではなく同じ契約を比較していることを確認します。どちらも「コンテキスト + 質問 + 事前定義された回答セット → 単一の回答 + 信頼度」という形です。2 社のベンダーが 1 か月で同じ形状に収束したこと自体が、型付き決定が市場で検証された証拠です。
02ベンダー選びの前に、業務上の判断をプリミティブにマッピングします。Choice は N 択ルーティング、Score は順序付きスコア、Noul は yes/no ゲートです。Luna プレビューがカバーするのは回答セットのケースのみで、順序付き Score の質問に対応する機能はまだありません。
03両 API の料金を実際の呼び出し量で試算します。Jev は公開価格で入力 100 万トークンあたり $0.042・出力無料。Decision API は limited preview 段階では単価未公開です。分類規模のワークロードでは「価格未公開」は詳細ではなく移行リスクです。
04自動化のしきい値は「信頼度の数値があること」ではなく「較正されていること」に置きます。Jev の確率は RLCD 較正済みで、0.85 のしきい値は正確率の契約です。Luna の信頼度セマンティクスがどうであれ、自動実行の前に自分のラベル付きサンプル約 100 件で検証してください。
05モダリティとデプロイの境界を正直に確認します。Luna の context は今日から画像入力に対応、Jev の state はテキスト(視覚判断は OpenJev エコシステム)。判断を自社ハードウェア内に留める必要があるならローカル経路は OpenJev クローンで、Luna にセルフホスト経路はありません。
06ベンダー選択の自由を設計に組み込みます。決定呼び出しを 1 つのインターフェースに集約して Jev ゲートと Luna 呼び出しをいつでも交換できるようにし、信頼度ゲート付きフォールバックチェーンでどちらのモデルの低信頼帯も同じレビュー待ち行列へ送ります。
schema / 型付きマルチ質問契約
{
  "routing": {
    "type": "choice",
    "instructions": "Which queue should this ticket go to?",
    "criteria": {
      "billing": "Payment, invoice or refund issue",
      "technical": "Product malfunction or bug",
      "sales": "Buying or upgrade question",
      "abuse": "Safety or abuse report"
    }
  },
  "needs_safety_escalation": {
    "type": "noul",
    "instructions": "Does this ticket require a safety escalation regardless of queue?"
  },
  "urgency": {
    "type": "score",
    "instructions": "Rate how urgent a human reply is, 1 (routine) to 5 (business-stopping)"
  }
}
このスキーマは Jev 契約の深さを 1 画面にまとめたものです。Playground で 3 質問同時評価と較正済み信頼度を確認できます。

決定 API 契約の比較:Jev 型付きプリミティブ vs OpenAI Decision API(Luna)

METRIC
Jev
OpenAI Decision API (Luna)
利用可能性(2026 年 10 月)
一般提供中——セルフサービスで API キーを発行、OpenRouter やゲートウェイ経由でも利用可能
DevDay(2026-09-29)で発表された limited preview。「数日中」の広域提供を予告——プレビュー段階の契約は変更される可能性があります
質問契約
型付き Choice(N 択・選択肢ごとに criteria)+ Score(1〜5 の順序付き)+ Noul(yes/no)——複数質問が 1 呼び出しを共有
質問 + 事前定義のフラットな回答セット + コンテキスト——1 呼び出し 1 判断。回答数の上限は未公開
1 判断あたりのレイテンシ
約 70〜100ms の単一フォワードパス——テキストを生成しない
約 150ms(OpenAI 公表値、GPT-6 Luna チャットの 1.6 秒との対比)——こちらも生成ではなく単一パス
価格の透明性
公開:入力 100 万トークンあたり $0.042、出力無料——10 万判断で数セント
プレビュー段階では非公開——「広域提供時に詳細を公表」(The New Stack、2026-09-29)
信頼度のセマンティクス
RLCD 較正済みの確率——0.85 は約 85% の正解率を意味し、しきい値が正確率の契約として機能
信頼度スコアは返るが較正手法は未公開——自分のラベルで検証するまでランキングシグナルとして扱うべき
モダリティとデプロイ
テキスト state(視覚判断は OpenJev エコシステム)。OpenJev クローンで自社ハードウェアにローカル実行可能
context は今日から画像入力に対応(OpenAI changelog)。OpenAI ホストのみ——セルフホストやオンプレミスの経路なし

コード対照:OpenAI decisions エンドポイント vs Jev 型付き呼び出し

python / openai decisions endpoint(limited-preview 形状)
import os
import requests

# Limited-preview shape (announced 2026-09-29). Verify against the
# current reference at broad rollout - preview APIs move.
resp = requests.post(
    "https://api.openai.com/v1/decisions",
    headers={"Authorization": f"Bearer {os.environ['OPENAI_API_KEY']}"},
    json={
        "model": "gpt-6-luna",
        "context": "Ticket: my invoice shows the same charge twice...",
        "question": "Which queue should this ticket go to?",
        "answers": ["billing", "technical", "sales", "abuse"],
    },
    timeout=5,
)
resp.raise_for_status()
decision = resp.json()  # -> {"answer": "billing", "confidence": 0.91}

# One flat answer set per call: no per-option criteria, no second
# question sharing the call, no ordered score primitive.
python / jev 型付きマルチ質問ゲート
import requests

JEV_ENDPOINT = "https://api.typesafe.ai/v1/jev/evaluate"
AUTO_ROUTE_CONFIDENCE = 0.85

QUESTIONS = {
    "routing": {
        "type": "choice",
        "instructions": "Which queue should this ticket go to?",
        "criteria": {
            "billing": "Payment, invoice or refund issue",
            "technical": "Product malfunction or bug",
            "sales": "Buying or upgrade question",
            "abuse": "Safety or abuse report",
        },
    },
    "needs_safety_escalation": {
        "type": "noul",
        "instructions": "Does this ticket require a safety escalation regardless of queue?",
    },
    "urgency": {
        "type": "score",
        "instructions": "Rate how urgent a human reply is, 1 (routine) to 5 (business-stopping)",
    },
}

resp = requests.post(
    JEV_ENDPOINT,
    json={"state": {"ticket": "..."}, "questions": QUESTIONS},
    timeout=5,
)
resp.raise_for_status()
data = resp.json()

route = data["routing"]  # criteria-checked answer + calibrated confidence
if (
    route["confidence"] >= AUTO_ROUTE_CONFIDENCE
    and not data["needs_safety_escalation"]["answer"]
):
    lane = f"auto:{route['answer']}"  # ~70-100ms, input tokens only
else:
    lane = "review"  # 0.60-0.85 band or safety flag
typescript / openai decisions endpoint(limited-preview 形状)
const resp = await fetch("https://api.openai.com/v1/decisions", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    model: "gpt-6-luna",
    context: "Ticket: my invoice shows the same charge twice...",
    question: "Which queue should this ticket go to?",
    answers: ["billing", "technical", "sales", "abuse"],
  }),
});
// Limited-preview shape (announced 2026-09-29) - verify at broad rollout.
const decision = (await resp.json()) as {
  answer: string;
  confidence: number;
};
typescript / jev 型付きマルチ質問呼び出し
const JEV_ENDPOINT = "https://api.typesafe.ai/v1/jev/evaluate";
const AUTO_ROUTE_CONFIDENCE = 0.85;

const QUESTIONS = {
  routing: {
    type: "choice",
    instructions: "Which queue should this ticket go to?",
    criteria: {
      billing: "Payment, invoice or refund issue",
      technical: "Product malfunction or bug",
      sales: "Buying or upgrade question",
      abuse: "Safety or abuse report",
    },
  },
  needs_safety_escalation: {
    type: "noul",
    instructions:
      "Does this ticket require a safety escalation regardless of queue?",
  },
  urgency: {
    type: "score",
    instructions:
      "Rate how urgent a human reply is, 1 (routine) to 5 (business-stopping)",
  },
} as const;

const resp = await fetch(JEV_ENDPOINT, {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({ state: { ticket: "..." }, questions: QUESTIONS }),
});
const data = await resp.json();

const lane =
  data.routing.confidence >= AUTO_ROUTE_CONFIDENCE &&
  !data.needs_safety_escalation.answer
    ? `auto:${data.routing.answer}`
    : "review";

Jev vs OpenAI Decision API よくある質問

OpenAI の Decision API とは何ですか?

2026-09-29 の OpenAI DevDay で発表された非チャット系エンドポイントです。GPT-6 ファミリーで最小・最安のモデル Luna の上に構築されています。質問・事前定義された回答セット・コンテキストを送ると、約 150ms で回答セットの中から 1 つの回答と信頼度スコアを返します。公開は limited preview で「数日中」の広域提供が予告されており、呼び出し単価は発表時点で未公開です。The New Stack は TypeSafe の Jev への対抗と報じています。

Decision API と Jev は同じものですか?

同じカテゴリですが、契約が異なります。どちらも非生成型で、コンテキスト + 質問 + 固定の回答セットを入力すると 1 つの回答と信頼度が返ります。違いは契約の深さです。Jev は選択肢ごとに criteria を持たせた Choice(ポリシーがレビュー可能なコードに残る)、順序付き判断をカバーする Score、複数質問の 1 呼び出し共有、RLCD 較正済みの確率、公開された入力課金のみの価格($0.042/M)、OpenJev エコシステムによるセルフホスト経路を備えます。Luna の対抗点はよりシンプルなリクエスト形状、今日から使える画像コンテキスト、OpenAI ファーストパーティ統合です——引き換えにプレビュー段階の価格と較正の透明性を持ちます。

今すぐ本番環境で使うならどちらを選ぶべきですか?

Luna が limited preview の間は Jev が既定値です。一般提供済みで、しきい値は較正済み、価格は公開済み、移行もアダプタ関数 1 つで済みます。Luna を先に見るべきは 3 つのケースです。スタックが OpenAI 前提、判断に画像コンテキストが必要、単一ベンダーの請求が価格透明性より重要。どちらを選ぶ場合でも、信頼度だけでの自動実行の前に、自分のワークロードから約 100 件のラベル付きサンプルを両ゲートに通してください。

両方を 1 本のパイプラインで使えますか?

使えます。パターンも既に文書化されています。コード内の 1 つの決定インターフェースの背後に両方を隠蔽し、信頼度ゲート付きフォールバックチェーンにルーティングを任せます。Jev ゲートを常設の第一通過に、画像コンテキストが助けになる判断を Luna に、そして同じ 0.60〜0.85 のレビュー帯がどちらのベンダーの低信頼出力も受け止めます。ベンダー交換のコストはリライトではなくアダプタになります。

Jev vs Luna ベンチマークガイドとの違いは何ですか?

このページはプロダクトと API の契約を比較します。リクエスト形状、プリミティブ、レイテンシ、価格、較正、デプロイです。Jev vs Luna ベンチマークガイドは実測タスク結果を比較します。505 サンプルのサードパーティ評価で、Jev が約 $0.01 対 $0.06 のコストで 382/505 を取り、Luna が勝ったケースも含まれています。両方読んでください。契約は何を構築できるかを、ベンチマークは構築したときに何を期待すべきかを教えます。

プレビュー契約が変わったらコードはどうなりますか?

OpenAI は「広域提供時に詳細を公表する」としているので、リクエストとレスポンスのフィールドは動くと想定してください。だからこそ Luna 呼び出しは 1 つのアダプタ関数の中に収め、アプリケーション層からは直接見えないようにします。Jev の evaluate エンドポイントは公開以来、一般提供で変更なしです。どちらにしても約 100 件の評価セットは手元に残してください。ゲートを交換して再検証するのは四半期ではなく 1 午後の作業です。

契約と実測の両面をさらに深める