tameshita新しいツールを実際に動かした記録

Jevとは?日本語で使ってみた総評。判定の精度・料金・使えるまでの手順を実測動いた

配布元: https://console.typesafe.ai  / 2026-09-20 時点で確認

この日に実際に動かした結果です。内容の誤りに気づかれた場合はお問い合わせください。確認のうえ訂正します。

使う前に分かること

登録必要(メールアドレスだけで作れる)
クレジットカード要求されなかった 同じものの一覧
無料で使える範囲アカウントを作ると 1 か月の期限つきで $5 分のクレジットが入っていた。 くわしく
日本から使えた
日本語UIなし(画面は英語)
確認日2026-09-20(この日に実際に動かした)

Jev は、TypeSafe AI が 2026 年 9 月に出した「判定だけをする」AI です。ChatGPT のように文章を書くのではなく、「この問い合わせの窓口はどれか」「お客さんは返金を求めているか」といった質問に、答えと確率だけを返します。返事は 1 秒かからず、料金は公式の説明で文章を書く AI の数十分の 1 から数百分の 1。ただし今は早期アクセスで、申し込んで招待を待つ形です。

公式は「主な学習言語は英語で、日本語など他の言語は精度が落ちるので自分の内容で試してほしい」と言っています。そこで、ネットショップに届きそうな日本語の問い合わせを 40 件用意し、日本語のまま判定させて、私の判断と何件合うかを数えました。申し込みから使えるまでの流れと、かかった料金も書きます。数字の公開は TypeSafe AI にメールで確認し、許可を得ています。

申し込んでから使えるまで

公式サイトの Join Waitlist からメールアドレスを登録して、順番を待ちます。登録の後に「いくつか質問に答えると早く入れる」という案内があったので答えました。それが効いたのかは分かりませんが、私の場合は約 2 時間で招待のメールが来ました。

招待の後、console.typesafe.ai でメールアドレスだけでアカウントを作ります。クレジットカードは求められませんでした。クレジットの画面には、1 か月の期限つきで $5 分が入っていました。Auto-recharge という項目があり、カードを登録するとそこから自動で補充される形のようです(登録していないので、その先は見ていません)。API の鍵は console で作り、環境変数 TYPESAFE_API_KEY に入れておきます。

何を渡して、何を聞くか

Jev に渡すものは 2 つです。判定してほしい文章と、その文章について聞きたい質問。ChatGPT のように指示を文で書くのではなく、この 2 つを決まった形で渡します。

判定してほしい文章は今回、問い合わせの「件名」と「本文」の 2 つです。

質問は 3 つ用意しました。質問には 3 つの型があって、今回はそれを 1 つずつ使っています。

  • 窓口はどれか — 決めた選択肢から 1 つ選ぶ型(Choice)。選択肢は請求・配送・商品・アカウントの 4 つで、それぞれに「請求:請求、二重引き落とし、返金、領収書」のような説明文を付けます。Jev は問い合わせの文とこの説明文を見比べて選びます
  • お客さんは返金を求めているか — はい・いいえ の確率を返す型(Noul)。説明文は無く、質問の一文だけです
  • どのくらい急ぎか — 段階で採点する型(Score)。「急がない。質問や要望」「早めの対応がほしい」「今すぐ対応が必要。金銭や期日が絡む」の 3 段で、段ごとの説明文が採点の基準になります

Jev が見ているのは、渡した文章と、ここに書いた説明文だけです。ですから、判定がずれた時に直すのは、モデルではなくこの説明文になります。

Python の SDK が pip で入ります。

python3 -m venv jev-venv
source jev-venv/bin/activate
pip install typesafe-sdk
pip show typesafe-sdk
Name: typesafe-sdk
Version: 0.7.0
Summary: Python SDK for TypeSafe AI API.

上の文章と質問をそのまま書くと、こうなります。state が判定してほしい文章、questions が質問です。

import time
from typesafe_sdk import TypeSafeClient, Choice, Noul, Score

