Jev AI

JEV パターン

11
パターン
24
型のついた質問
3
質問タイプ

どの Jev パターンも、Jev を「手を動かすエージェント」ではなく、大きなプログラムの中の判断の一層として扱う。ここにある 11 個は、実際に Jev を手にした人たちのあいだで繰り返し現れた形だ。

Jev パターンはどれも同じ骨格を共有している。構造化されていない状態が入り、型のついた質問が一緒に入り、Jev は質問ごとに Choice か Score か Noul を返す。どれにも較正された確率がついている。そのあと、答えを組み合わせ、しきい値をあて、権限を検査し、起こすべき副作用を起こすのはコードだ —— ごく普通の、読めてテストできるコード。

最後の一文が規律のすべてになる。Jev は決して手を動かさない。判断を出すのは Jev、制御を握り続けるのはプログラム。だからこそ Jev パターンは、信じるしかないものではなく、突っついて検討できるものになる。

すべての JEV パターンに共通する骨格

TypeSafe 自身のドキュメントはこの構成を一本の縦線として描いている。構造化されていない状態が型のついた質問に流れ、型のついた質問が Jev に流れ、Jev が分布つきの choice・score・noul を返し、コード内の決定的な組み合わせが結果を二方向に分ける —— 片方は可逆な動作、もう片方は再確認か代替経路。

この図でいちばん効いている語は「可逆」だ。以下のどの Jev パターンも、Jev の答えが引き起こすことは取り消せる・やり直せる・上位に上げられる、という前提に立っている。Jev は速くて安くて較正の取れた推測器で、速くて安い推測器を置くべき場所はどこか —— たまに外しても耐えられる判断の手前であって、耐えられない判断の後ろでは絶対にない。

TypeSafe は境界をはっきり書いている。Jev が答えるべきなのは「このリクエストは既知のどのルートか」「この問題はこの基準で見てどれくらい重いか」「このメッセージは返金を求めているか」「この引用はこの主張を支えているか」といったものだ。「このアカウントを消すか」「この送金を実行するか」のような影響の大きい決定の唯一の決定者に Jev を据えてはいけない。

なぜ JEV パターンが要るのか

質問型が三つしかなく、テキストも出さないモデルなら、ドキュメントなど要らなそうに聞こえる。実際は逆だ。この制約が、設計の仕事をまるごと一か所に押し込むからで、その一か所とは多くの人が普段考え慣れていない場所 —— 質問そのものの形 —— にある。

チャットモデルなら曖昧なまま投げて、モデルに汲み取らせることができる。Jev ではできない。選択肢には一つずつ名前が要るし、段階には説明が要るし、しきい値はプロンプトで匂わせるのではなく自分で決めることになる。これを上手くやるのは技術であり、ここにある Jev パターンは、最初の一週間でみんなが繰り返し間違えた問いに対する、いま時点での答えだ。

もう一つの理由は組み合わせにある。Jev の質問が一つだけで面白くなることはまずない。Jev を入れる価値を生むのは、同じ状態について一回のリクエストで六つ聞き、六つの確率を一つの動作に変換する 20 行のルーティングを書く部分だ。Jev パターンが主に語っているのはその後半 —— つまり Jev が肩代わりしてくれない部分だ。

11 個の Jev パターン

以下の Jev パターンはコミュニティの playbook から翻案したもので、それぞれに個別ページがあり、state・型のついた質問・ルーティング方針・フロー図まで載せてある。型のバッジは、その Jev パターンが主にどの Jev プリミティブに寄りかかっているかを示す。

パターン 01

Support triage with speculative fan-out

Route a ticket to the right queue while collecting the signals that may matter later: intent, urgency, frustration, bug severity, reproducibility, and refund intent.

NOULSCORECHOICE
パターン 02

Intent routing and model cascades

Choose between deterministic code, a specialist LLM, and a human without sending every request to the most expensive handler.

CHOICESCORE
パターン 03

Confidence-gated actions

Use the same semantic interpretation for actions with different risk profiles.

解説のみ
パターン 04

LLM input, output, and tool-call guardrails

Screen a message before it reaches an LLM and screen the resulting text before it reaches a user or tool.

NOULSCORE
パターン 05

RAG passage filtering

Prevent irrelevant, contradictory, or prompt-injecting retrieved passages from reaching an answer-writing model.

NOULSCORE
パターン 06

Semantic search and re-ranking

Improve a keyword or embedding shortlist with a direct semantic comparison.

