# Jev の3つの質問タイプ（Choice / Score / Noul）の書き方と選び方

Jev への質問は Choice・Score・Noul の3種類。それぞれの書き方、返ってくる値、選び方の基準、Noul の 0.5 を誤読しないための注意を、実行結果つきで説明する。

- 正規URL: https://jevguide.jp/guides/question-types/
- 公開: 2026-09-21T00:00:00.000Z
- 更新: 2026-09-21T00:00:00.000Z
- 最終確認: 2026-09-21T00:00:00.000Z
- 検証環境: jev-1.13.0（2026-09-21 に REST API で3種類を実行）

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 — はい／いいえ

```json
"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つ

```json
"department": {
  "type": "choice",
  "instructions": "Which team should handle this?",
  "criteria": {
    "billing": "Payments, invoicing, refunds",
    "technical": "Bugs, outages, integrations",
    "sales": "Pricing, upgrades, new accounts"
  }
}
```

```json
{ "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 — 段階のどこか

```json
"frustration": {
  "type": "score",
  "instructions": "How frustrated is the customer?",
  "criteria": ["Calm", "Frustrated", "Very angry"]
}
```

```json
{ "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回ぶんで済みます（[料金と制限](/guides/pricing-and-limits/)）。

ある質問の答えを次の質問の前提にしたいときは、1回目の答えを `state` に入れて2回目を呼びます。

## AI SDK での呼び名の違い

AI SDK の `experimental_evaluate` と Vercel AI Gateway では、Noul を `boolean` と書き、答えは `noul` ではなく `probability` に入ります。Choice と Score の `confidence` は `providerMetadata` の側に入ります。詳しくは [AI SDK で使う](/guides/ai-sdk-evaluate/)。

## よくある質問

### 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)](https://docs.typesafe.ai/primitives)
- [API reference](https://docs.typesafe.ai/api)
- [Jev 1.13 jaggedness](https://docs.typesafe.ai/model-jaggedness/jev-1.13)

---
typesafe.ai とは無関係の非公式ガイドです。
