Gemini Decision 1とJevを比較:料金・遅延・Python設定

選択肢を限定したマルチモーダルな判断にはGemini Decision 1を試し、テキストの振り分けではJevと比較します。直接利用時の料金とArtificial Analysisの測定結果を確認し、共通入力の費用を計算します。Pythonでツール選択の例を実行し、利用上限、信頼度のしきい値、ゲートウェイごとの違いも確認します。

目次
Gemini Decision 1とJevを比較:料金・遅延・Python設定

マルチモーダルなルーティングや、同じ入力に対する多数の独立した確認には、Gemini Decision 1を試してください。料金と遅延を重視するテキストのルーティングでは、まずJevを比較の基準にします。コード、説明、候補を限定しない値の抽出、ツールの引数が必要なら、生成モデルを使ってください。

Googleは2026年11月11日にGemini Decision 1を発表しました。2026-11-13時点で、Decisions APIはGemini APIから利用できます。Pythonではgoogle-genai 3.2.0以降が対応しています。これは判断用のエンドポイントであり、コーディング用チャットのモデルを置き換えるものではありません。

Gemini Decision 1は何を返しますか?

Gemini Decision 1は、回答をトークン単位で生成する代わりに、あらかじめ定義した結果を評価します。共通の入力と、最大1,000件の独立した質問を渡します。コンテキストウィンドウは262,144 tokensで、一般には256Kと表記されます。入力と質問を合わせて、この上限内に収めてください。

Decisions APIのガイドでは、次の3種類の質問を説明しています。

種類リクエストで定義する内容回答から読み取る内容
noulはい/いいえで答える質問です。任意の判定基準で、それぞれの結果の意味を明確にできます。「はい」の確率を示すnoulと、confidence。
choice名前と説明を付けた2~255個の選択肢です。選ばれたchoice、正規化されたprobabilities、confidence。
score最初の段階のインデックスを0とする、順序付きの評価基準です。確率で重み付けしたscore、各段階のprobabilities、confidence。

コーディングエージェントでは、これらを別々の判断に使えます。この作業にはリポジトリの情報が必要ですか。次にどのツールを実行しますか。どの程度の調査が必要ですか、といった質問です。

質問は互いに独立しています。同じリクエスト内で、ある質問が別の質問の回答を利用することはできません。結果はアプリケーションのコードで組み合わせてください。後の判断に先の回答が必要なら、別のリクエストを送ります。

noulの信頼度が高くても、「はい」とは限りません。 SDKでは、noulを0.01から0.99の範囲の確率と定義しています。信頼度はmax(noul, 1 - noul)です。そのため、noul = 0.03は、信頼度0.97で「いいえ」を示します。

scoreの値は、評価基準の段階と段階の間になることもあります。その信頼度は、各段階の確率のうち最も高い値です。連続値として得られた平均が、厳密に正しい確率ではありません。コードでしきい値を設定するときは、この違いを考慮してください。

Jevを使った経験があれば、これらの質問形式をJevの活用例をまとめたガイドのパターンに対応付けられます。ただし、概念が似ていても、両社のリクエスト形式をそのまま入れ替えられるわけではありません。

Gemini Decision 1とJevの比較:測定結果から何が分かりますか?

自分のデータで品質が同程度なら、テキスト専用のルーターはJevを基準に検討するのが適切です。複数の入力形式を直接扱えることで作業方法が変わる場合は、Geminiも別途試してください。

以下の直接利用時の料金は、Googleの料金ページとTypeSafeの料金説明に基づきます。ベンチマークの数値は、Artificial AnalysisのGemini Decision 1のページとJev 1.14のページから引用しています。いずれも確認日は2026-11-13です。

指標Gemini Decision 1Jev 1.14
直接利用時のモデルIDgemini-decision-1jev-1.14.0
直接利用時の入力料金、1M tokens当たりのUSD$0.10$0.042
直接利用時の出力トークン料金$0$0
Artificial Analysis Decision Index6666
AAのベンチマーク1Mタスク当たりの費用、USD$345$156
AAのタスク当たり時間、Time per Task211 ms92 ms

