開発者向けドキュメント

Jevで開発する

実際の判断を1つ選び、コンテキストを準備して型付き質問を定義し、確率付きの結果をコードに渡します。

JEVについて

ソフトウェアのためのSystem Oneモデル

従来のLLMは主に人が読む文章を生成します。Jevはソフトウェアが直接扱える判断に特化しています。コンテキストと型付き質問を送り、コードで分岐、分類、ルーティングできる構造化結果を受け取ります。

型付きの結果

並列判断

確率と確信度

クイックスタート

プレイグラウンドで判断を1つ検証

Jevの入力と出力を理解するには、プレイグラウンドが最も手軽です。質問の内容が決まったらAPIキーを作成し、プロダクトに接続します。

  1. 1

    プレイグラウンドを開く

    サインインしてJev AIプレイグラウンドを開き、実際の業務コンテキストを入力します。

  2. 2

    コンテキストを準備

    判断に必要な情報をテキスト、JSONオブジェクト、またはテキスト配列で渡します。

  3. 3

    質問を追加

    Choice、Score、Noulを選びます。1回のリクエストで3種類すべてを組み合わせられます。

  4. 4

    コードに接続

    ワークスペースでAPIキーを作成し、SDKまたはRESTから本番エンドポイントを呼び出します。

入力

判断に必要な情報をコンテキストに含める

コンテキストはすべての質問が参照する情報です。単純なケースには文字列を、チケット、注文、ポリシーを合わせて判断する場合はJSONオブジェクトを使います。

text

自然言語、チケット、メッセージ

object

構造化レコードとネストしたフィールド

array

複数のテキスト項目で構成されたコンテキスト

現在の入力範囲:テキスト、JSONオブジェクト、テキスト配列に対応しています。画像、音声、動画の入力には対応していません。

質問タイプ

小さな質問を組み合わせて判断する

各質問は具体的で範囲を明確にします。同じコンテキストへの複数の質問は並列で評価されるため、判断を分けるためだけに呼び出しを連結する必要はありません。

タイプ用途返される値
Choice
候補から分類またはルーティングchoice · 確率 · 確信度
Score
順序のある基準でコンテキストを評価score · 凡例 · 確率 · 確信度
Noul
命題が真かどうかを判断noul(Yesの確率)

共通フィールドと構造

質問には3種類のtypeがあります。すべてにtypeとinstructionsを含め、criteriaは種類に応じて設定します。instructionsには文字列、オブジェクト、配列を指定できます。追加情報が必要な場合は、質問とデータを構造化し、フィールド名で参照してください。

type

必須:noul、choice、scoreのいずれか。

instructions

必須:判断内容を示す文字列、オブジェクト、または配列。

criteria

タイプ別:Noulでは任意のオブジェクト、Choiceでは必須のマップ、Scoreでは必須の配列。

{
  "type": "noul",
  "instructions": "Does this message convey urgency?",
  "criteria": {
    "true": "Explicitly needs immediate attention",
    "false": "No urgency expressed"
  }
}

長い質問や追加データを参照する場合は、質問を1つのフィールドに、コンテキストを別のフィールドに入れ、名前で参照します。

"instructions": {
  "potential_duplicate": {
    "name": "John Smith",
    "location": "Oakland, California",
    "last_employer": "Google"
  },
  "question": "Is the resume for the same person as `potential_duplicate`?"
}

Choice

Choiceは事前に定義した候補から1つを選びます。typeはchoice、instructionsには判断内容、criteriaには候補と説明の対応を指定します。候補は最大255個で、各説明には文字列、オブジェクト、配列、nullを指定できます。

{
  "state": "Help! My payouts have been failing for 3 days.",
  "model": "jev-latest",
  "questions": {
    "department": {
      "type": "choice",
      "instructions": "Which team should handle this?",
      "criteria": {
        "billing": "Payments, invoicing, refunds",
        "technical": "Bugs, outages, integrations",
        "sales": "Pricing, upgrades, new accounts"
      }
    }
  }
}

