開発者向けの独立したガイドとコミュニティ
Jev の公式情報:typesafe.ai

Jev を無料で試す

同じ状況について1問、または異なる3問を試せます。まず例を選び、入力を編集して、それぞれの構造化された回答を確認してください。

GitHub のプロジェクトを見る
01 / 判断を一つ選ぶ

具体的な例から始めましょう

typesafe/jev-1.13

回答形式を1つずつ試せます。 実行するたびに、その日の利用枠を1回分使います。

1. Choice
questions.decision
APIリクエストをプレビュー

プレビューにAPIキーや認証トークンは含まれません。各質問IDと同じ名前で回答が返ります。

{
  "model": "typesafe/jev-1.13",
  "state": {
    "input": "サブスクリプションの料金が二重に請求されました。対応できますか?"
  },
  "questions": {
    "decision": {
      "type": "choice",
      "instructions": "どのチームが対応すべき?",
      "criteria": {
        "billing": "支払い・返金",
        "technical": "バグ・連携の問題",
        "general": "その他の問い合わせ"
      }
    }
  }
}

1アカウントにつき、UTCの1日あたり無料で6回まで。毎日00:00 UTCにリセットされます。サイト全体の利用枠にも上限があります。入力はOpenRouterに送信されますが、このサイトには利用記録のみを保存し、入力内容は保存しません。

02 / 回答の読み方

入力して実行できます

例を実行すると、質問ごとに形式の決まった回答が返ります。Choiceは選択肢、Scoreは尺度上の値、Probabilityは0~1の値を返します。

API 連携の例

Jev をコードに組み込む。

このフォームは文章をstate.inputとして、名前を付けた1問または3問とともに送ります。結果はそれぞれanswers.<question_id>に入ります。

各フィールドの意味

リクエストで質問と回答形式を指定し、レスポンスでは質問ごとに結果が返ります。コード例に出てくる JSON の項目を見ていきましょう。

リクエスト

model
モデル ID。例では Jev 1.13 を指定し、使用バージョンを明確にしています。
state
評価するテキストまたは構造化データ。例ではサポートへの問い合わせです。
questions
質問名をキーにしたオブジェクトです。レスポンスの answers に同じキーで結果が返ります。
<question_id>
actionやurgencyなどの名前です。回答にも同じ名前が使われます。
type
回答形式です。choiceは選択肢を選び、scoreは順序のある段階で評価し、noulは「はい/いいえ」を判定します。
instructions
モデルに求める具体的な判断内容です。
criteria
choiceの選択肢、scoreの段階、またはnoulのfalseとtrueの意味を指定します。

レスポンス

answers
各質問への回答。同じ名前のキーに格納されます。
choice
選ばれた選択肢のキー。最も確率の高い選択肢です。
probabilities
各選択肢の確率。合計は 1 になります。
confidence
確率の分布から計算する確信度で、選ばれた候補の確率とは別の値です。
score
各段階の確率で重み付けした位置です。2つの段階の間になることもあります。
legend
scoreの数値上の位置と、指定した各段階の説明との対応です。
noul
はい・いいえの質問に対する 0(いいえ)から 1(はい)の値です。

同じ状況について、Choice・Score・Probabilityの3問を個別に評価します。 実行するたびに、その日の利用枠を1回分使います。 形式が正しくても判断が正しいとは限りません。代表的な事例で検証し、用途に応じた閾値を設定してください。

エンドポイント

OpenRouter

このPlaygroundはOpenRouter経由でバージョンを固定したJevを呼び出します。最新の料金と提供状況はモデルページで確認してください。

エンドポイント
POST https://openrouter.ai/api/alpha/decisions
model
typesafe/jev-1.13
APIキー
APIキーはサーバーからBearerトークンとして送信します。
OpenRouter ↗
公式の直接API

TypeSafe

TypeSafeには独自のエンドポイントとAPIキーがあります。公式クイックスタートではjev-latestを使い、1回のリクエストで複数の質問を送る方法を示しています。

エンドポイント
POST https://api.typesafe.ai/v1/systemone
model
jev-latest
APIキー
APIキーはサーバーからBearerトークンとして送信します。

サーバー側 TypeScript

TypeScript · fetch
// Run on your server. Keep the API key out of browser code.
const apiKey = process.env.OPENROUTER_API_KEY;
if (!apiKey) throw new Error("Set OPENROUTER_API_KEY");

const response = await fetch("https://openrouter.ai/api/alpha/decisions", {
  method: "POST",
  headers: {
    Authorization: "Bearer " + apiKey,
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    model: "typesafe/jev-1.13",
    state: {input: "A customer reports a duplicate charge."},
    questions: {
      team: {
        type: "choice",
        instructions: "Which team should handle this?",
        criteria: {
          billing: "Payments and refunds",
          technical: "Bugs and integrations"
        }
      },
      urgency: {
        type: "score",
        instructions: "How urgent is the issue?",
        criteria: ["Can wait", "Needs attention today", "Immediate action"]
      },
      escalate: {
        type: "noul",
        instructions: "Should a human review this first?",
        criteria: {false: "No review needed", true: "Review before acting"}
      }
    }
  })
});

if (!response.ok) throw new Error("Decision request failed");
const {answers} = await response.json();
console.log(answers.team.choice, answers.urgency.score, answers.escalate.noul);
回答の読み方

3種類の質問と回答形式

コードで必要な回答形式を選びます。複数の質問を送ると、各質問IDに対して個別の結果が返ります。

TypeSafe: Choice · Score · Noul ↗

Choice

choice · probabilities · confidence

選ばれた選択肢のキー。最も確率の高い選択肢です。

Score

score · legend · probabilities · confidence

各段階の確率で重み付けした位置です。2つの段階の間になることもあります。

Noul

noul

はい・いいえの質問に対する 0(いいえ)から 1(はい)の値です。

本番運用の前に

実際の問い合わせに近いデータで検証し、モデルのバージョンを記録してください。結果が不確かな場合や影響が大きい場合は、人が確認できるようにします。0.8 は説明用の値です。