state = {
    "subject": "同じ注文で2回引き落とされています",
    "body": "9月15日に注文した商品の代金が、クレジットカードの明細に2回載っています。1回分を返金してください。",
}
questions = {
    "department": Choice(
        instructions="この問い合わせを担当する窓口はどれか",
        criteria={
            "billing": "請求、二重引き落とし、返金、領収書",
            "shipping": "配送の遅れ、追跡番号、住所変更",
            "product": "商品の仕様、サイズ、在庫、使い方",
            "account": "ログインできない、パスワード、退会",
        },
    ),
    "refund_requested": Noul(instructions="お客さんは返金を求めているか"),
    "urgency": Score(
        instructions="どのくらい急ぎか",
        criteria=["急がない。質問や要望", "早めの対応がほしい", "今すぐ対応が必要。金銭や期日が絡む"],
    ),
}
with TypeSafeClient() as client:
    t = time.time()
    r = client.system_one(state=state, questions=questions)
    print(f"elapsed {time.time()-t:.2f}s")
    print(r.model_dump_json(indent=2))

まず 1 件だけ判定させる

上のコードを first.py に保存して実行します。渡した文章は「同じ注文で 2 回引き落とされています」という二重引き落としの問い合わせです。

python3 first.py
elapsed 0.63s
{
  "model": "jev-1.13.0",
  "usage": {
    "input_tokens": 581,
    "output_tokens": 77
  },
  "answers": {
    "department": {
      "type": "choice",
      "choice": "billing",
      "confidence": 1.0,
      "probabilities": {
        "account": 0.0,
        "shipping": 0.0,
        "product": 0.0,
        "billing": 1.0
      }
    },
    "refund_requested": {
      "type": "noul",
      "noul": 0.98
    },
    "urgency": {
      "type": "score",
      "score": 1.48,
      "confidence": 0.21,
      "legend": {
        "0": "急がない。質問や要望",
        "1": "早めの対応がほしい",
        "2": "今すぐ対応が必要。金銭や期日が絡む"
      },
      "probabilities": {
        "0": 0.02,
        "1": 0.49,
        "2": 0.49
      }
    }
  }
}

読み方です。department の choice が選んだ窓口で、probabilities が 4 つの選択肢それぞれの確率。refund_requested の noul が「返金を求めている」確率。urgency の probabilities が 3 段それぞれの確率で、score はそれを平均した値です。confidence は、確率が 1 つに集中しているほど高くなる「迷いの無さ」で、後で使います。

この 1 件は、窓口が「請求」100%、返金を求めている 98%、急ぎは「早めに」0.49 と「今すぐ」0.49 で半々。0.63 秒で返ってきました。実はこのファイルはこの前にも 1 回動かしていて、その時は「今すぐ」が 0.57 でした。同じ文章を同じ質問で 2 回呼んでも、確率は少し動きます。usage の input_tokens が料金の元になる数で、581。出力側は無料なので、この 1 件は 0.004 円ほどです。

40 件を流して、何件合うか数える

1 件なら何でも当たります。そこで、ネットショップに来そうな問い合わせを 40 件用意しました。「荷物が届きません」「サイズについて」「ログインできない」「退会したい」のような日常の問い合わせで、窓口の内訳は請求 13 件・配送 11 件・商品 8 件・アカウント 8 件。「壊れていたので返金して」のように返金を求めるものが 7 件、「今日中に発送されると困る」のような急ぎのものが 9 件混ざっています。件名と本文を tickets.json に入れ、それぞれに私の正解(窓口・返金の有無・急ぎの 3 段)を付けておきます。

{"id":7,"subject":"配送先を間違えました","body":"さっき注文したばかりですが、配送先が前の住所のままでした。発送前に新しい住所に変えてほしいです。今日中に発送されると困ります。","dept":"shipping","refund":false,"urgency":2}

さっきの質問をそのまま使い、40 件を順に流して正解と比べる batch.py を書きます。採点の規則は、返金は確率が 0.5 以上なら「求めている」、急ぎは 3 段のうち確率が一番高い段を答えとみなす、です。

python3 batch.py
窓口 37/40  返金 39/40  急ぎ 34/40
1件あたり 247ms(往復、平均)  入力トークン合計 22783  model jev-1.13.0

窓口は 37 件、返金は 39 件、急ぎは 34 件が私の正解と合いました。1 件 247ms は、日本から API を往復した時間です。

40 件の中身です。窓口と急ぎの列は Jev の答えで、返金の列は「求めている」確率(0.5 以上なら求めている)。私の正解と食い違ったものだけ「Jev の答え → 私の正解 ×」と書いています。窓口で外した 3 件には、括弧で confidence を添えました。急ぎの段は「急がない」「早めに」「今すぐ」の 3 つです。