AAの数値では、丸めた指数スコアが同じで、費用と時間はJevが有利です。ただし、自分のツール選択用の質問でも精度が等しいことを示すものではありません。ベンチマークのタスクとHTTPリクエストも別の単位です。この数値にリクエスト数を掛けて料金を計算しないでください。

Googleは、発表時に使った自社のベンチマーク群で優位にあると報告しています。また、共通のベンチマークでは、Interactions API経由のGemini 3.5 Flash-Liteと比べてコストがほぼ5x低いとしています。これはAAの指数とは異なる比較です。あらゆる場面でJevより優れていることを示すものではありません。

Artificial Analysisは、11月12日の公開時分析で、Brier scoreをGeminiは0.18、Jevは0.19と報告しました。これは予測確率の誤差を測る指標で、低いほど良好です。この小さな総合スコアの差だけでは、アプリケーションで安全に使える信頼度のしきい値を決められません。

Googleの遅延に関する説明にも、対象となる条件があります。モデル計算時間の中央値は50–100 ms、リクエスト全体では150–250 msです。対象は16K tokensまでのコンテキストで、質問数が1から100の範囲では遅延がほぼ一定とされています。1,000件の質問や、256K全体を使うリクエストにも当てはまるとは考えないでください。

マルチモーダルな作業では違いがより明確です。Googleは、テキスト、画像、音声、動画、PDFを直接入力できると説明しています。TypeSafeのモデル仕様にはテキストと画像が掲載されていますが、音声と動画のネイティブ対応はありません。Jev 1.14の発表では、画像機能は実験的なものとも説明されています。

録音、動画、PDFについて判断するなら、まずGeminiを試してください。既存のテキストルーターでは、Jevから始めます。正解ラベル付きのテストで誤りが減り、遅延が許容範囲に収まり、処理全体の費用も下がるなら、その選択を見直してください。

共通入力で料金はどう変わりますか?

同じ入力を評価する関連質問は、まとめて送ってください。Googleは、共通入力をリクエストごとに一度だけ課金します。ただし、各質問の指示、判定基準、書式に使うトークンは、それぞれ追加されます。

2026-11-13に確認した、直接利用時の有料料金で計算すると次のようになります。

request cost in USD =
(shared input tokens + all question tokens) × $0.10 / 1,000,000

共通入力が10,000 tokensで、質問が100件ある場合を試算します。各質問は、書式を含めて80の課金対象トークンを追加すると仮定します。

リクエストの構成課金対象入力の推定値直接利用時の推定費用
100件の質問を1回のリクエストにまとめる10,000 + 100 × 80 = 18,000 tokens$0.0018
入力を繰り返して100回に分けて送る100 × (10,000 + 80) = 1,008,000 tokens$0.1008

これは、Geminiへのリクエストを組み立てる2つの方法の比較です。共通入力を使った評価が、Googleだけの機能だと主張するものではありません。

この試算には、再試行、後続のモデル呼び出し、ゲートウェイの手数料を含めていません。割引や無料枠も適用しない前提です。実際の使用量を得たら、result.usage.total_input_tokensで仮定したトークン数を置き換えてください。

複数の質問を1回の対話的なリクエストにまとめることは、非同期のバッチジョブを送ることとは異なります。Googleの料金ページによると、Gemini Decision 1はBatch APIに対応していません。

Pythonでツール選択を試す

最初のテストでは、Gemini APIを直接使ってください。これにより、ゲートウェイ向けの形式変換を、最初の動作確認から切り離せます。

以下で指定するSDKには、Python 3.11以降が必要です。GoogleのAPIキーの手順に従ってキーを作り、対応地域も確認してください。

試用には、テスト用に作ったデータを使います。非公開リポジトリの内容を送る前に、Gemini APIの利用規約を確認してください。

SDKをインストールしてキーを読み込む

次のコマンドをBashで実行します。入力したキーは画面に表示されず、その値がコマンド履歴に直接残ることもありません。

python3 -m venv .venv
source .venv/bin/activate
python -m pip install "google-genai==3.2.0"
read -rs GEMINI_API_KEY && export GEMINI_API_KEY

この例では、環境変数の値を明示的にクライアントへ渡します。テキスト生成のメソッドではなく、v1betaとclient.decisions.createを使います。直接RESTで呼び出す場合の対応先は、POST https://generativelanguage.googleapis.com/v1beta/decisionsです。