NOUL
パターン 07

Citation and claim verification

Check whether a cited passage actually supports a generated claim.

CHOICE
パターン 08

Typed function and tool dispatch

Map natural language to one known function and closed-set arguments.

解説のみ
パターン 09

Composite scoring

Score independent dimensions and make the final weighting visible in code.

SCORE
パターン 10

Structured extraction with a verification pass

Recover a value from messy text while keeping normalization and validation deterministic.

CHOICE
パターン 11

Hierarchical classification

Classify into a deep taxonomy without asking one question to carry an unwieldy option list.

CHOICE

どの JEV パターンを選ぶか

自分のプログラムがすでに知っていることから出発する。行き先の集合が固定されていて、そこから一つ選ぶ必要があるなら、要るのはルーティング型の Jev パターンで、本当の設計作業は行き先に十分精密で重ならない名前をつけることだけだ。対象が一つあって、それがどれくらい悪いかを知る必要があるなら、説明つきの段階を持つ採点型の Jev パターン。実行したい動作があって、その許可がほしいなら、Noul で組んだガードレール型の Jev パターン。

自分がどれなのか判別できないなら、その判断はまだ Jev に渡せるほど輪郭がはっきりしていない、というのがたいていの答えだ。受け入れられる答えをすべて書き出してみる。その一覧が開いているなら Jev は誤った道具で、テキストモデルが正しい。一覧が閉じているなら、いま Jev の質問をひとつ設計し終えたことになる。

もう一つ役に立つふるいは量だ。ここにある Jev パターンはどれも、その判断が十分な頻度で走るときにだけエンジニアリングの投資に見合う。1 日に 2 回しか起きない判断は、すでに料金を払っているモデルに任せておけばいい。Jev の理屈は 1 回目ではなく 1000 回目の呼び出しの上に立っている。

JEV パターンの質問の作り方

いちばん効く習慣は、選択肢にラベルを貼るのではなく説明を書くことだ。「バグ・請求・その他」という Jev の Choice は、一つずつに一文がついているものに明確に劣る —— 「製品の欠陥、サービス停止、または連携の失敗」「課金、返金、請求書、サブスクリプションに関すること」「上のどれにも明確には当てはまらない」。モデルが読むのはこちらの説明なので、説明が曖昧なら判断も曖昧になる。

二つ目の習慣は、Jev に逃げ道を残すこと。ほぼすべての Choice に「どれでもない」を明示的に入れるべきだ。正解の入っていない一覧から選べと強いれば、自信たっぷりの誤答が返ってくるに決まっている。コード側の確信度の下限と組み合わせれば、曖昧なものは無理に当てずに自分で再確認へ流れていく。

三つ目は、一つの Jev の質問に一つのことだけを聞かせること。書いた選択肢の集合の中で、二つの選択肢が無関係な二つの軸で分かれていることに気づいたら、それは質問が二つある。分ける。Jev は並列に解くので分けてもほぼタダだし、たいてい両方の答えが良くなる。

最後に、状態の中の本当に関係する部分を Jev に指し示すこと。playbook の例はどれもフィールドを明示して参照している —— オブジェクト全体ではなく ticket.messages[0].text を渡す —— 状態が大きいとき、この精密さが答えをはっきり引き締める。

JEV パターンのしきい値をどこに置くか

コードの中。常にコードの中で、しかも見つけられて書き換えられる定数として置く。確信度のしきい値をヘルパー関数の奥に埋めてしまったり、さらに悪いことに Jev への instructions に書き込もうとしたりするのはよくある話だが、どちらも本番では持たない。本当にほしい数字は、事前に推論して出すものではなく、実際のトラフィックを眺めて見つかるものだからだ。

うまくいくのは、小さくて明示的な階段だ。上のしきい値より上なら自動実行。二つのしきい値のあいだなら実行しつつ印をつけて抜き取り検査。下のしきい値より下なら実行しない —— 人に回すか、そもそも避けたかった高いモデルに戻す。

Jev は較正を目標に訓練されているので、これらの数字には意味がある。Jev が 0.9 と言うならおおむね 10 回中 9 回当たっているはずで、残りの 1 割についてコストの見積もりが立てられる。当てずっぽうではなく。この性質こそが本当の製品で、速度や価格より重い。

何度でも言う価値のある注意がある。較正は大量の呼び出しについての統計的な約束であって、個々の 1 回についての保証ではない。Jev が特定のケースで自信満々に外すことは普通にありえるし、説明はしてくれない。抜き取り検査は初日からつないでおく。