# 件名 窓口 返金を求めている 急ぎ
1 同じ注文で2回引き落とされています 請求 0.98 今すぐ
2 荷物が届きません 配送 0.09 早めに
3 サイズについて 商品 0.04 急がない
4 ログインできない アカウント 0.04 早めに
5 届いた商品が壊れていました 請求 0.98 早めに
6 領収書がほしい 請求 0.02 急がない
7 配送先を間違えました 配送 0.04 今すぐ
8 退会したい アカウント 0.06 急がない
9 在庫はいつ入りますか 商品 0.03 急がない
10 キャンセルして返金してください 請求 0.98 早めに → 今すぐ ×
11 追跡番号を教えてください 配送 0.04 急がない → 早めに ×
12 クーポンが使えない 請求 0.04 今すぐ
13 洗濯できますか 商品 0.03 急がない
14 メールアドレスを変えたい アカウント 0.02 急がない
15 違う商品が届きました 商品(0.76)→ 配送 × 0.03 早めに
16 引き落とし日はいつですか 請求 0.03 今すぐ → 早めに ×
17 明日までに届きますか 配送 0.02 今すぐ
18 二段階認証のコードが届かない アカウント 0.04 今すぐ
19 素材を教えてください 商品 0.03 急がない
20 返品したい 請求 0.95 急がない → 早めに ×
21 ポイントが付いていない 請求 0.04 急がない
22 不在票が入っていたけど再配達できない 配送 0.08 早めに → 今すぐ ×
23 パスワードの再設定メールが迷惑メールにも無い アカウント 0.05 早めに
24 ギフト包装はできますか 請求(0.45)→ 商品 × 0.03 急がない
25 注文していないのに請求が来た 請求 0.97 今すぐ
26 海外に発送できますか 配送 0.02 急がない
27 アプリでログアウトされてしまう アカウント 0.04 急がない
28 届いた商品が写真と違う 商品(0.43)→ 請求 × 0.96 早めに
29 発送はいつになりますか 配送 0.05 早めに
30 電池は付属していますか 商品 0.03 急がない
31 分割払いにできますか 請求 0.02 急がない
32 荷物が隣の家に届いた 配送 0.11 早めに
33 注文履歴が消えた アカウント 0.04 早めに
34 返金がまだ来ない 請求 0.92 → 不要 × 早めに
35 色違いはありますか 商品 0.04 急がない
36 今日中に発送してほしい 配送 0.02 今すぐ
37 名前の漢字が違う アカウント 0.03 急がない
38 半分だけ返金してほしい 請求 0.97 急がない → 早めに ×
39 使い方が分からない 商品 0.06 急がない
40 配送日時を指定したい 配送 0.03 早めに

急ぎは、「急がない」16 件を 16 件とも当て、「早めに」15 件のうち 11 件、「今すぐ」9 件のうち 7 件が合っています。「今日中に発送されると困ります」を今すぐに、「急ぎではありません」と書いてある領収書の依頼を急がないに入れています。書いてある言葉だけでなく、状況を読んでいるように見えます。

外した 6 件のうち 4 件は、確率が半々でした。「キャンセルして返金してください」は 早めに 0.55 と 今すぐ 0.44、「返品したい」は 急がない 0.46 と 早めに 0.46。迷っているのが数字に出ています。

一方で、「引き落とし日はいつですか」は 今すぐ 0.80 に入れました。私は「早めに」にしていましたが、質問の説明文に「金銭や期日が絡む」と書いたので、引き落とし日はお金で期日、というわけです。Jev の公式ドキュメントには「書いた通りに読む。意図ではなく言葉で判定する」と注意書きがあり、これがそれです。直したければ、説明文の方を直すことになります。

窓口で外した 3 件は「違う商品が届きました」を商品に、「ギフト包装はできますか」を請求に、「届いた商品が写真と違う」を商品に回したものです。この 3 件の confidence(迷いの無さ)は 0.76、0.45、0.43 で、40 件の中で低い方から 5 番目までに入っています。逆に、confidence が 0.8 以上だった 35 件は全部合っていました。「0.8 未満は人が見る」と決めれば、5 件を人に回して残り 35 件は自動で通せた、ということです。Jev の公式ドキュメントが勧めている使い方(confidence が低いものだけ人に回す)が、40 件でもそう見えました。ただし 40 件なので、これは兆しです。

返金で外した 1 件は「返金がまだ来ない」で、Jev は 0.92 で「求めている」と言いました。私は「もう返金は決まっていて、催促だから」と「求めていない」にしていましたが、読み直すと、この人は返金を求めています。外れたのは私の正解の方かもしれません。

質問の書き方を変えて、もう一度

