2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

判断特化AI「Jev」を触ってみた。HPを20%から95%に変えたら、回復から攻撃に変わった

2
Last updated at Posted at 2026-09-21

Gemini_Generated_Image_5147q55147q55147.jpeg

はじめに

Qiitaの投稿キャンペーンあなたはもう試した?判断特化AI「Jev」で遊ぼう!で、Jevを知りました。

まずは触ってみよう、ということで、アカウント作成からPlayground、Pythonからの呼び出しまで試してみました。

この記事は2026年9月20日に試した記録です。

Jevの名前と読み方について

Jevは、公式ブログによると、経済学者ウィリアム・スタンレー・ジェヴォンズ(William Stanley Jevons)にちなんだ名前のようです。「Judgment Evaluation」のような略語ではなく、人名に由来するとのことです。理由までは、私が確認した範囲では書かれていませんでした。

読み方は、公式が発音を示している資料を見つけられませんでした。由来の人名が英語で「ジェヴォンズ」と読まれることから、Jevは「ジェヴ」に近いのではないかと思います。この記事では読みやすさを優先して、「ジェブ」と書くことにします。

なお、「System One」という呼び名は別の由来で、Kahnemanの「System 1(速い思考)」から来ているそうです。

参考:Introducing System One Models & Jev(TypeSafe AI Blog)

Jevとは? Smart if-statements?

アカウント登録の途中に表示された紹介文に、こんな言葉がありました。

Think: Smart if-statements.

賢いif文、ということでしょうか。うーん、わかるようなわからないような。

公式ドキュメントによると、JevはTypeSafe AIの判断に特化したモデルです。判断材料となる State と、判断してほしい Questions を渡すと、プログラムから扱える形式で結果が返ってきます。

質問には、次の3種類があります。

種類 できること 今回試す例
Choice 選択肢から選ぶ 攻撃・回復・撤退のどれにするか
Score 指定した基準で採点する 現在の危険度
Noul ある事柄が真である確率を0〜1で返す 今すぐ回復が必要か

説明だけではまだピンと来ないので、とりあえずやってみます。

アカウントを作る

TypeSafe AIの右上にある Join Waitlist から登録しました。

私の場合は1日も待たずに、team@updates.typesafe.ai から 「TypeSafe AI: Your account is ready」 という件名のメールが届きました。

比較的早く届いたのは、アンケートに答えたからなのかもしれません。違うのかもしれません。関係があるかどうかはわかりません。

メール内の Create your account からアカウントを作りました。招待メールのリンクは個人用なので、この記事には掲載していません。通常のログイン先はTypeSafe AIのコンソールです。

公式Quick startを試す

公式Quick startに従って、Playground と Code it: the Python SDK をそのまま実行してみました。

問い合わせの文章を渡して、担当部署や不満の度合い、緊急性を判断させるサンプルです。説明どおりの判断結果が得られました。

Playgroundでは、質問を「このメッセージは緊急性を示していますか?」にしたまま、判断材料のStateを変えてみました。

State(実際に入力した英文) 日本語訳 緊急性がある確率
Hi, I've been trying to connect my Stripe account for 3 days and the integration keeps failing. I'm losing sales. Please help ASAP. 3日前からStripeのアカウントを接続しようとしていますが、連携が失敗し続けています。売上を逃しています。至急助けてください。 98%
Everything is working well. I'd like to know how to change the button color whenever you have time. There is no rush. すべて順調に動いています。お時間のあるときに、ボタンの色を変える方法を教えてください。急ぎではありません。 3%

ここでの98%は「緊急度が100点満点で98点」という採点ではなく、「この文章が緊急性を示している」という判断の確率です。

なるほど。質問を固定して、判断材料を変えると、結果が変わるのですね。Pythonからも呼び出せたので、次は自分で別の題材を試してみます。

ゲームの状況を判断させてみる

次は、問い合わせではなく、ゲームの状況を判断させてみます。

HPが20%の場合:battle_decision.py

判断材料は次の3つです。

  • プレイヤーのHPは20%。
  • 敵が近くに3体いる。
  • 回復アイテムを1個持っている。

質問は「次に取る行動」「現在の危険度」「今すぐ回復する必要があるか」です。

battle_decision.pyとして、次のコードを実行しました。

from typesafe_sdk import Choice, Noul, Score, TypeSafeClient

# 1. 判断材料となる状態(State)を定義
state = (
    "プレイヤーのHPは20%。敵が近くに3体いる。\n"
    "回復アイテムを1個持っている。"
)

