JEVについて
ソフトウェアのためのSystem Oneモデル
従来のLLMは主に人が読む文章を生成します。Jevはソフトウェアが直接扱える判断に特化しています。コンテキストと型付き質問を送り、コードで分岐、分類、ルーティングできる構造化結果を受け取ります。
型付きの結果
並列判断
確率と確信度
クイックスタート
プレイグラウンドで判断を1つ検証
Jevの入力と出力を理解するには、プレイグラウンドが最も手軽です。質問の内容が決まったらAPIキーを作成し、プロダクトに接続します。
- 1
プレイグラウンドを開く
サインインしてJev AIプレイグラウンドを開き、実際の業務コンテキストを入力します。
- 2
コンテキストを準備
判断に必要な情報をテキスト、JSONオブジェクト、またはテキスト配列で渡します。
- 3
質問を追加
Choice、Score、Noulを選びます。1回のリクエストで3種類すべてを組み合わせられます。
- 4
コードに接続
ワークスペースでAPIキーを作成し、SDKまたはRESTから本番エンドポイントを呼び出します。
入力
判断に必要な情報をコンテキストに含める
コンテキストはすべての質問が参照する情報です。単純なケースには文字列を、チケット、注文、ポリシーを合わせて判断する場合はJSONオブジェクトを使います。
text自然言語、チケット、メッセージ
object構造化レコードとネストしたフィールド
array複数のテキスト項目で構成されたコンテキスト
現在の入力範囲:テキスト、JSONオブジェクト、テキスト配列に対応しています。画像、音声、動画の入力には対応していません。
質問タイプ
小さな質問を組み合わせて判断する
各質問は具体的で範囲を明確にします。同じコンテキストへの複数の質問は並列で評価されるため、判断を分けるためだけに呼び出しを連結する必要はありません。
共通フィールドと構造
質問には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_tokensinteger · リクエストで使用した入力トークン数。
output_tokensinteger · リクエストで生成された出力トークン数。
APIリファレンス
コンテキストを評価して構造化回答を返す
HTTP APIの詳細:型付き質問に基づいてコンテキストを評価し、各質問に構造化回答を1つ返します。
評価エンドポイント
各リクエストに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に渡さず、判断に利用する方法を示します。
サポートチケットを振り分け
Choiceで許可済みチームを1つ選び、アプリケーション側で振り分けます。不確実なケースはレビューに回します。
Jev Agent Skillを使ってください。このサポートチケットをbilling、technical、account、salesのいずれか1つに分類してください。選んだチーム、各選択肢の確率、確信度を返してください。まだ顧客に連絡したり、チケットを変更したりしないでください。
チケット:年間プランの料金を二重に請求されたため、返金を希望します。ツール呼び出しを保護
Noulで承認が必要か判断します。権限とポリシーの最終決定は決定論的な制御に従います。
このツール呼び出しを実行する前に、Jev Agent Skillを使ってください。人の承認なしで安全に実行できるか判断してください。副作用、取り消し可能性、範囲、ポリシーを考慮し、危険または不確かな場合は実行しないでください。
ツール:delete_customer_records
引数:{where: last_login < 2023-01-01}
ポリシー:データベースを破壊的に変更する操作には、バックアップと人の承認が必要です。許可されたモデルにルーティング
許可リストの候補にChoiceを使い、適切な候補がない場合は別のNoul質問で判断します。
Jev Agent Skillを使って、このタスクに適した許可済みモデルを1つ選んでください。まず品質を優先し、次にコンテキスト容量とコストを考慮してください。選んだモデル、各候補の確率、エスカレーションが必要かを返してください。まだモデルを呼び出さないでください。
タスク:100kトークンの顧客紛争を確認する。
候補:fast-model(32k、低コスト)、reasoning-model(200k、高コスト)、fallback-model(128k、中コスト)。調査の根拠を確認
エージェントが主張を公開または引用する前に、根拠が十分かNoulで評価します。
この主張を公開するのに証拠が十分か、Jev Agent Skillで確認してください。情報源の質と新しさ、主張を直接裏付けているか、矛盾がないかを考慮してください。公開可否の確率と、追加で必要な検証作業を返してください。まだ公開しないでください。
主張:当社のAPIにより処理時間の中央値が40%短縮されました。
証拠:先月実施した120件の社内ベンチマーク。実際の本番トラフィックのデータはなく、以前のレポートでは12%の改善が示されています。タスクの完了を確認
成功を報告する前に、作業の完了、追加確認の必要性、未完了をChoiceまたはScoreで判定します。
このタスクが完了しているか、Jev Agent Skillで確認してください。complete、verify_more、incompleteのいずれかを返してください。目的、変更したファイル、実行したテスト、既知の不足、対象環境での検証状況を考慮してください。
目的:本番エンドポイントにAPIキー認証を追加する。
完了内容:Authorizationの確認とAPIキーの検索を追加。
検証:ユニットテストは成功。本番リクエストとレート制限の動作は未検証。エラー処理
エラーと再試行
エンドポイントは標準のHTTPステータスコードを使い、エラー内容をJSONで返します。
401認証エラー:APIキーがないか無効です。Authorizationヘッダーを確認してください。422処理できないリクエスト:必須項目の欠落や不正な質問など、リクエストボディの検証に失敗しました。レスポンスに該当フィールドが示されます。429リクエスト過多:レート制限を超えました。待ってから再試行してください。529過負荷:サービスが一時的に過負荷です。待ってから再試行してください。429または529が返された場合、同じリクエストをすぐに送り直さず、指数バックオフで再試行してください。標準の再試行ポリシーを持つSDKでは自動処理できます。
次にすること
まず低リスクで範囲の明確な判断から始めます。有用なシグナルが分かったら、ルーティング、キュー、ガードレール、エージェントのワークフローに接続しましょう。