Jev Recipe / アーキテクチャ比較
Jev vs Instructor:構造化出力から型安全な意思決定へ
大モデルの JSON 生成、スキーマ検証エラー、リトライループを解消。決定論的な単一フォワードパスでレイテンシを ~95ms へ圧縮。
Instructor から Jev への移行 3 ステップ
01Pydantic / Zod モデルから Jev Question Schema へのマッピング手順を把握。
02リトライ待機ループ(Exponential Backoff)コードを削除し、単一 HTTP 呼び出しへ簡素化。
03モデルが直接出力する較正済み確率値(Confidence)を活用した安全な分岐処理へ移行。
schema / 共通意思決定コントラクト
{
"routing": {
"type": "choice",
"instructions": "チケットを正しいキューへ振り分ける",
"criteria": {
"billing": "決済、返金、インボイス",
"technical": "製品不具合や設定トラブル",
"sales": "購入相談や見積もり"
}
}
} このスキーマは Instructor Pydantic モデルと等価であり、Playground でゼロリトライ判定を検証できます。
アーキテクチャ特性の徹底比較
METRIC
Jev
Instructor / Guardrails
基本動作原理
System 1 意思決定モデル(離散 Softmax 確率計算)
汎用 LLM によるテキスト生成 + 外部 JSON パース検証
推論レイテンシ (P50)
~95ms(単一フォワードパスで完了)
1200ms〜3500ms(生成長に依存、リトライ時はさらに倍増)
スキーマハルシネーション率
0%(無効なキーや不正な JSON が構造上発生しない)
2%〜8%(モデルのブレによりパース失敗・再試行が必要)
信頼度(確信度)の較正
RLCD 学習による客観的な較正済み確率値を出力
未較正(プロンプトに自己申告させるか、対数確率の外部集計が必要)
耐プロンプトインジェクション性
非生成型アーキテクチャにより物理的に無効化
生成頭を持つため脱獄やプロンプト指示上書きに脆弱
コード対照:リトライループ vs ゼロリトライ型呼び出し
python / instructor リトライループ
import instructor
from openai import OpenAI
from pydantic import BaseModel
class RouteDecision(BaseModel):
queue: str
client = instructor.from_openai(OpenAI())
def route_ticket(ticket: str) -> RouteDecision:
return client.chat.completions.create(
model="gpt-4o-mini",
response_model=RouteDecision,
max_retries=3,
messages=[{"role": "user", "content": ticket}],
)python / jev ゼロリトライ型呼び出し
import requests
def route_ticket(ticket: str) -> dict:
resp = requests.post(
"https://api.typesafe.ai/v1/jev/evaluate",
json={
"state": {"ticket": ticket},
"questions": {
"routing": {
"type": "choice",
"instructions": "チケットを振り分ける",
"criteria": {
"billing": "決済、返金、インボイス",
"technical": "製品不具合や設定トラブル",
"sales": "購入相談や見積もり"
}
}
}
}
)
resp.raise_for_status()
return resp.json()["routing"]