Jev TypeScript クイックスタート
Jev は TypeScript にしっくり馴染みます:欲しい形を宣言すれば、型付きで返ってきます。全体の流れはこれだけ — インストール、キー、動く例、そして 3 つのプリミティブ — コード以外に読むものはありません。
どの例にも jv_live_ key が必要です。pricing ページで取得し、JEV_API_KEY としてエクスポートすれば準備完了です。 キーを取得 →
すでに TypeScript から Jev を使おうとしているなら、あなたが欲しいのは TypeScript が他のあらゆる場面で与えてくれるものと同じ:契約です。必要な判断を宣言し — これらの key の中から choice、このスケールで score、校正済みの yes/no — その形をそのまま受け取ります。解析すべき余計な段落も、たまに壊れる JSON も返ってきません。それが "type-safe" な AI 呼び出しの全てであり、Jev が素の LLM の周りに書く防御的なパースなしに型付きコードベースに収まる理由です。
1. インストール
npm i @typesafe-ai/sdk2. キーを設定
pricing ページで jv_live_ key を取得し、環境変数に入れます。SDK が自動で読み取るので、機密情報がソースに入り込みません。
export TYPESAFE_API_KEY=jv_live_...3. 30 行の動く例
1 回の呼び出し、2 つの型付きの答え — ルーティングに使える choice と、しきい値を設定できる校正済みの yes/no:
import { TypeSafe } from "@typesafe-ai/sdk";
const client = new TypeSafe(); // reads TYPESAFE_API_KEY
const resp = await client.systemOne({
model: "jev-latest",
state: "Customer: I was charged twice and I am furious.",
questions: {
topic: {
type: "choice",
instructions: "What is the issue about?",
criteria: { billing: "money problems", bug: "broken product" },
},
urgent: {
type: "noul",
instructions: "Escalate to a human now?",
},
},
});
// typed, calibrated — branch on it directly
if (resp.answers.urgent.noul > 0.7) escalate(ticket);
routeTo(resp.answers.topic.choice); // "billing" | "bug"出力のパースも、スキーマ検証も、壊れた JSON へのリトライもないことに注目してください。resp.answers.topic.choice は、モデルがそれ以外を返せないので、あなたの criteria key のいずれかであり、resp.answers.urgent.noul は 0 から 1 の数値です。それが型契約の仕事です。
3 つのプリミティブ
- choice — あなたの key の 1 つを、選択肢ごとの確率とともに返す。ルーティングと分類向け。
- score — あなたが定義した順序スケール上の数値を、分布とともに返す。品質・リスク・優先度の評価向け。
- noul — 確率付きの校正済み yes/no。ゲートとチェック向け。
1 回の呼び出しで複数まとめて尋ねられます — 上の例では 2 つ尋ねています — それぞれ独立に型付きで返ります。これで往復が減ります:1 リクエストで同じ入力を分類・採点・ゲートできます。
校正についての注意
Jev が返す確率は校正済みです。つまり多数の呼び出しにわたって 0.8 はおよそ 80% の割合で正しいはず — ただし校正は全体の性質であり、個々の答えの保証ではありません。だから生の数値が "十分に自信がある" と決めつけず、自分のラベル付きデータに対してしきい値を設定してください。ホスト型で固定バージョンのモデルの利点は、いったんしきい値を調整すれば、デプロイをまたいでも意味を保ち、足元で漂流しないことです。
SDK なしがいい?
POST 1 回です — fetch と Bearer key でゲートを直接叩きます:
const r = await fetch("https://jevtypesafeai.com/api/v1/decide", {
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${process.env.JEV_API_KEY}`,
},
body: JSON.stringify({ state, questions }),
});
const { answers } = await r.json();バッチ、既製の endpoints、または完全なフィールドリファレンスが必要?docs が全体をカバーしています。
よくある質問
TypeScript から Jev を使うのに TypeSafe SDK は必要?
いいえ。SDK は薄い便利ラッパーにすぎません。Jev は POST 1 回なので、素の fetch と Bearer key で呼べます。SDK は型付きヘルパーを提供し、環境からキーを読むだけです。
Jev の出力は本当に type-safe?
はい — choice の質問はあなたが定義した criteria key の 1 つだけを返し、score はあなたのスケール上の数値を返します。モデルは無効な型を出せないので、素の LLM の周りに書く防御的パースを省けます。
TypeScript から Jev を呼ぶのと LLM を呼ぶのはどう違う?
LLM は自由テキスト(または検証やときにリトライが必要な JSON)を返します。Jev は 70–500ms で型付き・校正済みの値 — key、数値、または確率 — を返すので、直接分岐できます。書くには LLM を、決めるには Jev を。
Jev 呼び出しのコストは?
1 判断あたり約 $0.001。課金は入力トークンのみで約 100 万あたり $0.42、出力は無料 — なので 1 回の呼び出しで複数の質問をしても安上がりです。
1 リクエストで複数の質問を尋ねられる?
はい。questions マップに複数のエントリを渡せば、それぞれ resp.answers 内で独立に型付きで返るので、往復は 1 回で済みます。
関連: API ドキュメント & リファレンス · API の使い方 · Jev と LLM の比較