Jev は TypeSafe AI が出しているモデルで、LLM のように文章を書きません。こちらが選択肢や段階を決めて質問を渡すと、どれに当たるかを確率で返します。このページでは、Jev に何を渡して何が返ってくるのかを、実際のリクエストで確かめます。
文章ではなく、型の決まった値を返す
公式ドキュメントは、LLM に判断をさせるときのずれを次のように説明しています。
you are coercing a text-generation system into outputting structured decisions, then parsing the results back into something your code can depend on.
出典: https://docs.typesafe.ai/introduction.md(取得日: 2026-09-23)
LLM は人が読む文章を書くためのモデルです。その文章から判断の結果を読み取るには、パースの処理が要ります。Jev は最初から型の決まった値を返すので、この手間がありません。質問の型は 3 つです。
| 型 | 聞くこと | 返るもの |
|---|---|---|
| Choice | 選択肢のどれか | 選んだ選択肢、選択肢ごとの確率、confidence |
| Score | 段階評価のどこか | 段階の期待値、段階ごとの確率、confidence |
| Noul | はい・いいえ | 「はい」の確率(0〜1) |
1 回のリクエストに型の違う質問をいくつも入れられ、それぞれが同じ入力(state)に対して並列に評価されます。公式は、この仕組みを速い直感的な判断にたとえて「System One」と呼んでいます。カーネマンの「速い思考・遅い思考」の System 1 から取った名前です。
3 つの型を 1 回で聞いてみる
問い合わせの文を 1 つ渡し、担当チーム(Choice)・苛立ちの度合い(Score)・返金を求めているか(Noul)を 1 回のリクエストで聞きます。SDK を使わず、HTTP API を fetch で直接呼びました。
// ask.mjs
// 1 つの問い合わせ文について、Choice・Score・Noul を 1 リクエストで聞く
// 実行: TYPESAFE_API_KEY=... node ask.mjs
const body = {
model: 'jev-latest',
state: {
ticket: '先月分の請求が 2 回引き落とされています。今日中に返金してもらえないと困ります。',
},
questions: {
team: {
type: 'choice',
instructions: 'Which team should handle `ticket`?',
criteria: {
billing: 'Payments, invoices, refunds',
technical: 'Bugs, errors, how to use the product',
account: 'Login, profile, cancellation',
},
},
frustration: {
type: 'score',
instructions: 'How frustrated is the customer who wrote `ticket`?',
criteria: ['Calm', 'Somewhat frustrated', 'Very frustrated'],
},
refund: {
type: 'noul',
instructions: 'Does `ticket` request a refund?',
},
},
}
const started = performance.now()
const res = await fetch('https://api.typesafe.ai/v1/systemone', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.TYPESAFE_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify(body),
})
const elapsed = performance.now() - started
console.log(JSON.stringify(await res.json(), null, 2))
console.log(`elapsed: ${Math.round(elapsed)} ms`)
返ってきたのは文章ではなく、コードでそのまま if や並べ替えに使える値です。Score の score: 1.36 は、「やや苛立っている」が 64%、「とても苛立っている」が 36% の期待値です。confidence が 0.46 と低いのは、確率が 2 つの段階に割れているためです。担当チームのように答えがはっきりしている質問では、confidence は 1 になりました。この「答え」と「どれだけ迷ったか」を別々に受け取れることが、あとのページでも効いてきます。
なお、公式は英語を主な学習言語とし、日本語などは精度が下がるとしています。上の例は、質問と選択肢を英語で書き、問い合わせの文だけを日本語で渡しました。
速さと料金
料金は入力 100 万トークンあたり 0.042 ドルで、出力には料金がかかりません(2026-09-23 時点の Models ページ)。上のリクエストは入力が 447 トークンなので、1 回あたり約 0.00002 ドルです。公式サイトは、LLM で同じ処理をした場合と比べて「193.6 倍速い・444.6 倍安い」とうたっています。これは公式の比較で、自分では測っていません。手元で測った応答時間は、上のとおり 0.3 秒前後でした。
どんな判断に使うのか
公式の「Example use cases」は、使い道を判断の形で整理しています。分類(選択肢から 1 つ)・検出(ある性質を持つ確率)・スコアリング(段階評価)・ルーティング(次に進む道)・検索・取得・ランキング・検証・特徴量抽出・構造化データ抽出です。業界別の例も 20 近く並んでいますが、どれも中身は「文章を読んで、ラベル・確率・スコアに変える」作業です。
逆に、文章を書かせる・コードを書かせる・自分で次の行動を決めさせる、といったことはできません。Jev に任せられるのは、コードの流れの途中にある小さな判断だけです。次のページからは、この判断を E2E テストと道の駅のおすすめ機能に組み込んでみます。