/docs

Jev の使い方

Jev は型付きの質問に基づいて state を評価し、構造化された回答を返します。コードで分岐に使える型付きの値と確率分布です。実行方法を説明します。

概要

Jev は TypeSafe のフラッグシップモデルであり、最初の System One モデルです。JevStation はそれを中心に構築されたワークスペースです。大規模言語モデルは人が読むテキストを生成するために作られているため、コードで使う判断を求めると、テキスト生成を無理に構造化出力に押し込み、その結果をパースし直す必要があります。Jev はその逆です。state と型付きの質問を送ると、型付きの回答を直接返します。テキスト生成もパースも、解釈すべき文章もありません。

クイックスタート

プレイグラウンドで 3 ステップで評価を実行し、同じモデルを自分のコードから呼び出しましょう。

01

state を貼り付ける

プレイグラウンドを開き、Jev に判断させたい内容を貼り付けます。サポートチケット、レビュー、仕様書、JSON レコードなど何でも構いません。プレイグラウンドはコードから呼び出すのと同じ仕様を使います。

02

質問を追加する

判断ごとに質問を 1 つ追加します。Choice・Score・Noul を 1 回の呼び出しで組み合わせられます。すべての質問は同じ state に対して評価されます。

03

回答を読む

各回答は指定した id のもとに返され、確率分布と、Choice と Score の場合は信頼度が含まれます。

04

コードから呼び出す

プレイグラウンドはコードから呼び出すのと同じ仕様です。そこで質問セットを設計し、自分のバックエンドから呼び出してください。エンドポイントは `POST /api/v1/systemone` で、設定画面で作成した API Key で認証し(`Authorization: Bearer sk_…`)、プレイグラウンドでの実行と同じクレジットを消費します。JevStation の従量課金を通さずモデルを直接利用したい場合は、TypeSafe 公式の API が推奨の方法です。

AI エージェントから Jev を使う

AI コーディングアシスタントを使っていますか?エンドポイント、認証、リクエストと回答の形式、エラー、料金、検証手順をまとめた接続ガイドをコピーして、Claude Code や Cursor などに貼り付けてください。

MCP サーバー

同じ評価を Streamable HTTP の MCP ツールとしても提供しています。API Key で認証し、課金は HTTP API とまったく同じです。ツール:jev_decide、jev_run_question_set、jev_list_question_sets、jev_route_model、jev_guard_tool_call。Claude Code の場合:

claude mcp add --transport http jevstation https://jevstation.com/api/mcp \
  --header "Authorization: Bearer $JEVSTATION_API_KEY"

Agent Skills

エージェントに Jev の呼び出し方、質問セットの設計、ガードレールとしての使い方を教える 3 つのスキルです。~/.claude/skills にインストールします:

curl -fsSL https://jevstation.com/skills/install.sh | sh

実行前に中身を確認したい場合:スクリプトがダウンロードするのは /skills/jev-api/SKILL.md、/skills/jev-question-design/SKILL.md、/skills/jev-guardrails/SKILL.md の 3 ファイルだけです。

質問タイプ

TypeSafe は 3 つの AI プリミティブを提供しています。それぞれ異なる種類の質問をし、異なる種類の回答を返します。

質問タイプ目的戻り値
Choice定義したリストから選択肢を 1 つ選ぶchoice、probabilities、confidence
Score順序付きの評価基準で state を採点するscore、probabilities、confidence
Noulこの文は真か?noul(0–1)

質問は最小単位に、組み合わせはコードで

System One モデルは、各質問が具体的で範囲の明確な 1 つのことを尋ねるときに最もよく機能します。適切な文脈があれば、知識のある人が数秒で下せる程度の判断です。長い推論が必要な質問や、複数の独立した要素を比較する質問は分解してください。要素ごとに個別に質問し、独自の計算式で回答を組み合わせれば、後で優先度を変えるときもプロンプトを書き直す代わりにコード内の係数を変えるだけで済みます。質問は並列かつ独立して評価されるため、質問を増やしても応答時間はほとんど変わらず、質問間でコンテキストが劣化することもありません。

リクエストパラメータ

パラメータ型必須説明
statestring | object | array✓評価対象のコンテンツ。テキストならプレーンな文字列、チャットログ・レコード・アプリケーションの現在の状態なら構造化データを渡します。
modelstring (optional)✓任意。JevStation はデプロイ単位でモデルを固定しているため、このフィールドは無視されます。TypeSafe 公式の API ではエイリアス jev-latest を指定できます。
questionsmap<string, Question>✓型付き質問のマップ。各キーは自由に決められ、対応する回答はそのキーのもとに返されます。キーはラベルにすぎず、モデルには送信されません。Choice には 2 つ以上の選択肢、Score には 2 つ以上の順序付きレベルが必要です。
question_set_idstring (optional)✓任意。questions の代わりに使います。プレイグラウンドで保存した質問セットの id で、自分のセットのみ使用できます。questions と question_set_id はどちらか一方だけを送信してください。

