Choice — 在 Jev 裡選出一個選項

Choice 是 TypeSafe 的 Jev 模型三種提問型別之一。它從你定義的集合裡恰好挑出一個選項,回傳勝出者、每個選項的機率,以及一個信賴度。

Choice 把一組有名字的選項交給模型,拿回其中恰好一個。選項名是你取的,所以答案本身就是你的程式可以 switch 的值——沒有字串要正規化,也不可能出現你從未定義過的名字。

有意思的不是勝出者,而是隨它一起回來的分布。每個選項都有機率,它們之和為一,而第二名會告訴你模型差一點選了什麼。

一個真實的答案

送給 jev-1.13.0。下面的數字就是回來的東西。

state

今早 4.2 發版以來,我們的 SSO 登入一直回 500。團隊裡沒人登得進去。Chrome 和 Safari 上一樣,兩個不同的租戶也一樣。

問題

這張工單應該由哪個團隊負責?

83%
技術 佔 87%,共 4 個選項
87% 技術

技術以 87% 勝出,但帳號佔著 13%——而這正是應該存在的分歧,因為 SSO 故障確實卡在兩者之間。一個光禿禿的標籤會把它藏起來。如果你的路由判錯是有代價的,13% 就是該拿來設門檻的那個數。

請求與回應原文
請求
{
  "state": "Our SSO login has been throwing a 500 since the 4.2 release this morning. Nobody on the team can get in. Same on Chrome and Safari, two different tenants.",
  "model": "jev-latest",
  "questions": {
    "queue": {
      "type": "choice",
      "instructions": "Which team should own this ticket?",
      "criteria": {
        "Billing": "Payments, invoices, refunds, plan changes",
        "Technical": "Bugs, outages, API errors, integrations",
        "Account": "Login, permissions, seats, data export",
        "Sales": "Pricing, upgrades, contracts"
      }
    }
  }
}
回應
{
  "model": "jev-1.13.0",
  "answers": {
    "queue": {
      "type": "choice",
      "choice": "Technical",
      "confidence": 0.83,
      "probabilities": {
        "Technical": 0.87,
        "Sales": 0,
        "Account": 0.13,
        "Billing": 0
      }
    }
  }
}

答案裡有什麼

type "choice"
與提問型別對應。
choice string
機率最高的那個選項。
probabilities map<string, number>
你定義的每個選項及其機率。它們之和為 1。
confidence number
0 到 1,由機率的分散程度算出。有一個明確的尖峰就是高信賴度;平鋪開來就是低。

規則與限制

  • criteria 把每個選項對應到一段描述,或者在名字本身已經說明問題時對應到 null
  • 一個 Choice 最多接受 255 個選項。把團隊或類別的完整清單交給模型,而不是一份精簡名單——每個選項只花幾個 token。
  • 如果你的清單可能涵蓋不了所有輸入,就加一個 OtherNone of the above 選項,好讓模型有辦法說「都不合適」。

什麼時候該用 Choice

  • 答案是你程式裡已經有的封閉集合——佇列、類別、狀態、下一步動作。
  • 你想看到第二名,而不只是冠軍。
  • 你在做路由,而各個去向的代價差異大到你想為每個選項單獨設門檻。

什麼時候該換別的

  • 這些選項是同一把尺上有序的檔位——低、中、高。Score 知道它們有序,還能落在兩檔之間;Choice 只會把它們當成互不相干的標籤。
  • 可能同時有多個選項為真。那就每個選項問一個 Noul。

另外兩個

對你自己的文字問一個 Choice

試驗場會把你貼上的一切送給 Jev,並把每個答案畫出來。不用帳號,不用金鑰。

打開試驗場