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

Choice(選択肢)とは|Jev に選択肢から1つ選ばせる質問の書き方

AI Hack 編集部確認日

問い合わせをどの部署に回すか、商品をどのカテゴリに入れるか。
こうした「決まった選択肢から1つ選ぶ」判断を Jev(ジェヴ)に任せるとき、質問はどう書けばよいのでしょうか。
結論から言うと、Choice は「選択肢名と説明の対応表」を渡し、選ばれた1つと全選択肢の確率、信頼度を受け取る質問の型です。
実務では、コード側の if 文にそのまま接続できる分類器という位置づけになります。

Choice(選択肢)とは

TypeSafe AI の公式ドキュメント Choice では、Choice は System One モデルに「決まった選択肢の集合から1つを選ばせる」質問の型と説明されています。
例は、チケットの担当チーム、商品カテゴリ、コードの言語といった判断です。
程度なら Score、はい/いいえなら Noul(ヌール)という切り分けも同じページにあります。

Choice の書き方

1. state・model・questions の3つでリクエストを組む

リクエスト最上位には、評価対象の state(状態)、モデルを指す model、質問 ID をキーにした questions があるとされています。
Choice の各質問は次の3フィールドです。

公式ドキュメントの、靴の通販への問い合わせをチームに振り分ける例です(表示例では model は省略されています)。

{
  "state": "My running shoes arrived in the wrong size. Can I swap them for a size 10?",
  "questions": {
    "department": {
      "type": "choice",
      "instructions": "Which team should handle this?",
      "criteria": {
        "returns": "Exchanges, refunds, wrong or damaged items",
        "shipping": "Delivery status, delays, lost packages",
        "billing": "Charges, invoices, payment problems"
      }
    }
  }
}

質問 ID の department は自分で決める名前で、答えは同じ ID の下に返ります。
ID はモデルに送られない一方、選択肢名と説明は両方送られるため、説明は選択肢どうしを区別できる書き方にします。

2. criteria は「選択肢名→説明」で書き、自明なら null にする

説明は1行の文字列から始めるのが公式の推奨です。
選択肢名だけで伝わるなら説明は null でよく、公式の例ではトーンを聞く質問が {"calm": null, "frustrated": null, "angry": null} と書かれています。
公式ドキュメントでは1つの Choice につき最大 255 個の選択肢を受け付け、1つ増やしても数トークンしか増えないとされているので、カテゴリの一部ではなく全リストを渡します。
網羅できない可能性があるなら other や none of the above を足し、どれにも当てはまらないと言える逃げ道を作ります。

3. 似た選択肢は what / not_for / examples で切り分ける

似た選択肢をモデルが混同し続けるときは、説明を文字列ではなくオブジェクトにします。
公式の例では「返品できるか(return_policy)」と「送った返品の進捗(return_status)」を、何を含むか、隣の選択肢に属するものは何か、入力例の3つで書き分けています。

"return_status": {
  "what": "Progress of a return already sent",
  "not_for": "Whether and how an item can be returned",
  "examples": [
    "Has my return arrived yet?",
    "When will my refund be paid?"
  ]
}

what、not_for、examples は API の予約語ではなく自分で決める名前で、名前も値もモデルに見えるため短いラベルにするよう説明されています。

レスポンスの読み方

最初のリクエストに対する公式の応答例です(usage は省略)。

"answers": {
  "department": {
    "type": "choice",
    "choice": "returns",
    "confidence": 1.0,
    "probabilities": {
      "shipping": 0.0,
      "returns": 1.0,
      "billing": 0.0
    }
  }
}

分かりやすい問い合わせなので確率が returns に集中し、信頼度も 1.0 です。
返金の話が混ざれば billing にも確率が割れ、信頼度が下がると説明されています。

複数の Choice を1回のリクエストで聞く

公式ドキュメントが良い習慣として強調するのは、コードが必要とするかもしれない Choice をすべて1回のリクエストに入れることです。
質問は並列に評価されるため応答時間はほとんど変わらず、不要な答えはコードが無視すればよいとされています。
公式の例では、3つのチームにまたがる曖昧なチケットに担当チーム、返品理由、配送問題、望む解決、トーンの5つを1回で聞き、department は returns(確率 0.60、billing 0.38、信頼度 0.39)だったとされています。

5つの質問を TRIAGE_QUESTIONS にまとめて送ったあと、担当チームを決める部分の Python コードです。

department = answers["department"]
if department.confidence < 0.3:
    # Not clear which team to send to. Let a person decide.
    send_to_manual_triage(ticket)
    return

if department.choice == "returns":
    # return_reason answer is only used here
    assign(ticket, team="returns", issue=answers["return_reason"].choice)
elif department.choice == "shipping":
    # shipping_issue answer is only used here
    assign(ticket, team="shipping", issue=answers["shipping_issue"].choice)
else:
    assign(ticket, team="billing")

# A second team with a real share of the probability gets a copy
for team, probability in department.probabilities.items():
    if team != department.choice and probability > 0.25:
        notify(ticket, team=team)

信頼度 0.3 未満なら人に回し、2番目のチームの確率が 0.25 を超えたら写しを送る、という判断がふつうの if 文です。
続く部分では、望む解決の信頼度が 0.5 未満なら推測せず顧客に聞き返すと書かれています。

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

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

まとめ|Choice は「一問一答の分類」から「コードで分岐する仕組み」への入り口にする

Choice は、選択肢名と説明の対応表を criteria に書き、選ばれた1つ、全選択肢の確率、信頼度の3つを受け取る質問の型です。
核心は、答えが必ず自分の用意した選択肢に収まり、確率と信頼度が付くので、分岐と例外処理を自分のコードで書けることにあります。
次の一手として、手作業で振り分けている業務を1つ選び、全選択肢と other を並べた Choice を書き、信頼度で人に回す分岐まで小さく試してみてください。

出典

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

AI Hackマーケット公式LINE

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

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