Score

Scoreは深刻度や満足度など、段階のある評価に使います。typeはscore、instructionsには評価内容、criteriaには低い順に2〜10段階の配列を指定します。各項目は文字列、オブジェクト、配列を指定でき、返されるスコアは確率で重み付けされるため段階の中間値になる場合があります。

{
  "state": "Help! My payouts have been failing for 3 days.",
  "model": "jev-latest",
  "questions": {
    "frustration": {
      "type": "score",
      "instructions": "How frustrated is the customer?",
      "criteria": ["Calm", "Frustrated", "Very angry"]
    }
  }
}

Noul

NoulはYes/Noの判断に使います。typeはnoul、instructionsには評価する質問を指定します。criteriaは任意で、trueとfalseにYesとNoの説明を割り当てます。各値には文字列、オブジェクト、配列を指定できます。NoulはYesである確率を表し、別個の確信度フィールドではありません。

{
  "state": "Help! My payouts have been failing for 3 days.",
  "model": "jev-latest",
  "questions": {
    "is_urgent": {
      "type": "noul",
      "instructions": "Does this convey urgency?",
      "criteria": {
        "true": "Explicitly time-sensitive",
        "false": "No urgency expressed"
      }
    }
  }
}

出力

レスポンスをコードで活用

result.answersには送信したものと同じ質問IDが使われます。型付き出力でフィールド形式は保証されますが、リスクに応じたしきい値と、必要に応じて人が確認する経路を用意してください。

  • answers: Choiceは選択結果、確率、確信度を返します。Scoreはスコア、凡例、段階ごとの確率、確信度を返します。Noulはnoulを返します。
  • usage: input_tokensとoutput_tokensを含み、USD建てのコストが含まれる場合もあります。
  • elapsedMs: リクエスト送信から結果受信までの時間です。検証を含み、モデル推論だけの時間ではありません。

確率と確信度は自動化のシグナルであり、業務上の正確性を保証しません。リスクの高い操作には高いしきい値や人による確認を使ってください。

レスポンスのフィールド

model評価を行ったモデル。このプロジェクトではresult内にanswersとusageが返ります。
answers各質問に対するAnswer。リクエストと同じ質問IDがキーになります。
usageinput_tokensとoutput_tokensを含みます。
elapsedこのプロジェクトが返す追加のリクエスト時間(ミリ秒)。

レスポンス例

{
  "model": "jev-1.13.0",
  "answers": {
    "is_urgent": {
      "type": "noul",
      "noul": 0.95
    }
  },
  "usage": { "input_tokens": 296, "output_tokens": 20 }
}

回答の種類

回答には質問と一致するtypeがあります。ChoiceとScoreには、確率分布から計算した0〜1の確信度も含まれます。

Choice

最も確率の高い候補、すべての候補の確率、確率分布から算出した確信度を返します。

type

必須。値はchoiceです。

choice

必須の文字列。最も確率の高い候補です。

probabilities

必須のmap<string, number>。すべての候補の確率の合計は1です。

confidence

必須の数値。確率分布から算出した確信度です。

{
  "model": "jev-1.13.0",
  "answers": {
    "department": {
      "type": "choice",
      "choice": "billing",
      "probabilities": { "billing": 0.88, "technical": 0.12, "sales": 0.0 },
      "confidence": 0.81
    }
  },
  "usage": { "input_tokens": 318, "output_tokens": 34 }
}

Score

確率で重み付けしたスコア、各段階の凡例、段階ごとの確率、確信度を返します。スコアは段階の中間値になる場合があります。

type

必須。値はscoreです。

score

必須の数値。すべての段階の確率で重み付けしたスコアです。

legend

必須のmap<string, string>。各段階の番号を説明に対応付けます。

probabilities

必須のmap<string, number>。段階ごとの確率の合計は1です。

confidence

必須の数値。確率分布から算出した確信度です。