JEV のアンチパターン

Jev に引数を書かせる

繰り返し現れる誤りがこれだ。Jev にツールを選ばせて、そのまま引数まで埋めてくれると期待する。Jev は文字列を組み立てられない。ツールの選択は Jev、引数の構築はコードかテキストモデルに任せる。

巨大な Choice ひとつ

1 つの Jev の質問に 255 件まで選択肢を置けるので、深い分類体系を一枚の一覧に潰したくなる。段に分けた分類 —— まず粗い Jev の質問、選ばれた枝の中でもう一段細かい質問 —— のほうが成績も良く、デバッグもはるかに楽だ。

Jev の答えを事実として扱う

型のついた出力は、チャットモデルの一文より権威があるように見えてしまう。そんなことはない。同じ種類の推測が、より良い容器に入って、正直な確率つきで返ってきているだけだ。しきい値を置く。

Jev に推論を数段つながせる

相互に依存する推論が数段必要な問いでは、Jev の精度は測定できるほど落ちる。独立した実測では、数学・日付の計算・間接的な参照がいずれも足を引っ張ると報告されている。分割するか、その段だけ推論モデルに替える。

「どれでもない」を省く

明示的な逃げ道がないと、分布の外にある入力はすべて自信満々の誤分類になる。テスト中は問題なく見えて、本番で静かにずれていく Jev の組み込みは、たいていこれが原因だ。

最初に手をつける JEV パターン

まず一つだけ実装するなら、ガードレールの Jev パターンを選ぶ。いちばん小さく、Noul 一つで済み、それ自体は何も止めないので、重要なものを Jev に預ける前に、実トラフィックでしきい値を較正できる。

そこからの自然な次の一歩はルーティングだ。金が動くのはそこだからで、高いモデルの手前に Jev の呼び出しを一つ置き、リクエストごとに高いモデルがどれだけ必要かを決める。ここで浮くのは安い業者に乗り換えて得られる 2 割ではなく、その呼び出しを丸ごとやめることで得られる 9 割だ。

このページのどの Jev パターンもコミュニティの playbook からの翻案で、それぞれのページに state・型のついた質問・ルーティング方針が書き出してある。眺めるためではなく、読んで写すために置いてある。

JEV のよくある質問

Jev を使うのに Jev パターンは必須?
必須ではない。単発の Jev の質問をコードの分岐に挿すのは、まったく真っ当な出発点だ。Jev パターンの価値が出てくるのは、複数の Jev の答えを一つの決定に組み合わせ始めたとき —— 微妙なところはすべてそこにある。
複数の Jev パターンを組み合わせられる?
むしろそれが普通だ。サポートの仕組みなら、一回のリクエストの中で振り分けと確信度ゲートとガードレールを同時に走らせることになる。どれも同じ状態についての質問で、Jev は並列に答えるので、所要時間は一つ聞くのとほとんど変わらない。
1 回の Jev リクエストに質問はいくつ入れられる?
playbook の振り分けの例は六つ使っている。並列サンプラーのおかげで、質問を足しても応答時間はほとんど変わらない。余分に払うのはその質問ぶんの入力トークンくらいで、投機的ファンアウトが成立するのはこのためだ。
Jev に不可逆な動作を起こさせてもいい?
だめだ。TypeSafe 自身の指針がはっきり書いている —— 「このアカウントを消すか」「この送金を実行するか」のような影響の大きい決定の唯一の決定者に Jev を据えてはいけない。Jev は可逆な動作の手前に置き、それ以外は上に上げる。
Jev の確信度のしきい値はいくつにすべき?
万能の数字はなく、数字を挙げている人は推測で言っている。まず意図的に保守的な下限を置き、判断ごとに Jev の確信度も一緒に記録し、自分の誤りが実際どこに固まっているかが見えてから動かす。
別の SDK でも同じ Jev パターンは使える?
使える。Jev パターンが語っているのは質問の設計とルーティングの論理であって、特定のクライアントではない。playbook の例は Python SDK だが、同じ形はそのまま JavaScript SDK、LangChain、Pydantic AI、あるいは素の HTTP 呼び出しに持っていける。

Adapted from the community awesome-jev-by-typesafe playbook (MIT). Source: repo-index/awesome-jev-by-typesafe/docs/jev-use-case-playbook.md (MIT)