概念
Jev の概念とプリミティブ
このサイト向けに構築しますか?まずは ホスト API ガイド と プリペイド料金 から。このページは Choice / Score / Noul と背景のアクセス選択肢を説明します — jv_live_ キー作成の主経路ではありません。
このページは概念レイヤです。プリミティブ、料金コンテキスト、実装メモ。計量エンドポイントへのコピペ呼び出しは 入門ガイド とホスト API ドキュメントを参照。
アクセス方法
このサイトでの最短経路:サインイン → 小さなプリペイドパック購入 → jv_live_ キー作成 → POST /api/v1/decide。上流 TypeSafe キーはサーバーに残ります。生の TypeSafe 資格情報が必要な場合のみ公式待機リストとサードパーティゲートウェイを。
アクセス選択肢
- このサイトでのホスト(クイックスタート推奨):料金 + アカウント — /api/v1/decide とツール向けのプリペイドトークンと jv_live_ キー。
- 公式 / ゲートウェイ代替:typesafe.ai の待機リスト、および OpenRouter、Vercel AI Gateway、Cloudflare AI(すでにそれらの課金がある場合)。
重要な制限:ダウンロード可能なモデルファイルはありません。Jev をローカルで自己ホストできません。推論はすべてクラウド(本ホスト、TypeSafe、またはゲートウェイ)で実行されます。
料金メモ
公開された TypeSafe カード:入力は約 $0.042 / 百万トークン。出力トークンは無料。本サイトの小売パックは Pricing に掲載(ホスティング費用のため高いことが多い)。
このホストのプリペイドパックとライブ計量は Pricing を参照。他で上流を呼ぶ場合はゲートウェイのマークアップが残る場合があります。
Jev の3つの中核プリミティブ
Jev リクエストは3種類のプリミティブ質問で構成されます。各リクエストは state(入力コンテキストまたはプログラムデータ)と型付き質問リストを送ります。Jev は校正された確率付きの構造化型結果を返します。
- Choice: 事前定義した選択肢から1つを選ぶ。典型用途は エージェントルーティング と分類。
- Score: 定義した尺度やルーブリック上の数値位置を返す。リスクスコアや重大度評価に典型的。
- Noul: はい/いいえ判断の確率を返す。モデレーションゲートや単純なブールフィルタに典型的。
短い定義は 用語集 にもあります。
インストール
decide 呼び出しに公式 Jev npm/pip パッケージは不要です。ライブ例はホストガイドを優先。最小の HTTP POST はどの言語でも動きます。Node.js 18+ は組み込みの fetch を使えます。Python は広く使われる requests をインストール:
pip install requestsこのサイトでは Account で jv_live_ キーを作成。@typesafe/jev-sdk のような架空のパッケージ名を作らないでください。
# 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 ガイドを開いてください。
{
"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
// 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
# 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()ベストプラクティス
- API キーは環境変数に。フロントエンドへは出さない(意図的なブラウザキーテスターを除く)。
- 繰り返し決定タスクにリクエストキャッシュを入れ、呼び出しとコストを削減。
- 一時的なネットワーク障害にリトライを追加。
- 送信前にすべての入力 schema を検証。
- 自動化が必要なら自由テキストプロンプトより Choice / Score / Noul を優先。
実装メモ
生プロンプトではなく決定アイデンティティでキャッシュ
質問セットと正規化した state フィールドをハッシュ。同じルーティング決定なら前回結果を再利用。モデレーションスコアやツール選択などのホットパスで特に有効。
schema 不一致時は fail closed
応答が期待する決定 schema と合わない場合、黙ってデフォルト分岐へ coerce しない。記録し、安全なフォールバックを返し、アラート。
生成 LLM は決定ゲートの後ろに
先に Jev を呼ぶ。ルートが分かってからチャット型モデルを呼ぶ。具体例は 本番ユースケース。