良いフィット感Jev を制限付きの決定に使用する
- 1 つのリクエストを 1 つの名前付きキューにルーティングします。
- 記録を順序付けられたリスクまたは品質スケールに配置します。
- 明確に述べられた 1 つの条件が真であるかどうかを推定します。
フィット感が良くない代わりに生成モデルを使用してください
- 自由形式のテキストを書いたり、要約したり、翻訳したり、書き直したりします。
- 自然な複数ターンの会話を行います。
- 有効な出力に事前に名前を付けることができない場合は、回答を作成します。
公式メンタルモデル
STATE評価する 1 つの状態
判決に必要なテキストと関連事実を含む文字列、オブジェクト、または配列を渡します。ほとんどの実際のリクエストには、名前付きオブジェクト フィールドを使用します。
QUESTIONS質問ごとに 1 つの瞬時の判断
各質問では、知識のある人が提供された状態からすぐに判断できる 1 つのことに焦点を当てて質問する必要があります。
PARALLEL独立した質問を並行して行う
1 つのリクエスト内の質問は同じ状態を参照し、独立して実行され、ある回答が別の回答に漏れることはありません。
CODEコードで回答を作成する
ワークフロー ロジックを 1 つのプロンプトに隠すのではなく、重み、しきい値、分岐、入力された回答を通常のコードで結合します。
分解試験: 判断が複数の独立した要素を考慮している場合、または拡張された推論が必要な場合は、判断を基本的な質問に分割し、コード内の回答を結合します。
この章の後には次のようになります。コンテンツ生成タスクと構造化された意思決定タスクを分離できます。
公式参考文献: Introduction · State · Primitives
| タイプ | あなたが供給します | あなたは受け取ります | いつ使用しますか |
choice | 名前付きオプション → 説明 | 選択されたキー + オプションごとの確率 (+ 信頼度) | 相互に排他的なラベル/ルート |
score | 順序付けされたレベル (2 ~ 10)、低→高 | 確率加重レベルスコア + ラング確率 | 重大度、品質、リスクのルーブリック |
noul | はい/いいえの提案 (+ オプションの基準) | 真の確率 | 単一のファクトチェック |
choice最大 255 のオプション
勝者と全額の配布
順序付けされていない固定された代替案に使用します。リストがすべての州をカバーしていない可能性がある場合は、その他 / なしを追加します。選択された値は、最も確率の高いオプションです。
{
"choice": "technical",
"probabilities": { "technical": 0.85, "billing": 0.15 },
"confidence": 0.78
}
score2 ~ 10 の順序付けされたレベル
確率で重み付けされたポジション
レベルのインデックスは 0 から付けられます。スコアはレベルの確率全体の加重平均であるため、2 つのレベルの間に入る可能性があります。
{
"score": 1.43,
"probabilities": { "0": 0.0, "1": 0.57, "2": 0.43 },
"confidence": 0.35
}
noul0 = いいえ · 1 = はい
ステートメントが真実である確率
明確な「はい/いいえ」の判断に使用します。 0.5 に近いということは、中程度の資産ではなく、不確実性を意味します。 Noul には個別の信頼度フィールドはありません。
{
"type": "noul",
"noul": 0.95
}
スコアは精度ではありません。 0 ~ 2 のルーブリックのスコア 1.5 は期待レベルであり、「75% 正解」ではありません。スコアや選択の信頼度を精度の保証として扱わないでください。
この章の後には次のようになります。ルーティング、モデレーション、リスク スコアリングに適切な回答の形状を選択できます。
公式参考文献: Choice · Score · Noul
強力な基準を書く
- ばらばらのオプション。 2 つの選択キーが両方とも true の場合、オペレーターはモデルと戦うことになります。
- エッジを説明します。 buy_intent に (在庫、出荷先) と Price_question が含まれるかを述べます。
- 残りは最後に保管してください。怠惰なキャッチオールではなく、他人や人間を脱出用のハッチとして使用してください。
- スコアを昇順に並べます。基準配列は最低→最高です。
- 質問ごとに 1 つの決定。 「ルート」と「緊急度」を別々のキーに分割します。
質問の構造
question_idコードの応答検索キー。質問はモデルには送信されないため、指示には完全な質問が含まれている必要があります。
type選択、スコア、またはノール。コードが直接作用できる形状を選択します。
instructions完全かつ具体的な判断。これは文字列、オブジェクト、または配列の場合があり、名前付き状態パスを参照できます。
criteria選択オプション、順序付けられたスコア レベル、またはオプションの Noul の正誤説明。
例 · 1 つの決定、ばらばらの境界
route: {
type: 'choice',
instructions: 'Route this ticket to one queue.',
criteria: {
tech: 'Bugs, outages, API failures, or integrations',
sales: 'Pricing, plans, demos, or new-purchase intent',
billing: 'Charges, invoices, receipts, or subscriptions',
human: 'Ambiguous, sensitive, legal, or multi-issue'
}
}
構造体の状態と正確なフィールドの参照
名前付き状態フィールドに証拠を保管し、ドットとインデックスのパスで指示を示します。これにより、どのテキスト、レコード、またはポリシーが答えを制御すべきかについてのあいまいさが軽減されます。
const state = {
ticket: {
message: 'I was charged twice. Please refund the duplicate.',
orderId: 'A-104'
},
order: { charges: [49, 49] },
refundPolicy: 'Duplicate charges are eligible for a refund.'
};
const questions = {
refund_requested: {
type: 'noul',
instructions: 'Does `ticket.message` request a refund?'
},
policy_supports_refund: {
type: 'noul',
instructions: 'Does `refundPolicy` support the request given `order.charges`?'
}
};
デフォルトでのバッチ: 推測的な質問であっても、同じ状態を使用するすべての質問を 1 つのリクエストで尋ねます。 2 番目のリクエストは、その状態またはオプションが以前の回答に本当に依存している場合にのみ実行してください。
この章の後には次のようになります。コードで使用できる、安定したテスト可能な質問定義を作成できます。
公式参考文献: Primitives · State
公式の HTTP エンドポイントから始めます
TYPESAFE_API_KEY をサーバー上に保持します。名前付き質問の状態、モデル、マップを POST /v1/systemone. に送信します。
curl -X POST https://api.typesafe.ai/v1/systemone \
-H "Authorization: Bearer $TYPESAFE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"state": "Stripe has failed for 3 days. I am losing sales.",
"model": "jev-latest",
"questions": {
"department": {
"type": "choice",
"instructions": "Which team should handle this?",
"criteria": {
"billing": "Payment or subscription issues",
"technical": "Bugs or integration problems",
"sales": "Pricing or account questions"
}
},
"is_urgent": {
"type": "noul",
"instructions": "Does this message convey urgency?"
}
}
}'
入力した回答と再試行には公式 SDK を使用してください
Python SDK は環境から TYPESAFE_API_KEY を読み取り、デフォルトは jev-latest に設定され、型指定された質問/回答クラスを公開し、デフォルトの再試行ポリシーを適用します。
pip install typesafe-sdk
from typesafe_sdk import Choice, Noul, TypeSafeClient
with TypeSafeClient() as client:
response = client.system_one(
state={"message": "Stripe has failed for 3 days.", "impact": "Losing sales"},
questions={
"department": Choice(
instructions="Which team should handle this?",
criteria={
"billing": "Payment or subscription issues",
"technical": "Bugs or integration problems",
"sales": "Pricing or account questions",
},
),
"is_urgent": Noul(
instructions="Does `message` and `impact` convey urgency?"
),
},
)
department = response.answers["department"]
print(department.choice, department.confidence)
print(response.answers["is_urgent"].noul)
質問 ID の下にある各回答を読んでください
{
"model": "jev-1.13.0",
"answers": {
"department": {
"type": "choice",
"choice": "technical",
"confidence": 0.78,
"probabilities": { "technical": 0.85, "billing": 0.15, "sales": 0.0 }
},
"is_urgent": { "type": "noul", "noul": 0.95 }
},
"usage": { "input_tokens": 392, "output_tokens": 54 }
}
完全なエラー曲面を処理する
401API キーが欠落しているか無効です。 Bearer トークンを確認します。
422無効なリクエスト形状です。問題のあるフィールドの応答を検査します。
429レート制限を超えました。再試行する前に後退してください。
529サービスが一時的に過負荷になっています。再試行する前に後退してください。
429 および 529 の場合は、即時再試行ではなく指数バックオフを使用します。公式 SDK は、デフォルトの再試行ポリシーに従ってこれを自動的に実行します。
代替案: Vercel AI ゲートウェイ
このサイトでは、AI SDK 評価のアクセス レイヤとしてのゲートウェイについても説明します。これは代替統合パスであり、Jev や TypeSafe の一部ではありません。
import { experimental_evaluate as evaluate } from 'ai';
import { gateway } from '@ai-sdk/gateway';
const result = await evaluate({
model: gateway('typesafe-ai/jev'),
state,
questions,
});
この章の後には次のようになります。認証情報をサーバー側に保持し、入力された回答を確率で受け取ることができます。
公式参考文献: Quick start · API reference · SDKs
PROBABILITYあらゆるオプションまたはレベルの証拠
Choice と Score は完全な分布を返します。次点のオプション、曖昧さ、またはカスタムの不確実性測定が重要な場合に使用します。
CONFIDENCE分布形状の概要
信頼度は、分布がどの程度集中しているか、または平坦であるかを 0 ~ 1 に圧縮します。選択したオプションの確率とは異なります。
Noul: Noul はすでに P(true) を返しているため、別個の信頼度はありません。 0.5 に近い値は不確実です。リスクに応じて「はい」側と「いいえ」側の両方を閾値に設定します。
TypeSafe は、オプションの配布からの信頼性を明らかにします。実際的なポリシーは次のとおりです。
01高い信頼性
UI で選択肢 (タグ、ルート、または判定) を自動提案します。
02中程度の信頼度
提案を表示しますが、続行する前にオペレーターに確認を求める必要があります。
03低い信頼性
デフォルトのアクションなしで人間のキューに送信します。
ストリームまたは受信トレイからのラベル付きサンプルのカットオフを調整します。しきい値はユースケース固有です。提案をお金に換えたり、副作用を返金したりしないでください。
モデルをグローバルに閾値設定するのではなく、アクションを閾値設定する
action = response.answers["action"]
if action.confidence < 0.5:
route_to_human(state) # uncertain: do not guess
elif action.choice == "check_balance":
show_balance(account_id) # reversible, low stakes
elif action.choice == "approve_transfer":
if action.confidence > 0.9:
confirm_then_execute(account_id)
else:
ask_user_to_confirm(account_id) # higher stakes, higher bar
自動化の前に校正する
- 実際のワークフローから、ラベル付きの代表的な例を収集します。
- 回答、分布、信頼度、待ち時間、および人間の決定を記録します。
- 可逆的なアクション、コストのかかるアクション、および不可逆的なアクションのしきい値を個別に選択します。
- ドリフトを監視し、状態、命令、基準、またはモデルのエイリアスを変更した後に再評価します。
状態のヒント文字列、オブジェクト、または配列を状態として渡します。 1 つのメッセージだけが重要な場合は、チャット ログ全体をダンプするよりも、構造化されたレコード (コメント テキスト + メタデータ) を優先します。
この章の後には次のようになります。信頼性の低いフォールバックを設計し、ラベル付きデータを使用してしきい値を調整できます。
公式参考文献: Confidence
完全なサポート優先順位付けワークフローを 1 つ構築する
1 つの構造化されたチケット状態を送信し、3 つの独立した質問を並行して行います。ルーティングと安全性ポリシーをコード内に保持します。
STATE→CHOICESCORENOUL→POLICY
const questions = {
department: {
type: 'choice',
instructions: 'Which team should handle `ticket.message`?',
criteria: {
returns: 'Exchanges, wrong or damaged items',
shipping: 'Delivery status, delays, or lost packages',
billing: 'Charges, invoices, or payment problems',
other: 'None of the above'
}
},
frustration: {
type: 'score',
instructions: 'How frustrated is the customer?',
criteria: ['Calm', 'Concerned but civil', 'Very angry']
},
refund_requested: {
type: 'noul',
instructions: 'Does `ticket.message` request money back?'
}
};
入力された回答を監査可能な決定に変える
const department = result.answers.department;
const frustration = result.answers.frustration;
const refundProbability = result.answers.refund_requested.noul;
if (department.confidence < 0.5) {
return { action: 'manual_triage', reason: 'uncertain_department' };
}
const flags = [];
if (frustration.score > 1.4) flags.push('senior_agent');
if (refundProbability > 0.75) flags.push('refund_review');
return {
action: 'route',
team: department.choice,
flags,
evidence: {
departmentProbabilities: department.probabilities,
frustrationScore: frustration.score,
refundProbability
}
};
製作チェックリスト
- 認証情報とモデル呼び出しをサーバー側で保持します。
- API を呼び出す前に、状態のサイズ、必須フィールド、および質問の定義を検証します。
- モデルのバージョン、質問のバージョン、確率、信頼度、および最終アクションを保存します。
- 明示的な他者/人間の道を提供し、不確実性についてデフォルトをでっち上げないでください。
- 制限付き指数バックオフを使用して 429 と 529 を再試行します。検証エラーを再試行しないでください。
- 自動化を有効にする前に、ラベル付きのエッジ ケースに対してテストし、しきい値を再調整します。
Case index
Six Jev patterns to explore next
These are research paths, not claims that this site built the projects. Each card opens the corresponding category in the open-source radar so you can inspect real implementations and source evidence.
01 CHOICE Jev model and agent routing
Choose a model, tool, skill, or queue from a bounded catalog; keep budget and fallback policy in code.
Browse sourced projects ↗ 02 CHOICE + NOUL Jev content moderation
Classify a record into allow, block, or review, then use a separate true/false check for a specific policy violation.
Browse sourced projects ↗ 03 SCORE + NOUL Jev MCP guardrails
Score proposed tool-call risk and gate irreversible actions behind an explicit human confirmation step.
Browse sourced projects ↗ 04 CHOICE Jev browser action selection
Choose the next action from controls extracted by an accessibility tree while another system observes and executes.
Browse sourced projects ↗ 05 SCORE + NOUL Jev code review and evaluation
Evaluate a diff against named rules, retain probabilities, and route uncertain findings to a reviewer.
Browse sourced projects ↗ 06 CHOICE + SCORE Jev support-ticket routing
Combine department Choice, frustration Score, and refund-request Noul without giving the model permission to issue money.
Browse sourced projects ↗ この章の後には次のようになります。ワークフロー全体を、独自の 1 つの小さな意思決定タスクに転送できます。
公式参考文献: Patterns · Primitives
さらに深く進む
補足リソース
コア コースの終了後は、必要に応じて、これらの公式リファレンス、公開デモ、コミュニティ ディレクトリを使用してください。
公式リファレンスとスターター 7
公開デモ 4
コミュニティディレクトリ 5