回答をルーティング計画に変換する

次のコードをroute_decision.pyとして保存してください。3種類すべての質問を送り、回答の型を確認し、機械で読み取れるルーティング計画を出力します。

import json
import os

from google import genai
from google.genai.decisions import ChoiceAnswer, NoulAnswer, ScoreAnswer

api_key = os.environ.get("GEMINI_API_KEY")
if not api_key:
    raise SystemExit("Set GEMINI_API_KEY before running this script.")

client = genai.Client(
    api_key=api_key,
    http_options={"api_version": "v1beta"},
)

try:
    result = client.decisions.create(
        model="gemini-decision-1",
        input=(
            "Task: Explain why parse_config rejects an empty YAML file. "
            "Repository: Python service with src/config.py and "
            "tests/test_config.py. No file contents are provided. "
            "Start with read-only investigation."
        ),
        questions={
            "needs_repo": {
                "type": "noul",
                "instructions": "Must the next step inspect repository files?",
            },
            "next_tool": {
                "type": "choice",
                "instructions": "Choose the next read-only investigation step.",
                "criteria": {
                    "read_repo": "Inspect existing source files or tests.",
                    "read_docs": "Look up public API behavior.",
                    "no_tool": "The supplied text is sufficient.",
                    "human_review": "The task is ambiguous or outside these options.",
                },
            },
            "effort": {
                "type": "score",
                "instructions": "Rate the investigation effort this task needs.",
                "criteria": [
                    "Simple lookup or local explanation.",
                    "Investigation across source code and tests.",
                    "Architecture or security analysis with several dependencies.",
                ],
            },
        },
    )
except Exception as exc:
    raise SystemExit(
        f"Decision request failed ({type(exc).__name__}); no action selected."
    ) from None

answers = result.answers or {}
repo = answers.get("needs_repo")
tool = answers.get("next_tool")
effort = answers.get("effort")
if not (
    isinstance(repo, NoulAnswer)
    and isinstance(tool, ChoiceAnswer)
    and isinstance(effort, ScoreAnswer)
    and result.usage is not None
):
    raise SystemExit("Incomplete decision response; send this task for review.")

# Illustrative thresholds. Tune them on labeled traffic before deployment.
next_tool = tool.choice if tool.confidence >= 0.85 else "human_review"
if next_tool == "read_repo" and repo.noul < 0.85:
    next_tool = "human_review"
if next_tool not in {"read_repo", "read_docs", "no_tool", "human_review"}:
    next_tool = "human_review"

model_tier = (
    "reasoning"
    if effort.score >= 1.5 or effort.confidence < 0.80
    else "small"
)

print(json.dumps({
    "next_tool": next_tool,
    "model_tier": model_tier,
    "repository_probability": repo.noul,
    "tool_confidence": tool.confidence,
    "effort_score": effort.score,
    "input_tokens": result.usage.total_input_tokens,
    "output_tokens": result.usage.total_output_tokens,
}, indent=2))

同じBashセッションから実行します。

python route_decision.py

呼び出しが成功すると、指定した3つのキーに対応する回答が返り、出力トークン数はゼロになります。スクリプトでは、ツールのラベル、モデル階層のラベル、確率、使用量を確認できるはずです。ただし、特定の確率や振り分け先が返ることを保証するものではありません。

しきい値の0.85、0.80、1.5は、アプリケーション側のルールを示す例です。ベンダーの推奨値ではありません。smallとreasoningは、アプリケーション内のルーティング用ラベルであり、APIのモデルIDではありません。

このプログラムが作るのは計画だけです。ファイルの読み取り、コマンド実行、選択したモデル階層の呼び出しは行いません。エージェントの制御コードで、これらのラベルを承認済みツールと配置済みモデルに対応付けてください。ファイルシステムの権限やコマンドの承認は、モデルの判断とは別に管理します。

業務の自動化でも、この分離が必要です。Jevによる問い合わせチケットの振り分け手順では、分類を検証やエスカレーションと組み合わせる方法を説明しています。

無料枠の制限と、起こりやすいエラーは何ですか?

負荷テストの前に、リクエスト数とトークン数の両方の上限を確認してください。多数の質問を送れても、レート制限がなくなるわけではありません。