# 2. 判定させたい質問群(Questions)を定義
with TypeSafeClient(model="jev-latest") as client:
    response = client.system_one(
        state=state,
        questions={
            # Choice: 選択肢から1つ選ぶ
            "next_action": Choice(
                instructions="次に取る行動は?",
                criteria={
                    "heal": "回復アイテムを使ってHPを回復する",
                    "retreat": "敵から距離を取って退避する",
                    "attack": "近くの敵を攻撃する",
                },
            ),
            # Score: 尺度(段階)でスコアリングする(0〜N-1)
            "danger_level": Score(
                instructions="現在の危険度は?",
                criteria=[
                    "低:差し迫った脅威がなく、安全に行動できる",
                    "中:脅威があり、注意して行動する必要がある",
                    "高:倒される危険が高く、直ちに対処する必要がある",
                ],
            ),
            # Noul: Yes / No の確率(0.0〜1.0)
            "need_healing": Noul(
                instructions="今すぐ回復する必要がある?",
                criteria={
                    "true": "今すぐ回復する必要がある",
                    "false": "今すぐ回復する必要はない",
                },
            ),
        },
    )

# 3. 結果の取得(プログラムでそのまま扱える型付きデータ)
print("次に取る行動:", response.choices["next_action"].choice)
print("選択の確信度:", response.choices["next_action"].confidence)
print("各選択肢の確率:", response.choices["next_action"].probabilities)
print("現在の危険度スコア:", response.scores["danger_level"].score)
print("今すぐ回復が必要な確率 (Yes):", response.nouls["need_healing"].noul)
uv run battle_decision.py
次に取る行動: heal
選択の確信度: 0.7
各選択肢の確率: {'retreat': 0.2, 'heal': 0.8, 'attack': 0.0}
現在の危険度スコア: 2.0
今すぐ回復が必要な確率 (Yes): 0.82

HPが20%で敵が3体。回復アイテムを持っているので、回復を選ぶのは納得です。

HPだけ95%に変える:battle_decision_high_hp.py

battle_decision.pyをコピーしてbattle_decision_high_hp.pyを作りました。変更したのはStateのHPだけです。質問や判断基準は同じです。

 state = (
-    "プレイヤーのHPは20%。敵が近くに3体いる。\n"
+    "プレイヤーのHPは95%。敵が近くに3体いる。\n"
     "回復アイテムを1個持っている。"
 )
uv run battle_decision_high_hp.py
次に取る行動: attack
選択の確信度: 0.3
各選択肢の確率: {'heal': 0.12, 'retreat': 0.35, 'attack': 0.53}
現在の危険度スコア: 1.02
今すぐ回復が必要な確率 (Yes): 0.18

結果を比較する

項目 battle_decision.py:HP 20% battle_decision_high_hp.py:HP 95%
次に取る行動 heal(回復) attack(攻撃)
選択の確信度(confidence) 0.7 0.3
回復を選ぶ確率 80% 12%
撤退を選ぶ確率 20% 35%
攻撃を選ぶ確率 0% 53%
現在の危険度スコア 2.0 1.02
今すぐ回復が必要な確率 82% 18%

HPを95%にすると、回復の必要性が下がり、選ぶ行動が回復から攻撃に変わりました。思ったとおりの結果が出ている気がします。

危険度の基準は、コードでは0:低、1:中、2:高の順に指定しています。今回の結果は2.0から1.02に下がりました。Scoreは、このように小数で返ることもあります。

一方、HPが95%でも攻撃の確率は53%で、撤退も35%あります。「HPが高いから絶対に攻撃」という結果にはなりませんでした。

また、confidenceと各選択肢の確率は別の値です。今回も「攻撃の確率は0.53、選択の確信度は0.3」と返っています。同じものとして読み替えないようにしたいです。

今回はそれぞれの実行結果を比較しただけで、繰り返し実行した評価ではありません。また、jev-latestを使っているため、今後も同じ数値になることを保証するものではありません。

ところで、料金は?

途中で「料金はかからないの?」と気になり、Billingを確認しました。

私のアカウントには、次のクレジットが付与されていました。

項目 画面の表示
クレジット Monthly credit
付与額 $5.00
付与日 2026年9月20日
有効期限 2026年10月20日(UTC)
自動チャージ Off
購入履歴 なし

クレジットカードは登録していません。今回はこの付与クレジットで試せました。「Monthly credit」という表示でしたが、今後の付与条件までは確認していません。

試したあとにUsageを開くと、次の表示でした。

項目 表示値
Spend $0.0001
Tokens 1,771
Requests 4

画面には、入力100万トークンあたり$0.042で概算、出力は無料と表示されていました。

これは利用額の見積もりで、カードへの請求額ではありません。また、画面に「Stats may be delayed」とあるため、上記はスクリーンショットを撮った時点で反映されていた値です。この記事で試した全実行が集計済みとは限りません。

付与クレジットや料金は、利用時のコンソールで確認してください。

スクリーンショット 2026-09-21 11.25.34.png

おわりに

最初は「Smart if-statements」と言われても、わかるようなわからないような感じでした。

実際に触ってみると、判断材料と質問を渡して、選択・スコア・確率を受け取る、という基本がわかりました。

今回なら、Jevが返したhealやattackを使って、プログラム側で処理を分岐できます。回復アイテムを使う処理や攻撃する処理そのものは、自分のコードで実装するわけです。

そこまでつなげると「Smart if-statements」のイメージが、少し湧いてきました。

まずは公式Quick startをそのまま動かして、Stateだけ変えてみる。初めての体験として、ここまで試してみました。

参考

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?