Media
AIの仕組みと選び方JevTypeSafe AISystem One モデルScoreconfidencePython SDK

Score(段階採点)とは|Jev に段階で採点させる質問の書き方

AI Hack 編集部確認日

バグの深刻度、顧客の怒りの度合い、候補者の経験の深さ。
こうした「どのくらいか」を Jev(ジェヴ)に判定させたいとき、質問はどう書けばよいのでしょうか。
結論から言うと、Score は「低い順に並べた段階の説明」を渡し、段階上の位置を示す数値と各段階の確率、信頼度を受け取る質問の型です。
実務では、しきい値で分岐したり、複数の Score を重み付けして優先度を作ったりする部品になります。

Score(段階採点)とは

TypeSafe AI の公式ドキュメント Score では、Score は「段階で説明できるスペクトラム上の位置」を答える質問の型と説明されています。
順序のない選択肢なら Choice、はい/いいえなら Noul(ヌール)を使います。

Score の書き方

1. criteria は低い順に並べた配列で書く

Score の質問は type を "score" にし、instructions(指示文)に何を採点するかを書き、criteria(基準)に段階の説明を低い側から高い側へ並べた配列を渡します。
公式ドキュメントでは、段階は最低2つ、最大10までとされています。
各段階の番号は配列の位置で 0 から始まり、モデルには説明文だけが渡されて各段階が state(状態)に対して個別に判定されるという説明です。

2. 「程度」ではなく「状況」を書き、1つの Score は1次元にする

公式の助言は、degrees(程度)ではなく situations(状況)を書くことです。
数字だけの段階 ["0", "1", "2"] で「ボタンが数ピクセルずれている」報告を採点すると score 0.57、信頼度 0.35 で 0 と 1 に確率が割れ、同じ報告を説明文の段階で採点すると 0.0、信頼度 1.0 になったとされています。
モデルは段階の番号や隣の段階を見ないため、「前の段階より悪い」という書き方や説明中の数字は意味を持たないという説明です。

もう1つの原則は1次元です。
「時間を守り、賢く、経験豊富」のような説明は3つを同時に測っており、置き場のない入力で信頼度が下がり score の意味が薄れます。
1つずつ Score に分け、コードで合成します。

3. 隣り合う段階で迷いが続くなら examples を付ける

明らかだと思う入力で隣の段階との間に score が落ち続けるときは、各段階を文字列ではなくオブジェクトにし、説明の欄と例の欄を全段階に同じ名前で持たせます。
公式の例は段階ごとに what(説明)と examples(例の配列)を持たせる形で、Safari でだけクラッシュする報告に対する3通りの結果が載っています。

段階の書き方scoreconfidence
文字列だけ(例なし)1.300.54
役立つ例を追加(ブラウザによって失敗する)1.070.90
無関係な例を追加(検索は失敗するが閲覧はできる)1.280.57

例は実際の入力に似ているときだけ効き、信頼度が上がっても正しさの証明にはならないという読みです。

レスポンスの読み方

「Safari でだけクラッシュし、Chrome では動くが Safari しか使わない顧客がいる」という報告を深刻度3段階で採点した公式の応答例です。

"bug_severity": {
  "type": "score",
  "score": 1.3,
  "confidence": 0.54,
  "legend": {
    "0": "Cosmetic; no impact to functionality",
    "1": "Broken or degraded feature, but workaround exists",
    "2": "Blocking issue; no workaround exists"
  },
  "probabilities": {
    "0": 0.0,
    "1": 0.7,
    "2": 0.3
  }
}

1.30 は「おおむね段階 1、一部は段階 2」で、報告の内容に合う分布だと説明されています。
同じ質問に対する5つの入力の結果も載っています。

state(要約)scoreconfidence
ボタンが数ピクセルずれている0.01.0
PDF 出力が動かないが CSV で代用できる1.01.0
PDF 出力が終わらず、CSV も人によって失敗する1.120.81
Safari でだけクラッシュし、Safari しか使えない顧客がいる1.30.54
今朝から全員ログインできず 500 エラー2.01.0

信頼度 1.0 は確率が1つの段階に集中したことを表すだけで、正しさの保証ではないと注記されています。
score は確率で重み付けした平均なので、1.0 でも「全部が段階 1」と「0 と 2 に半分ずつ」の両方があり得るので、分布も併せて読みます。

複数の Score を重み付けして優先度にする

複数の要素に依存する判断は、要素ごとに Score を立てて1回のリクエストで送り、コードで重み付けして合成するのが公式の勧めです。
公式の例では深刻度(3段階)、苛立ち(3段階)、報告の詳しさ(4段階)を TRIAGE_QUESTIONS にまとめ、応答は 1.24、1.45、3.0 だったとされています。
段階数が違うと上限が違うので、各 score を最上位の番号で割って 0 から 1 に正規化してから重みを掛けます。

def normalized(answers, question_id: str) -> float:
    """Put a score on 0 to 1 by dividing by its top level number."""
    top_level = len(TRIAGE_QUESTIONS[question_id].criteria) - 1
    return answers[question_id].score / top_level


def priority(ticket: str) -> float:
    with TypeSafeClient() as client:
        response = client.system_one(
            state=ticket,
            questions=TRIAGE_QUESTIONS,
        )
    answers = response.answers

    severity = normalized(answers, "severity")
    frustration = normalized(answers, "frustration")
    report_quality = normalized(answers, "report_quality")

    # A detailed report helps an engineer investigate, so it raises priority a little.
    return 0.6 * severity + 0.3 * frustration + 0.1 * report_quality

上の応答では正規化後が 0.62、0.725、1.0 で、優先度は四捨五入で 0.69 と計算されています。

活用例|どんな業種・職種で使えるか

つまずきポイント・注意点

まとめ|Score は「感覚的な採点」から「説明できる優先度」への入り口にする

Score は、低い順に並べた段階の説明を criteria に渡し、確率で重み付けした位置、各段階の確率、信頼度、凡例を受け取る質問の型です。
核心は、段階を「状況」として書き、1つの Score を1次元に保てば、結果を自分のコードでしきい値や重みに変換できることにあります。
次の一手として、いま人が付けている優先度を1つ選び、要素ごとに3段階の Score を書いて、重み付けした値と人の判断を並べて比べてみてください。

出典

  1. Score
  2. Primitives (Questions)
  3. State
この記事で扱ったツールJevTypeSafe AISystem One モデルScoreconfidencePython SDK

AI Hackマーケット公式LINE

このメディアは、AI Hackマーケットが運営しています。
AI Hackマーケットは、AIノウハウを売買できるマーケットプレイスです。
現在ローンチ準備中のため公式LINEにご登録ください。
ご登録いただくと、実績あるクリエイターの新着記事や、記事クーポン情報をお届けします。

友だち追加LINE友だち追加QRコード