判定がずれた時に直すのは説明文だ、と上で書きました。そこで 2 か所を直して流し直します。1 つは窓口の説明文で、請求に「返品、不良品」を、配送に「配送日時」を足しました。もう 1 つは急ぎで、3 段の採点をやめて「今日中に対応しないとお客さんが困るか」という はい・いいえ の質問に変えました。正解は「今すぐ」の 9 件を はい、残りを いいえ とみなします。

            "billing": "請求、二重引き落とし、返金、返品、不良品、領収書",
            "shipping": "配送の遅れ、追跡番号、住所変更、配送日時",
    "today": Noul(instructions="今日中に対応しないとお客さんが困るか"),
python3 batch2.py
窓口 38/40  返金 39/40  今日中 33/40
1件あたり 247ms(往復、平均)  入力トークン合計 21343  model jev-1.13.0

窓口は 1 件増えて 38 件。「届いた商品が写真と違う」が商品から請求に来て、足した「不良品」が効いた形です。ただし「違う商品が届きました」も配送から請求に動き、私の正解(配送)からは外れたままです。これは「違う商品」を配送の事故と見るか返品の話と見るかで、お店によって決まりが違うところです。

「今日中」は 33 件で、3 段の 34 件とほぼ同じでした。外した 7 件は確率が 0.49 から 0.61 の間に固まっていて、ここでも迷っているものが外れています。

利用料金

入力 100 万トークンあたり $0.042 で、出力は無料です。今回の 1 件目と 40 件 × 2 回で、入力トークンは合計 44,707。console の使用量の画面には $0.0019 と出ていました。1 円弱です。無料の $5 分で、同じことを 2,600 回できます。

Laya と並べると

Jev と同じ形の質問を受け付けるオープンソースのモデルに Laya があります。pip で入れて自分のパソコンで動き、無料です。同じ 40 件・同じ質問文・同じ採点規則で Laya も流してあるので(Laya の記事)、並べます。

Laya Jev
窓口 33/40 37/40
返金を求めているか 36/40 39/40
急ぎ(3 段) 14/40 34/40
説明文を直した後の窓口 31/40 38/40
「今日中」の はい・いいえ 23/40 33/40
1 件の速さ 69ms(手元の Mac) 247ms(API 往復)
料金 0 40 件で 0.1 円ほど
自分のデータで追加学習 できる できない

窓口と返金は、Laya でも 8〜9 割でした。説明文の単語と問い合わせの単語が重なるかで決まる判定は、小さなモデルでも当たります。差が出たのは急ぎです。Laya はほぼ全部を「今すぐ」に寄せて 14 件、Jev は 34 件。「今日中に発送されると困る」を読むには、単語の照合ではなく状況の理解が要り、そこで差が付きました。

速さは Laya、手間の無さは Jev です。Laya は初回に 647MB のモデルを落として Python で動かしますが、Jev は API を呼ぶだけです。精度を上げる手段も違い、Laya は自分のデータで追加学習できますが、Jev にはその仕組みが無く、質問の説明文を直すことだけです。窓口の振り分けだけなら、無料の Laya で足りる場面も多そうです。

まとめ

日本語のまま、説明文を英語に訳さずに、窓口 37〜38 件、返金 39 件、急ぎ 33〜34 件が私の判断と合いました。公式は「日本語は主な学習言語ではないので自分の内容で試して」と言っていますが、この 40 件については、日本語で困った場面はありませんでした。

Jev は答えと一緒に confidence(迷いの無さ)を返すので、「0.8 未満は人が見る」のような線をこちらで引けます。今回はその線で 35 件が全部合いました。外した件は確率が半々のものが多く、迷っている時は迷っていると言ってくる、というのは、判定を自動で流す上では一番ほしい性質です。ただし 40 件の話で、書いてある言葉に引きずられる癖(引き落とし日=今すぐ)もあります。

質問文を変えたら、40 件を流し直して数える。この手間は省けません。40 件で 10 秒、0.1 円ほどなので、流し直しはいくらでもできます。

確認した環境

Apple M3 の Mac から API を呼びました。速さは日本からの API の往復込みの数字です。40 件の問い合わせと正解は私が用意したもので、実際の問い合わせ窓口の記録ではありません。Jev のバージョンは jev-1.13.0、SDK は typesafe-sdk 0.7.0 です。数字の公開は 2026 年 9 月 20 日に TypeSafe AI のメールで許可を得ています。

おすすめのツール・サービス