Jev への質問は Choice(どれか)・Score(どの程度か)・Noul(はい/いいえ) の3種類です。どれも type と instructions を持ち、答えの範囲を決める criteria の形だけが違います。
| 種類 | criteria | 返る値 | コードでの使い道 |
|---|---|---|---|
| Choice | 選択肢 → 説明 のマップ(最大 255) | choice、probabilities、confidence | 分岐(switch) |
| Score | 段階の説明を順に並べた配列(2〜10) | score、legend、probabilities、confidence | しきい値との比較 |
| Noul | 任意。true と false の意味の説明 | noul(0〜1) | if |
Noul — はい/いいえ
"is_urgent": {
"type": "noul",
"instructions": "Does this convey urgency?",
"criteria": {
"true": "Explicitly time-sensitive",
"false": "No urgency expressed"
}
}
返るのは { "type": "noul", "noul": 0.95 } のような、「はい」である確率です。Noul には confidence がありません。値そのものが確からしさを表しているためです。
criteria は省略できますが、境界があいまいな質問では書いたほうが安定します。公式は、true に「いいえ」の意味を、false に「はい」の意味を書くような食い違いは精度を落とす、と注意しています。
Choice — 選択肢から1つ
"department": {
"type": "choice",
"instructions": "Which team should handle this?",
"criteria": {
"billing": "Payments, invoicing, refunds",
"technical": "Bugs, outages, integrations",
"sales": "Pricing, upgrades, new accounts"
}
}
{ "type": "choice", "choice": "billing", "confidence": 0.91,
"probabilities": { "billing": 0.94, "technical": 0.06, "sales": 0 } }
- 説明が要らない選択肢には
nullを書ける - どれにも当てはまらない入力が来得るなら、
otherやnone_of_the_aboveを選択肢に入れる。 Choice は必ずどれかを選ぶので、逃げ道が無いと無理に当てはめます probabilitiesは合計 1。confidenceはその分布の尖り具合から導かれる値です
Score — 段階のどこか
"frustration": {
"type": "score",
"instructions": "How frustrated is the customer?",
"criteria": ["Calm", "Frustrated", "Very angry"]
}
{ "type": "score", "score": 1.08, "confidence": 0.88,
"legend": { "0": "Calm", "1": "Frustrated", "2": "Very angry" },
"probabilities": { "0": 0, "1": 0.92, "2": 0.08 } }
- 段階は 0 から数える。
scoreは各段階の確率で重みづけした平均で、段階の間の値になり得る(上の例では 1.08) scoreはしきい値との比較に使う。公式は、段階の間の値から元の数値を逆算するような使い方はしないよう明記しています(数値としての校正は弱い、とのこと)- 段階の説明は「1」「2」「3」ではなく、その段階が何を意味するかを言葉で書く
どれを選ぶか
公式の基準は「答えの形に合わせる」です。
- 順序の無い、決まった選択肢のどれか → Choice(担当部署、文書の種類、プログラミング言語)
- 連続した程度で、各点の意味を言葉にできる → Score(不具合の深刻度、不満の度合い、習熟度)
- はっきりした はい/いいえ で、確率そのものが使える → Noul(個人情報を含むか、返金を求めているか)
迷ったら、コードがそのまま使える形を選びます。3つの処理に分かれるなら Choice、しきい値で切るなら Score、if に入れるなら Noul。
Noul の 0.5 を「中くらい」と読まない
「この候補者は Python が得意か?」を Noul で聞いて 0.5 が返ったとき、それは「中級」ではなく、はい と いいえ に同じ確率を与えたという意味です。「得意」の定義があいまいだと、確率の解釈もあいまいになります。
- 程度を知りたい → Score にして、「経験なし/触ったことがある/日常的に使う/深く精通」のように段階を定義する
- はい/いいえ が欲しい → 条件を具体的にする(「職歴に、業務で Python を使ったと書かれているか?」)
Noul と Choice は同じ質問でも同じ数値にならない
公式の例では、「返金を求めているか?」を Noul で聞くと 0.22、はい/いいえ の Choice で聞くと yes が 0.01 でした。また、ある質問とその否定を2つの Noul で聞いた結果は 0.72 と 0.47 で、足して 1 になりません。
Choice は選択肢どうしの相対的な比較、Noul は1つずつの絶対的な判断です。Noul で調整したしきい値を Choice に持ち込まない、別々の質問のあいだに算術的な関係を期待しない、が公式の勧めです。
instructions の書き方
- 書いてあるとおりに読まれる。 意図を汲んでくれると期待しない。誤答を見て「本当はこういう意味で……」と説明したくなったら、その説明が
instructionsに足りていなかった部分です - 1つの質問に判断は1つ。 複数の要素を量る判断は質問を分け、結果をコードで組み合わせる
- 二重否定や、何段もたどらせる聞き方を避ける
stateの特定の部分を指すときは、バッククォートで名前を書く。 例:Does `message` convey urgency?、Is `items[3]` the name of a fruit?instructionsとcriteriaは文字列だけでなく、オブジェクトや配列にもできる。質問文と、質問が参照するデータを別のフィールドに分けて書けます
複数の質問を一度に
3種類は1回のリクエストに混ぜられます。各質問は同じ state に対して並列かつ独立に評価されるので、質問を足しても応答時間はほとんど変わらず、ある質問の答えが別の質問に影響することもありません。料金の面でも state は1回ぶんで済みます(料金と制限)。
ある質問の答えを次の質問の前提にしたいときは、1回目の答えを state に入れて2回目を呼びます。
AI SDK での呼び名の違い
AI SDK の experimental_evaluate と Vercel AI Gateway では、Noul を boolean と書き、答えは noul ではなく probability に入ります。Choice と Score の confidence は providerMetadata の側に入ります。詳しくは AI SDK で使う。
よくある質問
Noul とは何ですか?
はい/いいえで答えられる質問の型です。「はい」である確率を 0〜1 の数値で返します。AI SDK と Vercel AI Gateway では同じものを boolean と呼びます。
Noul が 0.5 のとき、「中くらい」という意味ですか?
違います。0.5 は「はい」と「いいえ」に同じ確率を与えている、つまりモデルが決めかねているという意味です。程度を測りたいときは Score を使い、各段階の意味を言葉で定義します。
選択肢はいくつまで書けますか?
Choice は1つの質問につき最大 255 個、Score の段階は 2〜10 個です(公式 API リファレンス、2026-09-21 時点)。
出典・参考リンク
- 一次情報 Primitives (Questions)
- 一次情報 API reference
- 一次情報 Jev 1.13 jaggedness