{
  "model": "jev-1.13.0",
  "answers": {
    "frustration": {
      "type": "score",
      "score": 1.05,
      "legend": { "0": "Calm", "1": "Frustrated", "2": "Very angry" },
      "probabilities": { "0": 0.0, "1": 0.95, "2": 0.05 },
      "confidence": 0.92
    }
  },
  "usage": { "input_tokens": 304, "output_tokens": 18 }
}

Noul

0〜1のnoulを返し、回答がYesである確率を示します。

type

必須。値はnoulです。

noul

必須の数値。0はNo、1はYesです。

{
  "model": "jev-1.13.0",
  "answers": {
    "is_urgent": {
      "type": "noul",
      "noul": 0.95
    }
  },
  "usage": { "input_tokens": 307, "output_tokens": 20 }
}

利用状況のフィールド

input_tokens

integer · リクエストで使用した入力トークン数。

output_tokens

integer · リクエストで生成された出力トークン数。

APIリファレンス

コンテキストを評価して構造化回答を返す

HTTP APIの詳細:型付き質問に基づいてコンテキストを評価し、各質問に構造化回答を1つ返します。

評価エンドポイント

POST https://thejevai.com/v1/systemone

各リクエストにAuthorization Bearer APIキーとapplication/jsonのContent-Typeを指定します。

Authorization: Bearer <API_KEY>
Content-Type: application/json

リクエストボディ

各リクエストにはトップレベルの3項目が必要です。questionsは任意のキーを持つマップで、キーはレスポンスにも使われます。

statestring | object | array · 必須:評価対象のテキストまたは構造化データ。
modelstring · 必須:リクエストを処理するモデル。TypeSafeのフラッグシップモデルjev-latestを指定します。
questionsmap<string, Question> · 必須:並列評価する質問。

questionsのキーは自由に設定できます。対応するAnswerは同じIDで返ります。このキーは基盤モデルに送信されず、推論にも使われません。

リクエスト例

curl -X POST https://thejevai.com/v1/systemone \
  -H "Authorization: Bearer <API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "jev-latest",
    "state": "Help! My payouts have been failing for 3 days.",
    "questions": {
      "is_urgent": {
        "type": "noul",
        "instructions": "Does this convey urgency?"
      }
    }
  }'

リクエストボディの例

{
  "state": "Help! My payouts have been failing for 3 days.",
  "model": "jev-latest",
  "questions": {
    "is_urgent": {
      "type": "noul",
      "instructions": "Does this convey urgency?"
    }
  }
}

APIキーはサーバー側の環境変数に保管してください。ブラウザーのコードに含めたり、リポジトリにコミットしたりしないでください。このページではリクエスト項目、質問タイプ、レスポンス形式、エラーコード、再試行を説明します。

エージェントでの利用

コーディングエージェントでJevを使う

Jev Agent Skillは、実行と権限をアプリケーション側に保ちながら、Codex、Claude Code、Cursorなどの対応エージェントが限定的な判断にAPIを使う方法を説明します。

インストールと設定

Skillをインストールし、Jev AI APIキーを作成して、オンボーディングと例で使う言語を選びます。

一度だけ設定

環境変数を使い、APIキーがソースコード、ログ、エージェントの会話記録に残らないようにします。

範囲を限定して質問

必要な判断をエージェントに伝え、Choice、Score、Noulから適切なタイプを選び、必要最小限のコンテキストを送信します。

インストールと設定

npx skills add jev-ai/jev-agent-skill

export JEV_API_KEY="sk_your_key_here"
export JEV_LANGUAGE="en-US"

https://thejevai.com/settings/apikeys でキーを作成してください。既定の言語は英語(en-US)です。簡体字中国語の案内にはJEV_LANGUAGE=zh-CNを設定します。実際のキーをソースコードや公開プロンプトに貼り付けないでください。

すぐに使える5つの例

インストール後に例のプロンプトをコピーできます。エージェントが最終操作の権限をJevに渡さず、判断に利用する方法を示します。

