- 実施日:2026-09-19(実行時刻は UTC で記載)
- 比較対象:TypeSafe
jev-1.13.0、OpenAIgpt-5.4-nano、OpenAIgpt-4.1-mini、Ollamaqwen3.8(27.3B、Q4_K_M) - 評価データ:公開データセット 4 種から各 200 件、既存の難問セット 21 件
結論
Jev は、速度と費用で比較対象の汎用 LLM を大きく上回り、確率の較正と再現性でも同等以上だった。
応答時間の中央値は約 240ms で、1 問ずつ問う公開データセットでは OpenAI の 2 モデルより 2.5〜3.7 倍、ローカルの qwen3.8 より 6.2〜8.5 倍速かった。
1,000 件あたりの費用は、gpt-5.4-nano の 1/3.9〜1/8.1、gpt-4.1-mini の 1/6.3〜1/12.7 だった。
1 回の呼び出しに 5 問をまとめても応答時間はほぼ変わらず、LLM が出力トークンの増加に比例して遅くなるのと対照的だった。
正解率では、どのデータセットでも Jev が最良というわけではなかった。
77 クラスの意図分類では Jev が最高(0.790)で、gpt-5.4-nano と qwen3.8 に対して統計的に有意な差があった。
一方、英語ツイートの皮肉判定では qwen3.8(0.870)が Jev(0.805)を有意に上回った。
日本語レビューの感情分類と英語レビューの星評価では、Jev と gpt-4.1-mini と qwen3.8 の差は誤差の範囲だった。
ただし、12 組の比較に多重比較の補正(Bonferroni)をかけると、有意な差はどれも残らない。
これらの結果から、Jev は「LLM より常に賢い分類器」ではなく、「LLM と同等の判断を、数倍速く、数分の一から十数分の一の費用で、較正された確率付きで返す部品」と位置づけるのが妥当である。
検証の目的
Jev の単体検証では、用意した入力に対して期待どおりの判断を返すことを確認した。
しかし、同じ判断を汎用 LLM に JSON スキーマで構造化出力させた場合と比べて、Jev に実用上の優位があるかは確認していなかった。
TypeSafe は Jev の特長として、LLM より高速で安価であること、確率が較正されていること、型の誤りを起こさないことを挙げている。
本検証は、これらの主張を公開データセットと既存の難問セットで確かめることを目的とした。
比較の軸は次の六つである。
- 正解率:人手ラベルとの一致率
- 確率の較正:出力された確率や確信度が、実際の正解率とどの程度一致するか
- 応答時間:1 回の呼び出しにかかる時間
- 費用:実測トークン数と標準料金から求めた 1,000 件あたりの費用
- 再現性:同じ入力を 2 回投げたときに回答が一致する割合
- 頑健性:婉曲表現、多言語、指示注入などを含む難問セットでの挙動
Jev は型付きの判断を返す
Jev は TypeSafe AI が System One モデルと呼ぶモデルです。
入力テキストなどの state と問いを渡すと、説明文ではなく、アプリケーションがそのまま使える構造化された結果を返します。
今回使った問いは次の 3 種類です。
| 型 | 問いの例 | 返る主な値 |
|---|---|---|
Choice |
問い合わせの担当部署はどこか | 選択した候補、候補ごとの確率、confidence |
Score |
攻撃性はどの程度か | 連続スコア、段階ごとの確率、confidence |
Noul |
この問い合わせは緊急か | 真である確率(0〜1) |
たとえば、問い合わせ文を state として、担当部署、攻撃性、緊急性を同時に尋ねると、Python SDK の応答からは次のような値を取り出せます。
値は形式を示す例であり、実際の入力に対する結果ではありません。
department = result.choices["department"]
toxicity = result.scores["toxicity"]
is_urgent = result.nouls["is_urgent"]
department.choice
# "billing"
department.probabilities
# {"billing": 0.78, "technical": 0.17, "sales": 0.05}
department.confidence
# 0.78
toxicity.score
# 1.73
toxicity.probabilities
# {0: 0.01, 1: 0.25, 2: 0.74}
toxicity.confidence
# 0.74
is_urgent
# 0.94 # P(true)
Choice と Score の confidence は、選択肢や段階の確率分布とは別の値です。
Noul には真偽の代わりに P(true) が返るため、今回の検証では 0.5 より大きければ真として正解率を計算しました。
この形式なら、たとえば department.choice で振り分け、department.confidence が低いときだけ人手確認へ送る、といった分岐をコード側に置けます。
ただし、確信度の意味と有効な閾値は用途と入力分布に依存するため、実運用のデータで確認が必要です。
比較対象
モデル
| 名前 | 提供元 | 呼び出し方 | 指定したモデル名 | 備考 |
|---|---|---|---|---|
| Jev | TypeSafe AI |
typesafe-sdk 0.6.0 の TypeSafeClient.system_one
|
jev-latest(既定値) |
実行当日の API 応答で jev-1.13.0 を確認 |
| gpt-5.4-nano | OpenAI |
openai 3.16.2 の Chat Completions API |
gpt-5.4-nano |
スナップショット gpt-5.4-nano-2026-03-17 が一覧に存在。どちらに解決されたかは記録していない |
| gpt-4.1-mini | OpenAI | 同上 | gpt-4.1-mini |
スナップショット gpt-4.1-mini-2025-04-14 が一覧に存在 |
| qwen3.8 | Ollama(ローカル) | Ollama HTTP API /api/chat
|
qwen3.8:latest |
親モデル qwen3.8:27b-q4_K_M、アーキテクチャ qwen35、パラメータ数 27,320,697,856、65 層、4bit 量子化(Q4_K_M)、モデルファイル 17.4GB |
gpt-5.4-nano は、利用可能な OpenAI モデルのうち最新世代の最小モデルとして選んだ。
gpt-4.1-mini は、候補ごとの確率分布(logprobs)を最大 20 候補まで返すため、確率の較正を比べる相手として選んだ。
qwen3.8 は、検証マシンの GPU(24GB)に載る汎用モデルの中で最大のものとして選んだ。
各モデルの呼び出し設定
| 項目 | Jev | gpt-5.4-nano | gpt-4.1-mini | qwen3.8 |
|---|---|---|---|---|
| 出力形式 | Choice、Noul、Score の型付き回答 | JSON スキーマ(strict: true) |
JSON スキーマ(strict: true) |
JSON スキーマ(Ollama の format) |
| 推論(思考)トークン | なし(仕様) | reasoning_effort: "none" |
なし(非推論モデル) | think: false |
| 温度 | 指定不可 | 指定せず(既定値) | temperature: 0 |
temperature: 0 |
| logprobs | なし(確率は API が返す) |
logprobs: true、top_logprobs: 5(上限) |
logprobs: true、top_logprobs: 20
|
要求せず(後述) |
| タイムアウト | 60 秒 | 60 秒 | 60 秒 | 600 秒 |
| 再試行 | SDK の既定 | 最大 5 回(SDK) | 最大 5 回(SDK) | なし |
| 同時実行数 | 4 | 8 | 8 | 1 |
LLM には推論トークンを使わない最速の設定を与えた。
Jev と同じく「即答する判断」の条件で比べるためである。
推論を有効にすれば LLM の正解率は上がる可能性があるが、応答時間と費用はさらに増える。
本検証はその条件を扱っていない。
検証環境
ハードウェアとソフトウェア
| 項目 | 内容 |
|---|---|
| OS | Ubuntu 22.04.5 LTS(カーネル 5.15.0-191-generic) |
| CPU | Intel Xeon E5-2698 v4 @ 2.20GHz、2 ソケット、80 論理 CPU |
| メモリ | 251GiB |
| GPU | NVIDIA RTX A5000(24,564MiB)、ドライバ 595.91.07、CUDA 13.2 |
| Ollama | 0.33.2(qwen3.8 は全層を GPU に配置、コンテキスト長 32,768) |
| Python | 3.14.5(uv 0.11.17 が作成した仮想環境) |
| 主要パッケージ |
typesafe-sdk 0.6.0、openai 3.16.2、httpx 0.28.1、pyarrow 25.0.1、python-dotenv 1.2.3、pytest 9.1.1 |
Jev と OpenAI の 2 モデルはインターネット越しの API で、qwen3.8 は同じマシン上の GPU で動かした。
検証マシンから各 API までのネットワーク遅延は計測していない。
応答時間の比較には、この回線条件が含まれる。
実行の経過
| 時刻(UTC) | 内容 |
|---|---|
| 08:28 頃 | 4 モデルの本実行を、モデルごとに別プロセスで同時に開始 |
| 08:29:37 | Jev が 821 件を完了 |
| 08:29:59 | gpt-5.4-nano が 821 件を完了 |
| 08:30:17 | gpt-4.1-mini が 821 件を完了 |
| 08:30〜08:31 | 再現性確認の 2 回目(Jev、gpt-5.4-nano、gpt-4.1-mini) |
| 08:52:52 | qwen3.8 が 821 件を完了 |
全 3,284 回の呼び出し(4 モデル × 821 件)と、再現性確認の 1,200 回で、失敗は 0 件だった。
評価データ
公開データセット
Hugging Face Hub の parquet 変換版を取得し、テスト分割から件数を絞って使った。
| 名前 | Hugging Face のリポジトリ | 構成と分割 | 分割の総件数 | リビジョン | カードのライセンス | 出典論文 | 本検証での形式 |
|---|---|---|---|---|---|---|---|
| banking77 | mteb/banking77 |
default / test
|
3,076 | 18072d2685ea |
MIT | arXiv:2003.04807 | Choice(77 択) |
| irony | cardiffnlp/tweet_eval |
irony / test
|
784 | b3a375baf0f4 |
unknown | arXiv:2010.12421 | Noul |
| ja_sentiment | tyqiangz/multilingual-sentiments |
japanese / test
|
3,000 | a3080a58e563 |
Apache-2.0 | 記載なし(source 列は amazon_reviews_multi) |
Choice(3 択) |
| yelp | Yelp/yelp_review_full |
yelp_review_full / test
|
50,000 | c1f9ee939b7d |
other | arXiv:1509.01626 | Score(5 段階) |
banking77 の原本(PolyAI/banking77)はデータセットスクリプト形式で、Hugging Face の変換サービスが対応していなかった。
そのため、MTEB が公開している parquet 版を使った。
ライセンスが unknown や other のデータがあるため、取得したデータは data/ に置いて Git の管理から外した。
リポジトリに記録したのは、行番号から作った項目 ID、正解ラベル、各モデルの予測だけである。
抽出方法
各データセットのテスト分割から、Python の random.Random(42).sample で 200 行を非復元抽出した。
項目 ID は b77-102 のように、データセットの接頭辞と行番号を組み合わせた。
同じ乱数シードで再実行すれば、同じ 200 件が選ばれる。
抽出したサンプルの性質は次のとおりである。
| データセット | 件数 | ラベル分布 | 本文の文字数(中央値 / 平均 / 最大) |
|---|---|---|---|
| banking77 | 200 | 77 クラス中 73 クラスが出現(最多 7 件、最少 1 件) | 44 / 56 / 231 |
| irony | 200 | 皮肉でない 120、皮肉 80 | 78 / 83 / 140 |
| ja_sentiment | 200 | negative 70、neutral 58、positive 72 | 70 / 96 / 934 |
| yelp | 200 | 1 つ星 40、2 つ星 36、3 つ星 35、4 つ星 50、5 つ星 39 | 460 / 674 / 4,436 |
問いの定義
4 モデルに同じ問いの文言と選択肢を与えた。
| データセット | 問いの種類 | 問いの文言 | 選択肢または段階 | 正解ラベルの対応 |
|---|---|---|---|---|
| banking77 | Choice | Which banking customer intent does this message express? | データセットの label_text 77 種(説明なし、アルファベット順) |
label_text |
| irony | Noul | The tweet is ironic or sarcastic | 真偽 |
label が 1(irony)なら真 |
| ja_sentiment | Choice | Overall sentiment of this product review | positive:The reviewer is satisfied、neutral:Mixed or neither satisfied nor dissatisfied、negative:The reviewer is dissatisfied |
label 0、1、2 をそれぞれ positive、neutral、negative に対応 |
| yelp | Score | The star rating the reviewer most likely gave in this review | 0:1 star: very negative experience、1:2 stars: mostly negative、2:3 stars: mixed or average、3:4 stars: mostly positive、4:5 stars: excellent, very positive |
label 0〜4(1〜5 つ星) |
難問セット
単体検証で作った examples/diverse_cases.py の 21 件を、そのまま比較にも使った。
内訳は次の二つである。
- 問い合わせ 16 件:皮肉、否定、婉曲、感情の混在、関西弁、絵文字のみ、タイポ、フランス語、中国語、指示注入、長文への埋没、暴言、感謝、記号のみ、ログ貼付、JSON 形式の state。感情(Choice 4 択)、担当部署(Choice 4 択)、緊急性(Noul)、皮肉(Noul)、攻撃性(Score 3 段階)の 5 問を 1 回の呼び出しでまとめて投げた。
- 推論と事実抽出 5 件:残高比較、日付比較、医療文書の否定表現、コードの誤り、議事録の品質。ケースごとに専用の問いを投げた。
期待値は人手で付け、正解が一つに定まらない項目には付けていない。
期待値のある項目は 42 個である。
実験方法
Jev の呼び出し
問いの定義を typesafe-sdk の Choice、Noul、Score に変換し、system_one を呼んだ。
回答の値、確率、confidence をそのまま記録した。
Score の予測段階は、返ってきた連続値を四捨五入した整数とした。
LLM の呼び出し
LLM には次のシステムプロンプトを与えた。
You are a precise classifier embedded in software. Read the input and answer every question using only the allowed values. For each answer also give `confidence`: your probability (0 to 1) that the answer is correct. Output JSON only.
ユーザープロンプトは、入力本文と問いの定義から組み立てた。
yelp の例を示す。
## Input
<レビュー本文>
## Questions
### stars
Rate: The star rating the reviewer most likely gave in this review
Answer with the level number:
- 0: 1 star: very negative experience
- 1: 2 stars: mostly negative
- 2: 3 stars: mixed or average
- 3: 4 stars: mostly positive
- 4: 5 stars: excellent, very positive
Noul の問いは「Is this statement true? <問いの文言>」と「Answer true or false.」の 2 行で表した。
Choice の問いは、問いの文言に続けて選択肢と説明を箇条書きで並べた。
出力は JSON スキーマで制約した。
問いごとに answer と confidence を持つオブジェクトを定義し、answer の型を問いの種類に合わせた。
| 問いの種類 |
answer の型 |
|---|---|
| Choice | 文字列の列挙型(選択肢のラベル) |
| Noul | 真偽値 |
| Score | 整数の列挙型(0 から段階数 − 1) |
yelp で使ったスキーマは次のとおりである。
{
"type": "object",
"properties": {
"stars": {
"type": "object",
"properties": {
"answer": { "type": "integer", "enum": [0, 1, 2, 3, 4] },
"confidence": { "type": "number" }
},
"required": ["answer", "confidence"],
"additionalProperties": false
}
},
"required": ["stars"],
"additionalProperties": false
}
確率の取り出し方
LLM は確率を直接返さないため、確信度を二通りの方法で取り出し、別々に評価した。
- p:出力トークンの logprobs から求めた確率。Jev では API が返す確率をそのまま使う。
-
conf:LLM が JSON の
confidence欄に書いた自己申告の値。Jev では API が返す confidence を使う。
LLM の p は、次の手順で求めた。
- 出力された JSON 文字列から、各問いの
answerの値が占める文字範囲を特定する。 - その範囲に重なるトークンの logprob を合計し、指数をとって「選んだ値の確率」とする。
- 値の先頭トークンについて、上位候補(
top_logprobs)のうち選択肢のどれか一つに対応するものを集め、正規化して候補分布とする。
Noul の P(true) は、候補分布の true と false の比から求めた。
Score の連続値は、候補分布の段階番号の期待値とした。
この方法には三つの制約がある。
第一に、OpenAI の logprobs は JSON スキーマで制約をかける前の分布であり、選択肢以外のトークンにも確率が割り振られる。
第二に、選んだ値の先頭トークンが複数の選択肢に共通する場合(banking77 の get_physical_card と get_disposable_virtual_card など)、先頭トークンからは候補分布を求められない。
banking77 で候補分布を得られたのは、gpt-5.4-nano で 82/200 件、gpt-4.1-mini で 84/200 件だった。
第三に、gpt-5.4 系は top_logprobs の上限が 5 であり、多くの場合に選んだトークンの確率がほぼ 1 になって、ほかの候補の情報がほとんど得られなかった。
qwen3.8 については p を求めていない。
Ollama 0.33.2 は、JSON スキーマの format を指定すると先頭の 1 トークン分しか logprobs を返さなかったためである。
qwen3.8 の確信度は conf(自己申告)だけで評価した。
評価指標
| 指標 | 定義 |
|---|---|
| 正解率 | 予測が正解ラベルと一致した割合。Noul は answer(Jev は P(true) > 0.5)で判定 |
| Macro-F1 | クラスごとの F1 値の単純平均(出現したクラスのみ) |
| 完全一致、±1 以内 | Score の予測段階が正解と一致した割合、差が 1 段階以内の割合 |
| MAE | Score の連続値(なければ予測段階)と正解段階の差の絶対値の平均 |
| Spearman | Score の連続値と正解段階の順位相関 |
| AUROC | Noul の P(true) で正例と負例を順位付けしたときの ROC 曲線下面積 |
| Brier | Noul の P(true) と正解(0 または 1)の二乗誤差の平均 |
| ECE | 確信度を 10 等分の区間に分け、区間ごとの平均確信度と実際の正解率の差を件数で加重平均した値。小さいほど較正が良い |
| 上位 80% 正解率 | 確信度の高い順に 80% の項目だけを自動処理したときの正解率。確信度で人手確認に回す運用を想定した指標 |
| 95% 信頼区間 | 正解率に対する Wilson の区間 |
| McNemar 検定 | 同じ項目での正誤の食い違い件数から、2 モデルの正解率の差を検定する。連続性補正付き |
| 費用 | 入力と出力の実測トークン数に、100 万トークンあたりの標準料金を掛けたもの |
Noul の ECE(p) は、P(true) から求めた確信度 max(p, 1 − p) と、p > 0.5 による判定の正誤で計算した。
Score の ECE(conf) は、confidence を「予測段階が完全一致する確率」とみなして計算した。
Jev の Score の confidence がその意味で設計されているかは確認していないため、この値は参考にとどめる。
料金
| モデル | 入力(USD / 100 万トークン) | 出力(USD / 100 万トークン) | 出典と確認日 |
|---|---|---|---|
| Jev | 0.042 | 無料 | TypeSafe の Models ページ(2026-09-17) |
| gpt-5.4-nano | 0.20 | 1.25 | OpenAI の料金ページ(2026-09-19) |
| gpt-4.1-mini | 0.40 | 1.60 | 同上 |
| qwen3.8 | ― | ― | ローカル実行のため API 費用なし。電力と GPU の費用は計上していない |
キャッシュ入力の割引は考慮していない。
結果
データセット別の全指標
表中の ― は、その指標を求められなかったことを表す。
$/1k 件は 1,000 件あたりの費用(USD)である。
banking77(銀行の問い合わせ意図、77 クラス)
| モデル | 正解率 | Macro-F1 | ECE(p) | ECE(conf) | 上位80%正解率(p) | 上位80%正解率(conf) | p50(ms) | p95(ms) | $/1k 件 | n | 失敗 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| jev | 0.790 | 0.768 | 0.088 | 0.080 | 0.875 | 0.875 | 244 | 326 | 0.0430 | 200 | 0 |
| gpt-5.4-nano | 0.715 | 0.694 | 0.192 | 0.101 | 0.819 | 0.812 | 611 | 859 | 0.2272 | 200 | 0 |
| gpt-4.1-mini | 0.760 | 0.734 | 0.203 | 0.196 | 0.825 | 0.806 | 891 | 1122 | 0.4252 | 200 | 0 |
| qwen3.8 | 0.725 | 0.718 | ― | 0.204 | ― | 0.819 | 2067 | 2220 | ― | 200 | 0 |
irony(英語ツイートの皮肉判定)
| モデル | 正解率 | AUROC | Brier | ECE(p) | ECE(conf) | 上位80%正解率(p) | 上位80%正解率(conf) | p50(ms) | p95(ms) | $/1k 件 | n | 失敗 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| jev | 0.805 | 0.974 | 0.137 | 0.029 | 0.029 | 0.869 | 0.869 | 238 | 296 | 0.0125 | 200 | 0 |
| gpt-5.4-nano | 0.785 | 0.914 | 0.137 | 0.114 | 0.029 | 0.900 | 0.806 | 617 | 837 | 0.0548 | 200 | 0 |
| gpt-4.1-mini | 0.745 | 0.942 | 0.236 | 0.224 | 0.169 | 0.781 | 0.794 | 805 | 1016 | 0.0823 | 200 | 0 |
| qwen3.8 | 0.870 | ― | ― | ― | 0.088 | ― | 0.875 | 1539 | 1661 | ― | 200 | 0 |
ja_sentiment(日本語商品レビューの感情、3 クラス)
| モデル | 正解率 | Macro-F1 | ECE(p) | ECE(conf) | 上位80%正解率(p) | 上位80%正解率(conf) | p50(ms) | p95(ms) | $/1k 件 | n | 失敗 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| jev | 0.825 | 0.801 | 0.121 | 0.113 | 0.894 | 0.887 | 241 | 309 | 0.0180 | 200 | 0 |
| gpt-5.4-nano | 0.780 | 0.737 | 0.170 | 0.112 | 0.819 | 0.800 | 647 | 890 | 0.0701 | 200 | 0 |
| gpt-4.1-mini | 0.840 | 0.822 | 0.147 | 0.084 | 0.900 | 0.850 | 798 | 1017 | 0.1130 | 200 | 0 |
| qwen3.8 | 0.805 | 0.764 | ― | 0.152 | ― | 0.819 | 1493 | 1634 | ― | 200 | 0 |
yelp(英語レビューの星評価、5 段階)
| モデル | 完全一致 | ±1以内 | MAE | Spearman | ECE(conf) | 上位80%完全一致(conf) | p50(ms) | p95(ms) | $/1k 件 | n | 失敗 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| jev | 0.610 | 0.975 | 0.408 | 0.921 | 0.267 | 0.662 | 237 | 295 | 0.0209 | 200 | 0 |
| gpt-5.4-nano | 0.520 | 0.935 | 0.567 | 0.905 | 0.300 | 0.556 | 681 | 914 | 0.0944 | 200 | 0 |
| gpt-4.1-mini | 0.610 | 0.980 | 0.436 | 0.904 | 0.306 | 0.637 | 784 | 1015 | 0.1625 | 200 | 0 |
| qwen3.8 | 0.630 | 0.980 | 0.395 | 0.905 | 0.309 | 0.681 | 1723 | 2088 | ― | 200 | 0 |
正解率の信頼区間と Jev との差
McNemar 検定の「Jev のみ正解」と「相手のみ正解」は、同じ項目で正誤が食い違った件数である。
yelp は完全一致で判定した。
| データセット | モデル | 正解数/件数 | 正解率 | 95% 信頼区間 | Jev のみ正解 | 相手のみ正解 | p 値 |
|---|---|---|---|---|---|---|---|
| banking77 | jev | 158/200 | 0.790 | 0.728〜0.841 | ― | ― | ― |
| banking77 | gpt-5.4-nano | 143/200 | 0.715 | 0.649〜0.773 | 24 | 9 | 0.015 |
| banking77 | gpt-4.1-mini | 152/200 | 0.760 | 0.696〜0.814 | 17 | 11 | 0.345 |
| banking77 | qwen3.8 | 145/200 | 0.725 | 0.659〜0.782 | 19 | 6 | 0.016 |
| irony | jev | 161/200 | 0.805 | 0.745〜0.854 | ― | ― | ― |
| irony | gpt-5.4-nano | 157/200 | 0.785 | 0.723〜0.836 | 28 | 24 | 0.677 |
| irony | gpt-4.1-mini | 149/200 | 0.745 | 0.680〜0.800 | 21 | 9 | 0.045 |
| irony | qwen3.8 | 174/200 | 0.870 | 0.816〜0.910 | 9 | 22 | 0.031 |
| ja_sentiment | jev | 165/200 | 0.825 | 0.766〜0.871 | ― | ― | ― |
| ja_sentiment | gpt-5.4-nano | 156/200 | 0.780 | 0.718〜0.832 | 14 | 5 | 0.066 |
| ja_sentiment | gpt-4.1-mini | 168/200 | 0.840 | 0.783〜0.884 | 5 | 8 | 0.579 |
| ja_sentiment | qwen3.8 | 161/200 | 0.805 | 0.745〜0.854 | 8 | 4 | 0.386 |
| yelp | jev | 122/200 | 0.610 | 0.541〜0.675 | ― | ― | ― |
| yelp | gpt-5.4-nano | 104/200 | 0.520 | 0.451〜0.588 | 31 | 13 | 0.010 |
| yelp | gpt-4.1-mini | 122/200 | 0.610 | 0.541〜0.675 | 12 | 12 | 0.838 |
| yelp | qwen3.8 | 126/200 | 0.630 | 0.561〜0.694 | 11 | 15 | 0.556 |
有意水準 5% で差があったのは次の 5 組である。
- Jev が上回った組:banking77 の gpt-5.4-nano(p = 0.015)と qwen3.8(p = 0.016)、irony の gpt-4.1-mini(p = 0.045)、yelp の gpt-5.4-nano(p = 0.010)
- Jev が下回った組:irony の qwen3.8(p = 0.031)
12 組の検定に Bonferroni 補正をかけると有意水準は約 0.0042 になり、どの組も有意ではなくなる。
200 件という件数では、0.05 前後の正解率の差を確定させるには検出力が足りない。
確率の較正
ECE の最小値は次のとおりだった。
| データセット | ECE が最小のモデルと指標 | Jev の ECE(p / conf) |
|---|---|---|
| banking77 | Jev の conf(0.080) | 0.088 / 0.080 |
| irony | Jev の p と conf、gpt-5.4-nano の conf(いずれも 0.029) | 0.029 / 0.029 |
| ja_sentiment | gpt-4.1-mini の conf(0.084) | 0.121 / 0.113 |
| yelp | Jev の conf(0.267) | ― / 0.267 |
Jev は 4 データセット中 3 つで最小の ECE を示した(irony は同率)。
ja_sentiment では、gpt-4.1-mini の自己申告の確信度のほうが較正が良かった。
LLM の logprobs から求めた p は、確信度を過大に出す傾向があった。
gpt-4.1-mini の ECE(p) は banking77 で 0.203、irony で 0.224 で、Jev の 2〜8 倍だった。
自己申告の conf は p より較正が良い場合が多かったが、モデルとデータセットによってばらつきがあった。
qwen3.8 の conf の ECE は 0.088〜0.309 だった。
確信度で人手確認に回す運用を想定した「上位 80% 正解率」では、次のモデルが最も高かった。
| データセット | 最も高いモデルと指標 | Jev |
|---|---|---|
| banking77 | Jev(0.875、p と conf で同値) | 0.875 |
| irony | gpt-5.4-nano の p(0.900) | 0.869 |
| ja_sentiment | gpt-4.1-mini の p(0.900) | 0.894 |
| yelp | qwen3.8 の conf(0.681) | 0.662 |
irony の AUROC は、Jev が 0.974、gpt-4.1-mini が 0.942、gpt-5.4-nano が 0.914 だった。
皮肉の有無を確率で順位付けする能力は Jev が最も高い。
Brier スコアは Jev と gpt-5.4-nano が 0.137 で並び、gpt-4.1-mini は 0.236 だった。
応答時間
応答時間は、クライアント側で測った 1 回の呼び出しの壁時計時間である。
| データセット | Jev p50 / p95 | gpt-5.4-nano p50 / p95 | gpt-4.1-mini p50 / p95 | qwen3.8 p50 / p95 |
|---|---|---|---|---|
| banking77 | 244 / 326 | 611 / 859 | 891 / 1122 | 2067 / 2220 |
| irony | 238 / 296 | 617 / 837 | 805 / 1016 | 1539 / 1661 |
| ja_sentiment | 241 / 309 | 647 / 890 | 798 / 1017 | 1493 / 1634 |
| yelp | 237 / 295 | 681 / 914 | 784 / 1015 | 1723 / 2088 |
| 難問セット(5 問同時) | 247 / 288 | 1038 / 1253 | 1528 / 1644 | 3414 / 3599 |
単位は ms である。
平均、最小、最大は次のとおりだった。
| データセット | Jev | gpt-5.4-nano | gpt-4.1-mini | qwen3.8 |
|---|---|---|---|---|
| banking77 | 256 / 198 / 592 | 647 / 532 / 1009 | 888 / 634 / 1312 | 2078 / 1893 / 2321 |
| irony | 241 / 187 / 373 | 643 / 500 / 1072 | 800 / 459 / 1393 | 1556 / 1467 / 1765 |
| ja_sentiment | 245 / 190 / 360 | 669 / 505 / 1192 | 797 / 442 / 1293 | 1515 / 1414 / 1960 |
| yelp | 241 / 189 / 358 | 683 / 511 / 1289 | 794 / 470 / 1567 | 1768 / 1448 / 2815 |
| 難問セット(5 問同時) | 248 / 192 / 334 | 1076 / 804 / 1611 | 1495 / 1163 / 1689 | 3432 / 3302 / 3627 |
Jev の中央値に対する各モデルの中央値の倍率は次のとおりである。
| データセット | gpt-5.4-nano | gpt-4.1-mini | qwen3.8 |
|---|---|---|---|
| banking77 | 2.5 倍 | 3.7 倍 | 8.5 倍 |
| irony | 2.6 倍 | 3.4 倍 | 6.5 倍 |
| ja_sentiment | 2.7 倍 | 3.3 倍 | 6.2 倍 |
| yelp | 2.9 倍 | 3.3 倍 | 7.3 倍 |
| 難問セット(5 問同時) | 4.2 倍 | 6.2 倍 | 13.8 倍 |
Jev の応答時間は、入力の長さ(yelp の本文は中央値 460 文字)にも、問いの数にもほとんど左右されなかった。
1 問のデータセットで約 240ms、5 問をまとめた難問セットで 247ms だった。
LLM は回答を 1 トークンずつ生成するため、問いが増えて出力が長くなるほど遅くなる。
gpt-4.1-mini は 1 問で約 800ms、5 問で 1,528ms と、約 1.9 倍になった。
TypeSafe は「LLM より 40〜200 倍速い」と主張しているが、本検証の条件(推論なしの小型 LLM)では 2.5〜13.8 倍だった。
比較相手の LLM の大きさや推論の有無によって、倍率は大きく変わる。
トークン数と費用
| データセット | モデル | 入力トークン平均 | 出力トークン平均 | 費用合計(USD) |
|---|---|---|---|---|
| banking77 | jev | 1022.9 | 828.3 | 0.00859 |
| banking77 | gpt-5.4-nano | 998.8 | 21.9 | 0.04544 |
| banking77 | gpt-4.1-mini | 999.8 | 15.8 | 0.08504 |
| banking77 | qwen3.8 | 553.9 | 33.8 | ― |
| irony | jev | 297.4 | 21.0 | 0.00250 |
| irony | gpt-5.4-nano | 148.8 | 20.0 | 0.01095 |
| irony | gpt-4.1-mini | 149.8 | 14.0 | 0.01646 |
| irony | qwen3.8 | 115.7 | 30.9 | ― |
| ja_sentiment | jev | 429.2 | 39.0 | 0.00361 |
| ja_sentiment | gpt-5.4-nano | 225.5 | 20.0 | 0.01402 |
| ja_sentiment | gpt-4.1-mini | 226.5 | 14.0 | 0.02260 |
| ja_sentiment | qwen3.8 | 165.4 | 32.0 | ― |
| yelp | jev | 498.0 | 17.0 | 0.00418 |
| yelp | gpt-5.4-nano | 353.2 | 19.0 | 0.01888 |
| yelp | gpt-4.1-mini | 354.2 | 13.0 | 0.03250 |
| yelp | qwen3.8 | 313.3 | 30.2 | ― |
| 難問セット(問い合わせ 16 件) | jev | 512.2 | 137.0 | 0.00034 |
| 難問セット(問い合わせ 16 件) | gpt-5.4-nano | 424.1 | 71.0 | 0.00278 |
| 難問セット(問い合わせ 16 件) | gpt-4.1-mini | 425.1 | 64.9 | 0.00438 |
| 難問セット(問い合わせ 16 件) | qwen3.8 | 274.0 | 141.1 | ― |
全体の合計は次のとおりである(再現性確認の 2 回目は含まない)。
| モデル | 呼び出し回数 | 入力トークン合計 | 出力トークン合計 | 費用合計(USD) |
|---|---|---|---|---|
| jev | 821 | 459,199 | 183,370 | 0.0193 |
| gpt-5.4-nano | 821 | 352,857 | 17,439 | 0.0924 |
| gpt-4.1-mini | 821 | 353,678 | 12,478 | 0.1614 |
| qwen3.8 | 821 | 234,662 | 27,822 | ― |
1,000 件あたりの費用で比べると、gpt-5.4-nano は Jev の 3.9〜8.1 倍、gpt-4.1-mini は 6.3〜12.7 倍だった。
トークン数には二つの特徴があった。
一つ目に、短い入力では Jev の入力トークンが LLM より多かった。
irony では Jev が 297.4、OpenAI の 2 モデルが約 149 で、1 回あたり約 150 トークン多い。
問いの定義を内部の形式に変換する分の上乗せと考えられるが、内訳は公開されていない。
二つ目に、Jev の出力トークンは選択肢の数に応じて増え、banking77 では平均 828.3 に達した。
Jev の出力は無料なので費用には影響しないが、トークン数だけで他のモデルと費用を比べると誤る。
再現性
同じ 200 件をもう一度投げ、1 回目と比べた。
qwen3.8 は時間の都合で実施していない。
| データセット | モデル | 回答一致率 | p の平均差 | conf の平均差 | n |
|---|---|---|---|---|---|
| irony | jev | 0.980 | 0.009 | 0.009 | 200 |
| irony | gpt-5.4-nano | 0.880 | 0.016 | 0.054 | 200 |
| irony | gpt-4.1-mini | 0.975 | 0.016 | 0.009 | 200 |
| ja_sentiment | jev | 1.000 | 0.009 | 0.014 | 200 |
| ja_sentiment | gpt-5.4-nano | 0.960 | 0.024 | 0.030 | 200 |
| ja_sentiment | gpt-4.1-mini | 0.995 | 0.004 | 0.004 | 200 |
Jev も完全には決定的ではなく、irony で 200 件中 4 件の回答が変わり、確率も平均 0.009 動いた。
変わった項目は、確率が 0.5 付近の判断の境界にあるものと考えられる。
gpt-5.4-nano は温度を指定できない設定だったため、回答の揺れが最も大きかった(irony で 12%)。
難問セット
| モデル | 期待値との一致 | p50(ms) | p95(ms) | 出力トークン平均 | $/1k 件 |
|---|---|---|---|---|---|
| jev | 42/42 | 247 | 288 | 137.0 | 0.0215 |
| gpt-5.4-nano | 41/42 | 1038 | 1253 | 71.0 | 0.1736 |
| gpt-4.1-mini | 42/42 | 1528 | 1644 | 64.9 | 0.2738 |
| qwen3.8 | 42/42 | 3414 | 3599 | 141.1 | ― |
gpt-5.4-nano は、「素晴らしいですね、今月 3 回目の障害で今日も仕事になりません。本当に感謝してます。」を皮肉ではないと判定した。
ほかの 3 モデルは皮肉と判定した。
期待値を付けなかった項目では、モデルごとに次の傾向の違いがあった。
全回答は付録に載せた。
- 攻撃性の評価:LLM 3 モデルは、暴言以外の多くの文に 0(攻撃的でない)を付けた。Jev は皮肉の文に 0.99、中国語の文に 0.51、指示注入の文に 0.50 と中間の値を付けた。LLM は整数の段階で答えるため、両端に寄りやすい。
- 緊急性の判定:gpt-4.1-mini は、婉曲、皮肉、絵文字のみ、タイポ、暴言、指示注入の 6 件で緊急と判定し、ほかのモデルより広く緊急と捉えた。Jev は婉曲で 0.52、タイポで 0.68 と、判断が割れる値を返した。
- 婉曲の文の感情:gpt-5.4-nano は mixed、ほかの 3 モデルは neutral と判定した。
- 否定の文の感情:gpt-5.4-nano は positive、ほかの 3 モデルは neutral と判定した。
- 絵文字のみの文の部署:gpt-5.4-nano は other、ほかの 3 モデルは billing と判定した。
推論と事実抽出の 5 件(6 項目)は、4 モデルとも期待値と一致した。
誤りの内訳
ja_sentiment の混同行列(行が正解、列が予測)
| モデル | 正解 | positive | neutral | negative |
|---|---|---|---|---|
| jev | positive | 69 | 3 | 0 |
| jev | neutral | 10 | 30 | 18 |
| jev | negative | 0 | 4 | 66 |
| gpt-5.4-nano | positive | 68 | 3 | 1 |
| gpt-5.4-nano | neutral | 11 | 21 | 26 |
| gpt-5.4-nano | negative | 2 | 1 | 67 |
| gpt-4.1-mini | positive | 69 | 3 | 0 |
| gpt-4.1-mini | neutral | 11 | 34 | 13 |
| gpt-4.1-mini | negative | 0 | 5 | 65 |
| qwen3.8 | positive | 71 | 1 | 0 |
| qwen3.8 | neutral | 17 | 23 | 18 |
| qwen3.8 | negative | 0 | 3 | 67 |
4 モデルとも、誤りの大半は neutral のレビューだった。
neutral 58 件の正解数は、Jev 30、gpt-5.4-nano 21、gpt-4.1-mini 34、qwen3.8 23 である。
positive と negative を取り違えた件数は、Jev と gpt-4.1-mini と qwen3.8 が 0、gpt-5.4-nano が 3 だった。
元データは Amazon のレビューで、neutral は星 3 つのレビューに対応すると考えられ、文面からは不満にも満足にも読める例を含む。
yelp の混同行列(行が正解の星数、列が予測の星数)
| モデル | 正解 | 1★ | 2★ | 3★ | 4★ | 5★ |
|---|---|---|---|---|---|---|
| jev | 1★ | 30 | 7 | 2 | 1 | 0 |
| jev | 2★ | 9 | 21 | 5 | 1 | 0 |
| jev | 3★ | 0 | 5 | 15 | 14 | 1 |
| jev | 4★ | 0 | 0 | 2 | 20 | 28 |
| jev | 5★ | 0 | 0 | 0 | 3 | 36 |
| gpt-5.4-nano | 1★ | 24 | 13 | 1 | 2 | 0 |
| gpt-5.4-nano | 2★ | 6 | 22 | 7 | 0 | 1 |
| gpt-5.4-nano | 3★ | 0 | 4 | 9 | 13 | 9 |
| gpt-5.4-nano | 4★ | 0 | 0 | 0 | 10 | 40 |
| gpt-5.4-nano | 5★ | 0 | 0 | 0 | 0 | 39 |
| gpt-4.1-mini | 1★ | 34 | 4 | 0 | 1 | 1 |
| gpt-4.1-mini | 2★ | 10 | 18 | 7 | 1 | 0 |
| gpt-4.1-mini | 3★ | 0 | 2 | 18 | 14 | 1 |
| gpt-4.1-mini | 4★ | 0 | 0 | 1 | 17 | 32 |
| gpt-4.1-mini | 5★ | 0 | 0 | 0 | 4 | 35 |
| qwen3.8 | 1★ | 36 | 3 | 0 | 1 | 0 |
| qwen3.8 | 2★ | 16 | 13 | 6 | 1 | 0 |
| qwen3.8 | 3★ | 0 | 1 | 21 | 11 | 2 |
| qwen3.8 | 4★ | 0 | 0 | 1 | 21 | 28 |
| qwen3.8 | 5★ | 0 | 0 | 0 | 4 | 35 |
4 モデルとも、4 つ星のレビューを 5 つ星と予測する誤りが最も多かった(Jev 28 件、gpt-5.4-nano 40 件、gpt-4.1-mini 32 件、qwen3.8 28 件)。
gpt-5.4-nano は 4 つ星 50 件のうち 40 件を 5 つ星とし、高評価側に偏っていた。
2 段階以上ずれた予測は、Jev 5 件、gpt-5.4-nano 13 件、gpt-4.1-mini 4 件、qwen3.8 4 件だった。
banking77 の誤分類(各モデル上位 5 組、括弧内は件数)
-
jev(誤り 42 件):
beneficiary_not_allowed→failed_transfer(3)、exchange_via_app→exchange_rate(2)、exchange_via_app→fiat_currency_support(2)、direct_debit_payment_not_recognised→card_payment_not_recognised(2)、transfer_fee_charged→extra_charge_on_statement(2) -
gpt-5.4-nano(誤り 57 件):
getting_virtual_card→get_disposable_virtual_card(3)、supported_cards_and_currencies→fiat_currency_support(2)、card_acceptance→country_support(2)、card_payment_not_recognised→extra_charge_on_statement(2)、unable_to_verify_identity→why_verify_identity(2) -
gpt-4.1-mini(誤り 48 件):
supported_cards_and_currencies→fiat_currency_support(2)、direct_debit_payment_not_recognised→compromised_card(2)、beneficiary_not_allowed→failed_transfer(2)、transfer_fee_charged→extra_charge_on_statement(2)、card_about_to_expire→getting_spare_card(2) -
qwen3.8(誤り 55 件):
card_payment_not_recognised→extra_charge_on_statement(3)、direct_debit_payment_not_recognised→extra_charge_on_statement(3)、verify_my_identity→why_verify_identity(3)、exchange_via_app→fiat_currency_support(2)、unable_to_verify_identity→why_verify_identity(2)
誤りの多くは、意味の近いラベルどうしの取り違えだった。
今回はラベル名だけを選択肢とし、説明を付けていない。
公式ドキュメントが勧めるように選択肢に説明と境界事例を書けば、どのモデルでも改善する余地がある。
考察
Jev を選ぶ理由になる点
速度と費用の差は、すべてのデータセットで一貫して大きかった。
Jev の応答時間は入力長と問いの数にほとんど依存せず、約 240ms で安定していた。
1 件の入力に多くの観点を同時に問う設計(公式が推奨する Speculative fan-out)では、LLM との差がさらに広がる。
難問セットでは、5 問同時の条件で gpt-4.1-mini の 6.2 倍速く、12.7 倍安かった。
確率の較正と、確率による順位付けの性能も Jev が安定して良かった。
LLM の logprobs は、JSON スキーマの制約をかける前の分布であり、ほぼ 0 か 1 に張り付く傾向がある。
自己申告の確信度は logprobs よりましだが、モデルやデータセットによって較正の良し悪しが変わった。
確信度の閾値で人手確認に回す運用では、較正された確率をそのまま使える Jev の設計が有利である。
77 クラスのように選択肢が多い分類では、Jev の正解率が最も高かった。
LLM は多数の選択肢から 1 つを生成する形になるため、似た名前のラベルを取り違えやすい可能性がある。
LLM が勝る、または差がない点
正解率では、汎用 LLM が同等か上回る場面があった。
英語の皮肉判定では、qwen3.8 の正解率(0.870)が Jev(0.805)を上回った。
日本語レビューの感情と英語レビューの星評価では、gpt-4.1-mini と qwen3.8 が Jev と同等だった。
また、LLM は推論を有効にすれば正解率が上がる可能性があり、本検証はその条件を試していない。
判断の根拠を文章で得たい場合や、選択肢を事前に列挙できない場合は、LLM が必要になる。
Jev はテキストを生成しないためである。
設計への示唆
大量の入力を低遅延で振り分ける処理では、Jev を前段に置き、確信度の低いものや「該当なし」だけを LLM や人に回す構成が、速度、費用、較正の面で合理的である。
正解率が最優先で、1 件あたり 1〜2 秒と数倍の費用を許容できる処理では、LLM(推論の有無を含めて)を比較したうえで選ぶ必要がある。
制約と注意点
- 件数:各データセット 200 件では、正解率の 95% 信頼区間の幅が約 ±0.06 ある。0.05 前後の差は確定できない。
- 多重比較:McNemar 検定の p 値は補正していない。Bonferroni 補正をかけると有意な差は残らない。
- 推論設定:LLM は推論トークンを使わない設定で比べた。推論を有効にした場合の正解率、速度、費用は測っていない。
- プロンプト:LLM のプロンプトは 1 種類だけで、調整していない。Jev の問いの文言も同じものを使っており、どちらにも最適化の余地がある。
- 選択肢の説明:banking77 はラベル名だけを選択肢とした。
-
確率の取り出し:LLM の p は logprobs からの近似で、JSON スキーマの制約前の分布に基づく。gpt-5.4 系は
top_logprobsの上限が 5 である。qwen3.8 は p を取得できず、自己申告の確信度だけで評価した。 - 応答時間の条件:同時実行数が Jev は 4、OpenAI は 8、qwen3.8 は 1 で異なる。4 モデルは同じ時間帯に別プロセスで並行して動かした。API 側の混雑や回線の遅延は、時間帯によって変わりうる。
- qwen3.8 の速度:RTX A5000 1 枚、4bit 量子化での値であり、GPU や量子化の条件で大きく変わる。
- 再現性:qwen3.8 の再現性は測っていない。
- Score の確信度:Score の ECE(conf) は、confidence を完全一致の確率とみなして計算した参考値である。
- データのライセンス:irony と yelp はデータセットカードのライセンスが unknown と other であり、本検証ではデータ本体を配布していない。
-
モデルの更新:
jev-latestと OpenAI のエイリアスは指す先が変わる。再実行した結果は本レポートと一致しない場合がある。
再現手順
.env に TYPESAFE_API_KEY と OPENAI_API_KEY を設定し、Ollama で qwen3.8:latest を使える状態にしてから、次を実行する。
uv sync
# 本実行(モデルごとに実行できる。途中で止めても再実行で続きから処理する)
uv run python -m bench.run --backends jev,gpt-5.4-nano,gpt-4.1-mini,qwen3.8 --n 200 --seed 42
# 再現性確認の 2 回目
uv run python -m bench.run --backends jev,gpt-5.4-nano,gpt-4.1-mini \
--tasks irony,ja_sentiment --n 200 --out results/raw_repeat
# 集計
uv run python -m bench.report # results/summary.md、results/summary.json
uv run python -m bench.details # results/details.md
関連するファイルは次のとおりである。
| パス | 内容 |
|---|---|
bench/tasks.py |
データセットの取得、抽出、問いの定義 |
bench/backends.py |
4 モデルの呼び出し、プロンプトとスキーマの生成、logprobs からの確率算出、料金表 |
bench/run.py |
実行と生の予測の保存 |
bench/report.py |
指標の集計 |
bench/details.py |
信頼区間、検定、混同行列、トークン数などの詳細統計 |
results/raw/ |
本実行の生の予測(項目 ID、正解ラベル、予測、応答時間、トークン数) |
results/raw_repeat/ |
再現性確認の 2 回目の生の予測 |
results/summary.md、results/details.md
|
集計結果 |
付録:難問セットの全回答
Jev の Noul は P(true)、LLM の Noul は answer の真偽である。
Choice は選択したラベル、Score は値(LLM は logprobs の期待値、求められない場合は整数の回答)を示す。
期待値の欄が空のものは、期待値を付けていない項目である。
婉曲
| 問い | 期待値 | jev | gpt-5.4-nano | gpt-4.1-mini | qwen3.8 |
|---|---|---|---|---|---|
| sentiment | neutral | mixed | neutral | neutral | |
| category | technical | technical | technical | technical | technical |
| urgent | 0.52 | false | true | false | |
| sarcastic | 0.08 | false | false | false | |
| toxicity | 0.04 | 0.00 | 0.00 | 0.00 |
混合感情
| 問い | 期待値 | jev | gpt-5.4-nano | gpt-4.1-mini | qwen3.8 |
|---|---|---|---|---|---|
| sentiment | mixed | mixed | mixed | mixed | mixed |
| category | other | other | other | other | |
| urgent | 0.11 | false | false | false | |
| sarcastic | 0.17 | false | false | false | |
| toxicity | [0.3, 1.5] | 0.96 | 1.00 | 1.00 | 1.00 |
皮肉
| 問い | 期待値 | jev | gpt-5.4-nano | gpt-4.1-mini | qwen3.8 |
|---|---|---|---|---|---|
| sentiment | negative | negative | negative | negative | negative |
| category | technical | technical | technical | technical | technical |
| urgent | 0.32 | true | true | false | |
| sarcastic | True | 0.97 | false | true | true |
| toxicity | 0.99 | 0.00 | 0.00 | 0.00 |
否定
| 問い | 期待値 | jev | gpt-5.4-nano | gpt-4.1-mini | qwen3.8 |
|---|---|---|---|---|---|
| sentiment | neutral | positive | neutral | neutral | |
| category | billing | billing | billing | billing | billing |
| urgent | False | 0.03 | false | false | false |
| sarcastic | False | 0.05 | false | false | false |
| toxicity | 0.00 | 0.00 | 0.00 | 0.00 |
絵文字のみ
| 問い | 期待値 | jev | gpt-5.4-nano | gpt-4.1-mini | qwen3.8 |
|---|---|---|---|---|---|
| sentiment | negative | negative | negative | negative | negative |
| category | billing | other | billing | billing | |
| urgent | 0.37 | false | true | true | |
| sarcastic | 0.37 | false | false | false | |
| toxicity | 0.34 | 0.56 | 0.10 | 0.00 |
タイポ
| 問い | 期待値 | jev | gpt-5.4-nano | gpt-4.1-mini | qwen3.8 |
|---|---|---|---|---|---|
| sentiment | negative | negative | negative | negative | |
| category | technical | technical | technical | technical | technical |
| urgent | 0.68 | false | true | false | |
| sarcastic | False | 0.03 | false | false | false |
| toxicity | 0.01 | 0.00 | 0.00 | 0.00 |
関西弁
| 問い | 期待値 | jev | gpt-5.4-nano | gpt-4.1-mini | qwen3.8 |
|---|---|---|---|---|---|
| sentiment | negative | negative | negative | negative | negative |
| category | billing | billing | billing | billing | billing |
| urgent | True | 0.94 | true | true | true |
| sarcastic | 0.49 | false | false | false | |
| toxicity | 1.10 | 1.00 | 1.00 | 1.00 |
フランス語
| 問い | 期待値 | jev | gpt-5.4-nano | gpt-4.1-mini | qwen3.8 |
|---|---|---|---|---|---|
| sentiment | neutral | neutral | neutral | neutral | neutral |
| category | sales | sales | sales | sales | sales |
| urgent | False | 0.05 | false | false | false |
| sarcastic | 0.02 | false | false | false | |
| toxicity | 0.00 | 0.00 | 0.00 | 0.00 |
中国語
| 問い | 期待値 | jev | gpt-5.4-nano | gpt-4.1-mini | qwen3.8 |
|---|---|---|---|---|---|
| sentiment | negative | negative | negative | negative | negative |
| category | technical | technical | technical | technical | technical |
| urgent | True | 0.99 | true | true | true |
| sarcastic | 0.12 | false | false | false | |
| toxicity | 0.51 | 0.00 | 0.00 | 0.00 |
長文に埋没
| 問い | 期待値 | jev | gpt-5.4-nano | gpt-4.1-mini | qwen3.8 |
|---|---|---|---|---|---|
| sentiment | mixed | mixed | mixed | mixed | |
| category | technical | technical | technical | technical | technical |
| urgent | True | 0.92 | true | true | true |
| sarcastic | 0.01 | false | false | false | |
| toxicity | 0.00 | 0.00 | 0.00 | 0.00 |
暴言
| 問い | 期待値 | jev | gpt-5.4-nano | gpt-4.1-mini | qwen3.8 |
|---|---|---|---|---|---|
| sentiment | negative | negative | negative | negative | negative |
| category | billing | billing | billing | billing | billing |
| urgent | 0.44 | false | true | false | |
| sarcastic | 0.10 | false | false | false | |
| toxicity | [1.5, 2.0] | 1.73 | 2.00 | 2.00 | 2.00 |
指示注入
| 問い | 期待値 | jev | gpt-5.4-nano | gpt-4.1-mini | qwen3.8 |
|---|---|---|---|---|---|
| sentiment | negative | negative | negative | negative | |
| category | billing | billing | billing | billing | billing |
| urgent | 0.37 | false | true | false | |
| sarcastic | 0.24 | false | false | false | |
| toxicity | 0.50 | 0.00 | 0.00 | 0.00 |
記号のみ
| 問い | 期待値 | jev | gpt-5.4-nano | gpt-4.1-mini | qwen3.8 |
|---|---|---|---|---|---|
| sentiment | neutral | neutral | neutral | neutral | |
| category | other | other | other | other | |
| urgent | False | 0.20 | false | false | false |
| sarcastic | 0.33 | false | false | false | |
| toxicity | 0.00 | 0.00 | 0.00 | 0.00 |
ログ貼付
| 問い | 期待値 | jev | gpt-5.4-nano | gpt-4.1-mini | qwen3.8 |
|---|---|---|---|---|---|
| sentiment | negative | negative | negative | negative | |
| category | technical | technical | technical | technical | technical |
| urgent | True | 0.82 | true | true | true |
| sarcastic | 0.04 | false | false | false | |
| toxicity | 0.00 | 0.00 | 0.00 | 0.00 |
感謝
| 問い | 期待値 | jev | gpt-5.4-nano | gpt-4.1-mini | qwen3.8 |
|---|---|---|---|---|---|
| sentiment | positive | positive | positive | positive | positive |
| category | other | other | other | other | other |
| urgent | False | 0.04 | false | false | false |
| sarcastic | 0.03 | false | false | false | |
| toxicity | [0.0, 0.3] | 0.00 | 0.00 | 0.00 | 0.00 |
JSON状態
| 問い | 期待値 | jev | gpt-5.4-nano | gpt-4.1-mini | qwen3.8 |
|---|---|---|---|---|---|
| sentiment | neutral | neutral | neutral | neutral | |
| category | sales | sales | sales | sales | sales |
| urgent | False | 0.25 | false | false | false |
| sarcastic | 0.05 | false | false | false | |
| toxicity | 0.00 | 0.00 | 0.00 | 0.00 |
推論と事実抽出
| ケース.問い | 期待値 | jev | gpt-5.4-nano | gpt-4.1-mini | qwen3.8 |
|---|---|---|---|---|---|
| コード誤り.correct | False | 0.01 | false | false | false |
| 医療否定表現.chest_pain | False | 0.03 | false | false | false |
| 医療否定表現.dyspnea | True | 0.98 | true | true | true |
| 文書品質.quality | [0.0, 0.5] | 0.00 | 0.00 | 0.00 | 0.00 |
| 日付比較.passed | False | 0.04 | false | false | false |
| 残高比較.can_afford | False | 0.02 | false | false | false |
参考資料
- TypeSafe AI ドキュメント:Models、Primitives (Questions)、Confidence、Jev 1.13 jaggedness
- OpenAI:Pricing
- データセット:mteb/banking77、cardiffnlp/tweet_eval、tyqiangz/multilingual-sentiments、Yelp/yelp_review_full
- 論文:Casanueva et al., "Efficient Intent Detection with Dual Sentence Encoders"(arXiv:2003.04807)、Barbieri et al., "TweetEval: Unified Benchmark and Comparative Evaluation for Tweet Classification"(arXiv:2010.12421)、Zhang et al., "Character-level Convolutional Networks for Text Classification"(arXiv:1509.01626)