Jevの既知の弱点とは|jev-1.13の9つの苦手と回避策、日本語の精度、データの扱い
TypeSafe AIが公開するjev-1.13の9つの弱点(文字どおりの読み取り、計算、日付、間接参照、敵対的入力など)と公式の回避策、日本語の注意点、学習不使用とZDRの方針をまとめます。

Jev(ジェヴ)の質問を業務の流れに組み込むとき、どう並べればコストと安全性を両立できるのでしょうか。
結論から言うと、公式ドキュメントは Speculative fan-out、Confidence-gated routing、Composite scoring、Intent routing の4つの設計パターンを示しています。
実務では、まとめて聞く、信頼度で分ける、重みで合成する、意図で振り分ける、の順に考えると設計が固まります。
Patterns のページでは、原子的な判断を組み合わせて複雑な振る舞いを作る考え方が要だとされています。
前提は Noul(ヌール)・Choice・Score の3つの質問の型と confidence(信頼度)の理解で、各パターンにはコスト、速度、信頼性、安全性のどれを得るかが添えられています。
Speculative fan-out は、必要な質問を全部1回のリクエストに入れ、何が関係するかは後からコードで決める型です。
質問は並列に評価されるため、足しても応答時間は通常ほとんど伸びないとされています。
公式の例はサポートチケットの振り分けで、二重請求とログイン不能と機能要望が混ざった1通に5問を同時に投げます。
内訳は category(Choice: bug_report / billing / feature_request / account)、bug_severity(Score)、has_reproducible_steps(Noul)、refund_requested(Noul)、frustration(Score)です。
深刻度と再現手順は bug_report、返金要求は billing のときだけ意味を持ちますが、先に聞いておき、外れた経路では捨てます。
if category.choice == "bug_report":
if bug_severity.score > 1.5 and bug_repro.noul > 0.6:
escalate_to_engineering(ticket_id, severity="high")
else:
add_to_bug_backlog(ticket_id)
elif category.choice == "billing":
if refund.noul > 0.7:
route_to_billing_with_flag(ticket_id, refund_likely=True)
else:
route_to_billing(ticket_id)公式の全文ではこの後に feature_request の分岐と、frustration が 1.5 を超えたら優先対応にする処理が続きます。
Confidence-gated routing は、答えが「何か」を教え、信頼度が「行動してよいか」を教える、という2軸の考え方です。
公式の例は音声で操作する銀行アプリで、Choice で check_balance / approve_transfer / other の意図を判定したあと、次のように分岐します。
if action.confidence < 0.6:
route_to_support_agent(account_id)
elif action.choice == "check_balance":
show_balance(account_id)
elif action.choice == "approve_transfer":
if action.confidence > 0.85:
approve_transfer(account_id)
else:
ask_user_to_confirm("Just to confirm: you would like to approve this transfer, is that correct?")
else:
route_to_support_agent(account_id)0.6 未満はどの意図でも人に回す床で、残高照会は 0.6 で足りるとされ、送金承認は 0.85 を超えない限り本人に聞き返します。
Composite scoring は、複雑な評価を独立した観点に分けてそれぞれ Score で採点し、コードが持つ重みで合成する型です。
公式の例は履歴書の選考で、python_depth、team_leadership、system_design、generalist の4観点を5段階で採点し、4 で割って 0 から 1 に正規化してから職種ごとの重みを掛けます。
py = response.answers["python_depth"].score / 4
lead = response.answers["team_leadership"].score / 4
arch = response.answers["system_design"].score / 4
general = response.answers["generalist"].score / 4
ic_score = (0.40 * py) + (0.10 * lead) + (0.40 * arch) + (0.10 * general)
em_score = (0.15 * py) + (0.40 * lead) + (0.20 * arch) + (0.25 * general)同じ4つの答えから2つの順位が作れ、公式は上位が期待と違うときに重みを直せる見通しのよさを重視しています。
Intent routing は、TypeSafe AI を速くて安い分類器として前段に置き、要求ごとに違う処理先へ送る型です。
公式の例は顧客対応で、intent(Choice: order_status / product_question / return_exchange / complaint)と complexity(Score: 3段階の難しさ)を同時に聞きます。
if intent.confidence < 0.5:
return route_to_human_agent(ticket_id)
if intent.choice == "order_status":
handle_order_status(ticket_id)
elif intent.choice == "product_question":
handle_with_llm(ticket_id, PRODUCT_SPECIALIST)
elif intent.choice == "return_exchange":
handle_with_llm(ticket_id, RETURNS_SPECIALIST)
elif intent.choice == "complaint":
low_confidence = complexity.confidence < 0.5
if complexity.score > 1 or low_confidence:
route_to_human_agent(ticket_id)
else:
handle_with_llm(ticket_id, COMPLAINT_RESOLUTION)注文状況は LLM を使わないコードへ、商品質問と返品は別々の文脈を持つ専門 LLM へ、苦情は難しさの点数で LLM か人かを決めます。
EC・カスタマーサポート: fan-out で分類と付随情報を1回で取り、Intent routing で注文照会だけを DB 参照(データベースの直接検索)に落とせます。
人事・採用: Composite scoring で観点別に採点し、職種ごとに重みを変えれば同じ書類から複数の順位を出せます。
金融・決済: Confidence-gated routing で閲覧系は低め、送金系は高めのしきい値を置くと、取り消せない操作だけを厳しく守れます。
| パターン | 向いている | 向いていない |
|---|---|---|
| Speculative fan-out | 分岐先ごとに追加の判断が要る | 質問が1つで済む |
| Confidence-gated routing | 間違いの代償が行動ごとに違う | Noul だけで confidence がない |
| Composite scoring | 複数の観点で順位付けする | 観点が1つしかない |
| Intent routing | 処理先が種類ごとに異なる | 全要求を同じ LLM に流す |
公式の4パターンは、まとめて聞く、信頼度で分ける、重みで合成する、意図で振り分ける、の4つの動きです。
核心は、どのパターンでも判断の内訳と重みとしきい値をコードが持ち、モデルには原子的な質問だけを渡す点です。
次の一手は、あなたの業務の問い合わせを1通選び、fan-out の5問を書いて上の形で分岐させてみることです。