1

サポートチケットを振り分け

Choiceで許可済みチームを1つ選び、アプリケーション側で振り分けます。不確実なケースはレビューに回します。

Jev Agent Skillを使ってください。このサポートチケットをbilling、technical、account、salesのいずれか1つに分類してください。選んだチーム、各選択肢の確率、確信度を返してください。まだ顧客に連絡したり、チケットを変更したりしないでください。

チケット:年間プランの料金を二重に請求されたため、返金を希望します。
2

ツール呼び出しを保護

Noulで承認が必要か判断します。権限とポリシーの最終決定は決定論的な制御に従います。

このツール呼び出しを実行する前に、Jev Agent Skillを使ってください。人の承認なしで安全に実行できるか判断してください。副作用、取り消し可能性、範囲、ポリシーを考慮し、危険または不確かな場合は実行しないでください。

ツール:delete_customer_records
引数:{where: last_login < 2023-01-01}
ポリシー:データベースを破壊的に変更する操作には、バックアップと人の承認が必要です。
3

許可されたモデルにルーティング

許可リストの候補にChoiceを使い、適切な候補がない場合は別のNoul質問で判断します。

Jev Agent Skillを使って、このタスクに適した許可済みモデルを1つ選んでください。まず品質を優先し、次にコンテキスト容量とコストを考慮してください。選んだモデル、各候補の確率、エスカレーションが必要かを返してください。まだモデルを呼び出さないでください。

タスク:100kトークンの顧客紛争を確認する。
候補:fast-model(32k、低コスト)、reasoning-model(200k、高コスト)、fallback-model(128k、中コスト)。
4

調査の根拠を確認

エージェントが主張を公開または引用する前に、根拠が十分かNoulで評価します。

この主張を公開するのに証拠が十分か、Jev Agent Skillで確認してください。情報源の質と新しさ、主張を直接裏付けているか、矛盾がないかを考慮してください。公開可否の確率と、追加で必要な検証作業を返してください。まだ公開しないでください。

主張:当社のAPIにより処理時間の中央値が40%短縮されました。
証拠:先月実施した120件の社内ベンチマーク。実際の本番トラフィックのデータはなく、以前のレポートでは12%の改善が示されています。
5

タスクの完了を確認

成功を報告する前に、作業の完了、追加確認の必要性、未完了をChoiceまたはScoreで判定します。

このタスクが完了しているか、Jev Agent Skillで確認してください。complete、verify_more、incompleteのいずれかを返してください。目的、変更したファイル、実行したテスト、既知の不足、対象環境での検証状況を考慮してください。

目的:本番エンドポイントにAPIキー認証を追加する。
完了内容:Authorizationの確認とAPIキーの検索を追加。
検証:ユニットテストは成功。本番リクエストとレート制限の動作は未検証。
このSkillは、エージェントがいつどのようにJevに判断を依頼するかを説明します。ツール作成、権限付与、シェル実行の横取りは行わず、既存の権限、決定論的ルール、人による承認を置き換えません。

エラー処理

エラーと再試行

エンドポイントは標準のHTTPステータスコードを使い、エラー内容をJSONで返します。

ステータス意味
401認証エラー:APIキーがないか無効です。Authorizationヘッダーを確認してください。
422処理できないリクエスト:必須項目の欠落や不正な質問など、リクエストボディの検証に失敗しました。レスポンスに該当フィールドが示されます。
429リクエスト過多:レート制限を超えました。待ってから再試行してください。
529過負荷:サービスが一時的に過負荷です。待ってから再試行してください。

429または529が返された場合、同じリクエストをすぐに送り直さず、指数バックオフで再試行してください。標準の再試行ポリシーを持つSDKでは自動処理できます。

次にすること

まず低リスクで範囲の明確な判断から始めます。有用なシグナルが分かったら、ルーティング、キュー、ガードレール、エージェントのワークフローに接続しましょう。