Choice — elegir una opción en Jev

Un Choice es uno de los tres tipos de pregunta del modelo Jev de TypeSafe. Elige exactamente una opción de un conjunto que tú defines y devuelve la ganadora, una probabilidad para cada opción y un valor de confianza.

Un Choice le entrega al modelo un conjunto de opciones con nombre y recibe exactamente una de ellas. Los nombres de las opciones son tuyos, así que la respuesta ya es un valor sobre el que tu código puede hacer un switch: no hay cadena que normalizar ni posibilidad de un nombre que nunca definiste.

Lo interesante no es la ganadora, sino la distribución que viene con ella. Cada opción recibe una probabilidad, suman uno, y la segunda te dice qué estuvo a punto de elegir el modelo.

Una respuesta real

Enviada a jev-1.13.0. Los números de abajo son lo que volvió.

El state

Nuestro inicio de sesión SSO está devolviendo un 500 desde la versión 4.2 de esta mañana. Nadie del equipo puede entrar. Igual en Chrome y en Safari, en dos inquilinos distintos.

La pregunta

¿Qué equipo debería hacerse cargo de este ticket?

83 %
alta
Técnico con 87 %, de 4 opciones
87 % Técnico

Técnico gana con un 87 %, pero Cuenta se queda con un 13 %, y ese es justo el desacuerdo correcto, porque un fallo de SSO sí está en la frontera entre ambos. Una etiqueta pelada lo habría escondido. Si equivocarse en el enrutado tiene un coste, el 13 % es el número sobre el que poner el umbral.

La petición y la respuesta, literales
Petición
{
  "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"
      }
    }
  }
}
Respuesta
{
  "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
      }
    }
  }
}

Qué contiene la respuesta

type "choice"
Coincide con el tipo de pregunta.
choice string
La opción con mayor probabilidad.
probabilities map<string, number>
Cada opción que definiste, con su probabilidad. Suman 1.
confidence number
De 0 a 1, calculado a partir de cómo se reparten las probabilidades. Un pico claro es confianza alta; un reparto plano es baja.

Reglas y límites

  • criteria asocia cada opción a una descripción, o a null cuando el nombre se explica solo.
  • Un Choice admite hasta 255 opciones. Dale al modelo la lista entera de equipos o categorías en vez de una selección: cada opción cuesta solo unos pocos tokens.
  • Añade una opción Other o None of the above cuando tu lista pueda no cubrir toda entrada, para que el modelo tenga forma de decir que ninguna encaja.

Recurre a un Choice cuando

  • Las respuestas son un conjunto cerrado que ya tienes en el código: colas, categorías, estados, siguientes acciones.
  • Quieres ver la segunda opción, no solo la ganadora.
  • Estás enrutando y el coste de cada destino difiere lo bastante como para querer un umbral por opción.

Usa otra cosa cuando

  • Las opciones son peldaños ordenados de una misma escala: bajo, medio, alto. Un Score sabe que están ordenados y puede caer entre ellos; un Choice los trata como etiquetas sin relación.
  • Más de una opción puede ser cierta a la vez. Haz un Noul por opción.

Los otros dos

Hazle un Choice a tu propio texto

El patio de juegos envía a Jev lo que pegues y dibuja cada respuesta. Sin cuenta y sin clave.

Abrir el patio de juegos