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,并把每个答案画出来。不用账号,不用密钥。

打开试验场