すべての質問オブジェクトは共通して instructions(何を判断・採点するか)を持ち、それぞれ独自の基準を追加します。Choice は選択肢のマップ、Score は順序付きレベルの配列、Noul は任意で true/false の説明です。

回答

質問ごとに 1 つの回答が、指定した id をキーとして返されます。Choice と Score の回答には確率分布から算出された信頼度が含まれ、Noul の回答は確率のみを返します。

choice

最も確率の高い選択肢、各選択肢とその確率の対応、そして信頼度。

score

レベル全体にわたる確率加重値(レベルの中間の値になることもあります)、各レベルと説明を対応付ける凡例、そして信頼度。

noul

回答が「はい」である確率で、0(いいえ)から 1(はい)の値です。Noul の回答には信頼度は含まれません。

すべてのレスポンスには、リクエストのトークン使用量が usage.input_tokens と usage.output_tokens として含まれます。

信頼度

モデルがどれだけ確信しているかは、確率分布の形で分かります。1 つの結果に集中していれば確信が高く、複数に分散していれば低いということです。信頼度はその形を 0 から 1 の 1 つの数値にまとめたもので、自分で計算しなくてもしきい値として使えます。最初は次の 3 段階で考えるのがおすすめです。

高い信頼度

自動で実行します。モデルは明確に判断しており、人の介入なしで進められます。

中程度の信頼度

慎重に進めます。ユーザーに確認する、レビュー対象としてマークする、または先に追加情報を集めます。

低い信頼度

実行しません。人に回す、確認を求める、または別のシステムにフォールバックします。

境界をどこに置くかはリスクの大きさ次第です。破壊的な操作には、読み取り専用の操作より高いしきい値を設定しましょう。

完全な例

1 回の呼び出し、3 つの質問、1 つのレスポンス。SDK は不要です。

evaluate.ts
const res = await fetch("https://your-deployment/api/v1/systemone", {
  method: "POST",
  headers: {
    Authorization: "Bearer " + process.env.JEVSTATION_API_KEY,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    state: "Hi, I've been trying to connect my Stripe account for 3 days and it keeps failing. I'm losing sales. Please help ASAP.",
    questions: {
      department: {
        type: "choice",
        instructions: "Which team should handle this?",
        criteria: {
          billing: "Payments, invoicing, refunds",
          technical: "Bugs, outages, integrations",
          sales: "Pricing, upgrades, new accounts",
        },
      },
      frustration: {
        type: "score",
        instructions: "How frustrated is the customer?",
        criteria: ["Calm", "Frustrated", "Very angry"],
      },
      is_urgent: {
        type: "noul",
        instructions: "Does this convey urgency?",
      },
    },
  }),
});

const { data } = await res.json();

data.answers.department.choice;      // "billing"
data.answers.department.confidence;  // 0.59
data.answers.frustration.score;      // 1.04
data.answers.is_urgent.noul;         // 0.99
data.credits.charged;                // 1
data.credits.remaining;              // 4,996
curl
curl -X POST https://your-deployment/api/v1/systemone \
  -H "Authorization: Bearer $JEVSTATION_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "state": "Payouts have been failing for 3 days.",
    "questions": {
      "is_urgent": { "type": "noul", "instructions": "Does this convey urgency?" }
    }
  }'

注意事項と制限

  • 評価は 1 回の往復で完結します。Jev はトークンのストリームではなく回答を返すため、実行は完全な結果を返すか、きれいに失敗するかのどちらかです。
  • セットに質問を追加すると入力トークンは増えますが、同じ state に対して並列に評価されるため、レイテンシはほとんど増えません。
  • 実行ごとにクレジットを消費します。標準の評価は 1 クレジット、state が 8,000 文字を超えるかセットの質問が 5 個を超えると 3 クレジットです。モデルを呼び出す前に残高を確認し、失敗またはキャンセルされた実行分は返還されます。
  • 評価はログイン中のユーザーに限定されます。あるアカウントが他のアカウントの評価を読むことはできません。
  • プロバイダーの認証情報は運営者が管理画面の設定で構成し、ブラウザに渡ることはありません。
  • 429 または 529 が返された場合は、指数バックオフで再試行してください。クライアント SDK はこれを自動で行います。