2026年9月15日に、TypeSafe AI が Jev というモデルを出しました。
Jevってなに?
ご存じChatGPTやClaudeは、文章を出力してくれます。
Jevは、質問に対しての結果を確実にJSONで返してくれます。
パラメーターはこの二つです。
- state:判定の内容。文章でもJSONでもいい
- questions:質問。3種類
| 型 | 聞けること | 返ってくるもの |
|---|---|---|
noul | はい/いいえ | 「はい」の確率(0〜1) |
choice | 選択肢から1つ選ぶ(最大255個) | 選んだもの、全選択肢の確率、confidence |
score | 段階で評価する(2〜10段階) | 確率で重みを付けた点数、各段階の確率、confidence |
noul は変な名前ですね。boolean の確率版だと思っておきましょう。
Jevのすごいところは、速いところ、安いところです。
お値段は、入力が100万トークンあたり $0.042。出力は無料です。
公式の資料だと、応答は大半が100ms前後。LLMの40〜200倍速い、とのことです。
はじめかた
1. waitlist に登録……しなくてよい
私は3時間くらいで使用できましたが、今は一般開放されております。
2. コンソールで設定する
メールのリンクから、Google アカウントでログインします。
左のメニューは Home / Playground / Usage / API Keys / Documentation の5つですね。
Playground を使えば、ブラウザの上でJevを試すこともできます。
3. コスト
Settings → Billing を開くと、$5 の Monthly credit があります。
- 付与日は 2026-09-18、有効期限は 2026-10-18(UTC)
- カードは登録していないので、自動チャージ(Auto-recharge)はオフ
- 使い切っても止まるだけで、請求は来ません
$5は、入力で約1.2億トークンです。
1回1,000トークンの問い合わせなら、12万回くらい投げられます。ひとりで使うには十分すぎる使用量ですね。
4. APIキーを作る
API Keysから「+ Create key」を押すと発行されます。
キーは環境変数に入れておきましょう。
Windowsの例
setx TYPESAFE_API_KEY "発行したキー"
早速テスト
公式の例文(入金が3日失敗しているという問い合わせ)を、日本語で投げてみます。
SDKもありますが、中身を見たいので urllib だけで書きました。
import json, os, urllib.request
body = {
"model": "jev-latest",
"state": "助けてください!3日前から入金がずっと失敗しています。",
"questions": {
"is_urgent": {"type": "noul", "instructions": "緊急性が伝わる内容ですか?"},
"department": {
"type": "choice",
"instructions": "どのチームが対応すべきですか?",
"criteria": {
"billing": "支払い・請求・返金",
"technical": "バグ・障害・連携",
"sales": "料金プラン・アップグレード・新規契約",
},
},
"frustration": {
"type": "score",
"instructions": "顧客はどれくらい苛立っていますか?",
"criteria": ["落ち着いている", "苛立っている", "激怒している"],
},
},
}
req = urllib.request.Request(
"https://api.typesafe.ai/v1/systemone",
data=json.dumps(body).encode(),
headers={"Authorization": f"Bearer {os.environ['TYPESAFE_API_KEY']}",
"Content-Type": "application/json"},
)
print(json.load(urllib.request.urlopen(req)))
質問は3つですが、リクエストは1回です。質問をまとめて投げられるのがJevの特徴のひとつであり、強みというわけです。
以下、返答です。
{
"model": "jev-1.13.0",
"answers": {
"is_urgent": { "type": "noul", "noul": 0.91 },
"department": {
"type": "choice",
"choice": "billing",
"confidence": 0.82,
"probabilities": { "sales": 0.0, "billing": 0.88, "technical": 0.12 }
},
"frustration": {
"type": "score",
"score": 1.01,
"confidence": 0.95,
"legend": { "0": "落ち着いている", "1": "苛立っている", "2": "激怒している" },
"probabilities": { "0": 0.01, "1": 0.97, "2": 0.02 }
}
},
"usage": { "input_tokens": 474, "output_tokens": 73 }
}
jev-latest を指定すると、中身は jev-1.13.0 でした。
同じ質問を英語でも投げて、並べてみました。
| 日本語 | 英語 | |
|---|---|---|
| 緊急性(noul) | 0.91 | 0.95 |
| 担当チーム(choice) | billing 0.88 | billing 0.89 |
| 苛立ち(score 0〜2) | 1.01 | 1.05 |
| 入力トークン | 474 | 402 |
| かかった時間 | 688ms | 609ms |
公式のドキュメントには「英語がいちばん得意で、日本語などは同じようにはいかない」と書いてあります。
でも、このくらいならそんなに差はないようです。
なお、日本語のほうがトークンが2割近く多いので、そのぶんお値段は上がります。
時間は600ms台で、公称の100msよりだいぶ遅いですね。
ただ、日本から毎回つなぎ直しているので、通信の時間がほとんどだと思います。
どう動いているの?
返ってきた JSON を読んでみましょう。
Jevは「確率の分布」を見せてくれる
department の答えをもう一度見てみます。
"probabilities": { "sales": 0.0, "billing": 0.88, "technical": 0.12 }
Jev は、選択肢それぞれに確率を出してくれています。なので、足すと1になります。
choice に入っている billing は、この中でいちばん確率が高いものです。
例えば、LLM に「どれ?」と聞くと、「billing です。理由は……」と文章で返ってきます。
それをプログラムで使うには、返ってきた文章から答えを抜き出す処理が要ります。
いや、別に、「JSONでくれ」って言えばいいんですよ? 9割くらいはやってくれますよ?
だけども絶対ではないのが厄介なところで、コンテキストからぽろっぽろこぼれてあまり絶対とは言ってくれませんでした。
(一時期、仕事でGPTを組み込んだアプリを開発していたことがあるのですが、LLMがルールを守ってくれないのはかなりの悩みでした。
まあ、2年くらい前のことだったので、今はもっと賢いと思いますが……)。
Jev は、決めた選択肢の中からしか答えません!!
score は「重み付きの平均」
frustration の 1.01 は、こう計算されています。
0 × 0.01 + 1 × 0.97 + 2 × 0.02 = 1.01
各段階の確率で重みを付けた平均です。
だから 1.5 のような、段階と段階のあいだの値も出してくれます。
「苛立ってるけど、激怒寸前」みたいなときですね。
confidence は「確信度」
confidence は、確率の分布から出した数字です。
一つの選択肢に確率が集まっていれば高く、ばらけていれば低くなります。
公式のおすすめは、こんな使い分けです。
- 0.5 未満:人に回す
- 0.5〜0.9:確認してから実行する
- 0.9 を超える:そのまま自動で実行する
質問どうしは、おたがいを見ない
1回のリクエストで3つ質問しましたが、Jev はそれぞれを別々に判定しています。
ある質問の答えが、別の質問の答えに影響しない作りです。LLM に3つまとめて聞くと、1つ目の答えに引っぱられることがありますよね?
(あなたは犬が好き? へえ、さっき好きだと言ってたから、ってことは猫も好きなんでしょうね)。
Jevだとそれが起きません。
ちなみに、質問はまとめて投げたほうが、1問ずつ投げるより安くて速いそうです(公式の cookbook だと11.5倍安く、9.6倍速い)。
苦手なこと
- 数を数える、計算する
- 日付を比べる
- 文章を書く(そもそも書けない)
- 画像や音声
- 手順を追って考える、長い推論
使ってみた:このサイトの記事にタグを付けさせる
さて、このサイトには記事が81本あります。「技術」「ゲーム」「日記」みたいなやつです。
使っているタグは22種類、付けた数は延べ135個。1本の記事に1〜3個です。
これを、Jev にやらせてみます。
記事をどうやって渡すか
記事は SQLite に入っています。本文は HTML なので、タグを剥がして素のテキストにします。
長い記事は先頭12,000字まで。いちばん長いもので2万字を超えていたのですが、タグを決めるのに全部は要らないだろうという判断です。
質問は、22個のタグをそのまま22問にしました。全部 noul です。
QUESTIONS = {
"t00": {
"type": "noul",
"instructions": "この記事に「技術」というタグを付けますか?",
"criteria": {
"true": "プログラミング・開発・サーバ運用・機械学習など、技術的な内容を扱っている",
"false": "技術的な作業や仕組みの話が出てこない",
},
},
# ... 以下、タグの数だけ同じものが並ぶ
}
これを1回のリクエストにまとめて投げます。記事1本につき1回、22個の答えが返ってきます。
body = {"model": "jev-latest", "state": f"{title}\n\n{text}", "questions": QUESTIONS}
CSP の設定をした記事を投げてみました(自分で付けたタグは「技術」「個人サイト」)。
0.98 技術
0.95 個人サイト
0.88 ハウツー
0.76 調べ物
0.56 ツール開発
0.37 Python
(以下略)
まあ、問題なさそうですね。ハウツーは、ちょっと、TIPS的な運用をしているので違いますが……。
81本を並列6で流して、11秒で終わりました。入力は32万トークン、日本円にして2円くらいです。
測りかた
せっかくなので、正解率も出してみましょう。
ひとつは AUC。タグが付いている記事と付いていない記事を1本ずつ取ってきたとき、付いているほうに高い点を出せている確率です。0.5 なら当てずっぽう、1.0 で完璧。
(まあ、私のタグのつけ方がだいぶ気まぐれなので、あんまりアテになりませんが……。)
もうひとつは、自分が付けた個数だけ、上から採るやりかたです。
2個付けた記事なら Jev の上位2件を見て、何個一致したかを数えます。
1周目:タグの意味をそのまま書く
さっきのコードのまま、22本ぶんの基準を書いて流しました。
| 成績 | |
|---|---|
| 全体の AUC | 0.950 |
| 上位から自分と同じ個数だけ採ったときの一致 | 95/135(70.4%) |
| 全部のタグが当たった記事 | 46/81(56.8%) |
くらべるものがないと良し悪しがわからないので、機械的な付けかたも並べてみます。
- よく使うタグから順に機械的に付ける:27.4%
- でたらめに付ける:9.1%
7割当たっていれば、まあ悪くないです。
しきい値を決めて「これ以上なら付ける」という使いかたをしてみましょうか。
| しきい値 | 付けた数 | 合っていた数 | precision | recall |
|---|---|---|---|---|
| 0.9 | 118 | 76 | 0.644 | 0.563 |
| 0.7 | 239 | 110 | 0.460 | 0.815 |
| 0.6 | 279 | 115 | 0.412 | 0.852 |
0.6 で切ると279個もタグが付いてしまいます。
私はあまりタグをつけていないので、過剰ですね。
どのあたりが私の感覚と違うのかチェック
Jevが私の意図とは違うつけ方をした部分を見てみましょうか。
月報(2025.11)
自分: 月報 拾えず: 月報(0.91) 代わりに: Claude Code(0.95)
月報(2026.1)
自分: 月報 拾えず: 月報(0.95) 代わりに: 技術(0.95)
月報には、その月にやったことを書きます。ツールを作った話も、Claude Code を触った話も出てきます。
Jev はそれを読んで「Claude Code の話が書いてあるな」と判定していて、間違っていません。
しかし、私は、月報には「月報」しか付けていません。
つまり Jev は「記事の中に出てくるか」で答えていて、私は「この記事は何の記事か」で付けているわけですね。
2周目:質問の頭に一行足す
そこで、全部の質問の頭に、同じ文を足しました。
これはある個人サイトの記事です。記事のまとめ役として、目次に出すタグを選びます。
記事全体がその話題であるときだけ付けてください。
話のついでに触れているだけ、道具として使っただけでは付けません。
あわせて、criteria も「記事の目的が〜」「〜が本題である」という書きかたに直しました。
「月報」には、こう書き足しています。
この記事がそれなら、中に何の話題が出てきてもこのタグが最優先
もう一度、81本を判定してもらいます。
| 1周目 | 2周目 | |
|---|---|---|
| 全体の AUC | 0.950 | 0.958 |
| 上位から同じ個数だけ採った一致 | 70.4% | 69.6% |
| しきい値0.6 の precision | 0.412 | 0.650 |
| しきい値0.6 の recall | 0.852 | 0.659 |
| いちばん良かったときの F1 | 0.601 | 0.654 |
おもしろいのは、順番はほとんど変わっていないことです。 上位から採る見かたでは、むしろ0.8ポイント下がっています。
しかし、スコアはだいぶ変化しました。
関係ない記事に出ていた点が下がって、0.6 で切るとちょうどいい数になりました。
1周目は279個付けてきたのが、2周目は137個。正解が135個なので、ほぼ同じ数です。
月報の AUC は 0.998 になりました。
タグごとの成績
タグ別に見ると、得意不得意がはっきり見えますね。
固有名詞は満点です。「TRPG」「Steam」「Claude Code」は、書いてあるかどうかで決まりますから、当然といえば当然ですね。
苦しいのは「日記」でした。
私の日記タグは「出来事を書き残すこと自体が目的の記事」に付いています。でも、調べ物の記事にも出来事は出てくるし、ツールを作った記事にも経緯は書いてありますので、Jevには判断できないようです。
何度投げても同じ答えが返るのか
同じ81本を、もう2回判定させてみました。
- 記事×タグで1,782組。3回の最大と最小の差は、平均 0.008
- 55.2% は3回ともまったく同じ数字
- 98.2% は差が 0.05 未満
- しきい値0.6 での「付ける/付けない」が3回とも同じ:99.4%
ほぼ動きません。いいですね。LLMよりも答えがブレていません(それでも完璧に同じ結果ではないようです)。
あまりうまくいかなかったタグ
あまりうまくいかなかったタグは以下のものです。
- 「GoogleAdSenseの導入」:自分は「技術」だけ。Jev は「個人サイト」を上に出す。
でも、ドメインを取った記事も、PHP を有効にした記事も、CSP の記事も「個人サイト」が付いています。AdSense だけ付いていないのは、気分です。 - 「キングオブデモンズR楽しい」:自分は「おすすめ」だけ。Jev はゲーム0.98・おすすめ0.95。
フリーゲームの紹介記事なので、ゲームも付いているべきです。ほかのゲーム紹介記事には全部「ゲーム」が付いていました。 - 「年報(2025)」:Jev は月報を落とします。タイトルが「年報」だからですね。
これは Jev のほうが素直で、私が月報タグに年報も混ぜているのが特殊でした。
というわけで、Jev が出した候補を見ながら、16本の記事にタグを足しました。
キングオブデモンズR楽しい おすすめ → おすすめ, ゲーム
つるのしわけをリリースしました ネタ → ネタ, ゲーム, ツール開発
GoogleAdSenseの導入 技術 → 技術, 個人サイト
技術書典20に参加しました 同人誌, Claude Code, 技術 → +イベント
(以下略)
コスト
- 1周 81本で 11〜12秒(並列6)、入力32万〜52万トークン
- 1周あたり $0.014〜0.022(2〜3円)
- 全部で4周まわして、合計 $0.079。無料枠の $5 はほとんど減っていません
2周目のほうがトークンが増えているのは、質問の頭に足した一行が22問ぶん乗るからです。
それでも3円です。
コンソールの Usage を「Last 24 hours」で切ると、この実験のぶんだけが見えます。
Requests の 325 は、81本 × 4周 + 最初のお試し1本です。
Tokens の 2,012,754 は出力込みの数。お金がかかるのは入力だけなので、手元で数えた入力 1,877,247 トークンのほうが請求に効いています($0.0788)。画面の $0.0791 とほぼ一致しました。
記事1本にかかった時間は、中央値で 830ms でした。
最初に3問だけ投げたときが688msだったので、22問に増やしてもほとんど変わっていないことになります。
質問はまとめて投げたほうがいい、というのは間違いないようです。
この記事にも付けさせてみた
せっかくなので、いま読んでいるこの記事も Jev に判断させてみました。結果はこうです。
0.63 個人サイト
0.53 技術
0.46 おすすめ
0.45 イベント
0.43 ゲーム
しきい値0.6を超えたのは「個人サイト」だけ。「技術」が0.53で、どっちつかずになりました。
たぶん、この記事が「よそのAPIの紹介」と「自分のサイトの中身の話」の両方でできているからだと思います。
Jev は、記事全体がその話題のときだけ付けろと言われているので、どちらとも決めかねたというわけですね。
私は「技術/個人サイト」を付けました。
やってみてわかったこと
- $5 の無料クレジットが最初から入っていて、カード登録なしで試せる
- (今回のケースは)日本語でも、ちゃんと判定できる。トークンは英語より2割くらい多い
- 答えは選択肢と確率で返ってくる
- 3回投げて、99.4% は同じ判定だった。同じものを同じように測れる
- 質問の一行を直すと、順位はそのままで点の付きかただけが変わった。順番を付けるのと、どこで切るかを決めるのは、別々に調整できる
- 固有名詞のタグ(Steam、TRPG、Claude Code)は満点。曖昧なタグ(日記)は苦しい。明確なルールが決まっていないものはJevも判断できない
- 81本を22項目で判定して3円、11秒。

