本文へスキップ
Jev | typesafeAPI & Playground
…

概念

Jev の概念とプリミティブ

このサイト向けに構築しますか?まずは ホスト API ガイド と プリペイド料金 から。このページは Choice / Score / Noul と背景のアクセス選択肢を説明します — jv_live_ キー作成の主経路ではありません。

このページは概念レイヤです。プリミティブ、料金コンテキスト、実装メモ。計量エンドポイントへのコピペ呼び出しは 入門ガイド とホスト API ドキュメントを参照。

アクセス方法

このサイトでの最短経路:サインイン → 小さなプリペイドパック購入 → jv_live_ キー作成 → POST /api/v1/decide。上流 TypeSafe キーはサーバーに残ります。生の TypeSafe 資格情報が必要な場合のみ公式待機リストとサードパーティゲートウェイを。

アクセス選択肢

  1. このサイトでのホスト(クイックスタート推奨):料金 + アカウント — /api/v1/decide とツール向けのプリペイドトークンと jv_live_ キー。
  2. 公式 / ゲートウェイ代替:typesafe.ai の待機リスト、および OpenRouter、Vercel AI Gateway、Cloudflare AI(すでにそれらの課金がある場合)。

重要な制限:ダウンロード可能なモデルファイルはありません。Jev をローカルで自己ホストできません。推論はすべてクラウド(本ホスト、TypeSafe、またはゲートウェイ)で実行されます。

料金メモ

公開された TypeSafe カード:入力は約 $0.042 / 百万トークン。出力トークンは無料。本サイトの小売パックは Pricing に掲載(ホスティング費用のため高いことが多い)。

このホストのプリペイドパックとライブ計量は Pricing を参照。他で上流を呼ぶ場合はゲートウェイのマークアップが残る場合があります。

Jev の3つの中核プリミティブ

Jev リクエストは3種類のプリミティブ質問で構成されます。各リクエストは state(入力コンテキストまたはプログラムデータ)と型付き質問リストを送ります。Jev は校正された確率付きの構造化型結果を返します。

  1. Choice: 事前定義した選択肢から1つを選ぶ。典型用途は エージェントルーティング と分類。
  2. Score: 定義した尺度やルーブリック上の数値位置を返す。リスクスコアや重大度評価に典型的。
  3. Noul: はい/いいえ判断の確率を返す。モデレーションゲートや単純なブールフィルタに典型的。

短い定義は 用語集 にもあります。

インストール

decide 呼び出しに公式 Jev npm/pip パッケージは不要です。ライブ例はホストガイドを優先。最小の HTTP POST はどの言語でも動きます。Node.js 18+ は組み込みの fetch を使えます。Python は広く使われる requests をインストール:

terminal
pip install requests

このサイトでは Account で jv_live_ キーを作成。@typesafe/jev-sdk のような架空のパッケージ名を作らないでください。

env.sh
# Store keys outside source control
export JEV_API_KEY="YOUR_API_KEY"
# Or, when calling through OpenRouter:
# export OPENROUTER_API_KEY="YOUR_OPENROUTER_KEY"

最小の完全 API リクエスト JSON

以下で使うホストエンドポイント:POST https://jevtypesafe.org/api/v1/decide。対話テストと curl/Python/TypeScript タブは API ガイドを開いてください。

request.json
{
  "state": "Customer message: my order has not arrived",
  "questions": {
    "ticket_routing": {
      "type": "choice",
      "options": ["support", "logistics", "billing"]
    },
    "is_urgent": {
      "type": "noul"
    },
    "severity_level": {
      "type": "score",
      "criteria": ["calm", "frustrated", "angry"]
    }
  }
}

コピペ可能な API 例

本サイトの decide API に対するコミュニティ HTTP 例。JEV_API_KEY を Account の jv_live_ キーに置き換えてください。完全ガイド:/docs/api。

Node.js

call-jev.mjs
// Minimal raw API call — hosted decide on this site
// Replace with a jv_live_ key from Account
async function callJev() {
  const apiKey = process.env.JEV_API_KEY;

  const payload = {
    state: "Customer message: my order has not arrived",
    questions: {
      ticket_routing: {
        type: "choice",
        instructions: "Route this ticket",
        criteria: { support: "product help", logistics: "shipping", billing: "payment" },
      },
    },
  };

  const res = await fetch("https://jevtypesafe.org/api/v1/decide", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${apiKey}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify(payload),
  });

  if (!res.ok) {
    throw new Error(`Jev request failed: ${res.status}`);
  }

  return res.json();
}

Python

call_jev.py
# Minimal raw API call — hosted decide on this site
# Requires: pip install requests
# Replace with a jv_live_ key from Account
import os
import requests

def call_jev():
    api_key = os.environ["JEV_API_KEY"]
    payload = {
        "state": "Customer message: my order has not arrived",
        "questions": {
            "ticket_routing": {
                "type": "choice",
                "instructions": "Route this ticket",
                "criteria": {"support": "product help", "logistics": "shipping", "billing": "payment"},
            }
        },
    }
    response = requests.post(
        "https://jevtypesafe.org/api/v1/decide",
        headers={
            "Authorization": f"Bearer {api_key}",
            "Content-Type": "application/json",
        },
        json=payload,
        timeout=30,
    )
    response.raise_for_status()
    return response.json()

ベストプラクティス

  1. API キーは環境変数に。フロントエンドへは出さない(意図的なブラウザキーテスターを除く)。
  2. 繰り返し決定タスクにリクエストキャッシュを入れ、呼び出しとコストを削減。
  3. 一時的なネットワーク障害にリトライを追加。
  4. 送信前にすべての入力 schema を検証。
  5. 自動化が必要なら自由テキストプロンプトより Choice / Score / Noul を優先。

実装メモ

生プロンプトではなく決定アイデンティティでキャッシュ

質問セットと正規化した state フィールドをハッシュ。同じルーティング決定なら前回結果を再利用。モデレーションスコアやツール選択などのホットパスで特に有効。

schema 不一致時は fail closed

応答が期待する決定 schema と合わない場合、黙ってデフォルト分岐へ coerce しない。記録し、安全なフォールバックを返し、アラート。

生成 LLM は決定ゲートの後ろに

先に Jev を呼ぶ。ルートが分かってからチャット型モデルを呼ぶ。具体例は 本番ユースケース。

Jev の概念 | Choice, Score, Noul & System One