2026-11-13に確認したGemini Decision 1の公開上限には、次の値が含まれます。

利用階層1分当たりのリクエスト数1分当たりの入力トークン数1日当たりのリクエスト数
Free20050,00010,000
Tier 11,5001,000,00050,000

本番導入の前に、AI Studioでプロジェクトに実際に適用されている上限を確認してください。Googleは、公開上限が処理容量を保証するものではないと注意しています。ほかの有料階層は、同じ参照ページに掲載されています。

クライアントにdecisions属性がない場合は、python -m pip show google-genaiでインストール済みパッケージを確認します。スクリプトを実行しているものと同じ仮想環境で、パッケージを更新してください。Decisionsへの対応はSDK 3.2.0で追加されました。

レート制限による失敗では、再試行する前にリクエスト頻度か入力量を減らします。Googleのトラブルシューティングガイドは、一時的な障害に対して、指数バックオフ、jitter、回数を制限した再試行を推奨しています。待機時間を段階的に増やし、jitterでランダムなばらつきを加える方法です。1日分の割り当てを使い切った場合は、リセットを待つか上限を増やす必要があります。短い間隔で再試行を繰り返しても解決しません。

コンテンツのモデレーションでは、別の失敗経路も用意してください。入力の安全性フィルターがリクエストをブロックすると、Decisions APIは回答の代わりに400 Bad Requestを返すことがあります。ブロックされたことは、ポリシー確認の結果が「いいえ」だったことを意味しません。確認担当者や別の承認済み処理へ回してください。回答がないことを、処理を続ける許可と解釈してはいけません。

OpenRouterやVercelに同じリクエストを送れますか?

どちらもgoogle/gemini-decision-1を掲載していますが、インターフェースはGoogleを直接使うPython例とは異なります。ゲートウェイは既存の連携方法に合わせて選んでください。ベースURLを変更するだけでは移行できません。

OpenRouterのモデルページには、このモデルが掲載されています。Decisions APIのリファレンスでは、POST https://openrouter.ai/api/alpha/decisionsを使い、共通の内容をstateで渡します。このエンドポイントはalpha段階で、スキーマが変わる可能性があります。モデルページには、現在はEU域内ルーティングで利用できないとも記載されています。

Vercelの公開時ドキュメントにも、同じモデルIDが掲載されています。PDF、音声、動画の入力には、そこで説明されているAI SDK 7経由の方法が必要です。TypeSafe互換APIとDecisions APIで扱えるのは、テキストと画像です。

Vercelの判断用インターフェースの説明では、インターフェースごとの形式の違いも示されています。AI SDKはstateとbooleanを使います。HTTPのDecisionsインターフェースはinputとpredicateを使います。Googleのnoulリクエストをそのまま送らず、それぞれのスキーマに合わせてください。

ゲートウェイへの掲載だけでは、すべての国から利用できることや、データの所在に関する要件を満たすことは確認できません。本番トラフィックを移す前に、利用条件、データの取り扱い、ゲートウェイの料金を確認してください。

ルーターを置き換える前に何を測定しますか?

まず、候補のルーターに実際の操作を制御させずに実行してください。提案された振り分け先を、正解ラベル付きの例と、現在のシステムが行う判断に照らして比較します。

自動化する割合を一定にして、誤った自動操作を測定してください。代替経路に回す頻度、処理全体のp50とp95の遅延、再試行、総費用も記録します。モデルのバージョン、質問文、候補の一覧を変更したら、しきい値を再確認してください。

結果を明確なルールで決められる処理は、コードに残します。既知の終了コードの確認や、厳密な権限ルールとの照合に、判断モデルを使う利点はほとんどありません。パッチ、説明、新しく組み立てた引数を持つツール呼び出しが必要なら、引き続き生成モデルが適切です。

コーディングの処理では、振り分け先の実行モデルの費用と失敗も比較に含めてください。コーディングエージェントのタスク当たり費用のガイドでは、振り分け自体が安くても、タスク完了までの費用が高くなる理由を説明しています。

LLM ワークフローを最適化しませんか?

単一 API でモデルを接続し、キーと AI コストを管理できます。

無料で始める