Choice, Score y Noul

Compara Choice, Score y Noul antes de redactar una solicitud.

Cada llamada a Jev es un mapa de preguntas tipadas aplicadas a un estado. Choice elige entre un conjunto definido de hasta 255 opciones. Score sitúa el estado en una escala ordenada de 2 a 10 niveles y puede quedar entre dos niveles. Noul devuelve P(sí) como noul en [0, 1] y no tiene un campo de confianza independiente. Elige el Primitive adecuado para la decisión y deja la aritmética, las fechas y la generación en manos de otras herramientas.

Cómo elegir un Primitive

Usa Choice cuando la respuesta sea una única opción con nombre: una cola, una habilidad, una etiqueta de clase o el siguiente enlace. La pregunta que muestra TypeSafe es «¿Cuál de estas opciones?». Devuelve la opción elegida, las probabilidades y la confianza. El criterio es un mapa de hasta 255 opciones. Si tienes cientos de enlaces de Wikipedia, no puedes introducirlos todos en un solo Choice; la demo de Wikiracing primero puntúa y luego elige de una lista reducida.

Usa Score cuando la respuesta sea un grado dentro de una escala breve y ordenada: tranquilo / frustrado / muy frustrado, o una gravedad de 1-5. Devuelve score, escala, probabilidades y confianza. Criteria es un array ordenado de 2 a 10 niveles. No interpoles la puntuación para obtener una magnitud exacta. Los niveles de Jev 1.13 no permiten reconstruir con precisión un número entre dos peldaños; usa el valor esperado solo para comprobar un umbral.

Usa Noul cuando la pregunta se responda con sí o no: «¿Es cierto?». Devuelve un noul de 0 a 1. Los criterios pueden describir opcionalmente qué se considera verdadero y falso. No hay ningún campo de confianza. Un Noul cercano a 0.5 indica incertidumbre, no intensidad media. No supongas que Noul equivale a un Choice de dos opciones ni reutilices entre ambos un umbral ajustado para uno. La página de jaggedness de TypeSafe muestra un Noul de reembolso de 0.22 junto a un Choice de sí de 0.01 para el mismo ticket.

Choice, Score, and Noul primitives with return fields and limits
Choice, Score y Noul con campos de respuesta y límites.

Choice

Campo de tipo
choice
question
¿Cuál de estas opciones?
returns
choice, probabilidades, confianza
criteria
mapa de hasta 255 opciones
máximo de opciones
255

Score

Campo de tipo
score
question
¿Qué nivel?
returns
score, escala, probabilidades, confianza
criteria
array ordenado de 2 a 10 niveles
niveles mínimos
2
Niveles máximos
10

Noul

Campo de tipo
noul
question
¿Es cierto?
returns
noul (de 0 a 1)
tieneConfianza
false
criteria
descripciones opcionales de verdadero/falso

Campos de retorno compartidos

identificador de solicitud
Identificador de la llamada, utilizado para vincular trazas y reintentos en tus registros.
timestamp
Hora del servidor adjunta al envoltorio de la respuesta, no un motivo para repetir la pregunta.
latency
Duración medida de esta evaluación. TypeSafe indica 70ms-500ms de extremo a extremo para Jev.
metadata
Carga útil adicional y opcional junto a las respuestas tipadas. Mantén los datos del producto en el estado, no aquí.

Preguntas en paralelo e identificadores

Las preguntas de una solicitud comparten el estado, se ejecutan de forma independiente y en paralelo, y apenas aumentan la latencia al añadir más. Combina Choice, Score y Noul en el mismo mapa. Tú defines las claves: urgencia, departamento, frustración. La respuesta correspondiente vuelve bajo la misma clave. La clave no se envía al modelo subyacente ni se utiliza para la inferencia.

Esa regla de los ID es importante al generar claves en un bucle. El ejemplo de conteo de la página de jaggedness plantea un Noul por elemento de la lista (item_0, item_1, …) y suma las respuestas en Python. Jev nunca procesa esos nombres como tokens. Mantén los nombres estables en tus registros para vincular los reintentos con el mapa original.

Los metadatos de respuesta compartidos por todos los Primitives incluyen requestId, timestamp, latency y metadata. Usa requestId para vincular trazas. Trata timestamp y latency como datos de transporte, no como motivos para repetir la pregunta. Metadata es contenido opcional adjunto a la carga útil principal. Compara primero los tres Primitives y después interpreta esos campos compartidos como el envoltorio de la respuesta tipada.

Límites en la práctica

El límite estricto es de 255 opciones de Choice; no es una recomendación. Wikiracing lo supera con una lista reducida de Score y después un Choice. Si tu taxonomía tiene 400 etiquetas, necesitas el mismo patrón de dos etapas o una jerarquía de Choices. No esperes que la API acepte 256.

Los 2 a 10 niveles de Score están pensados para escalas breves que una persona pueda leer en voz alta. Una escala de calidad de 100 puntos emplea el Primitive equivocado; divídela en Scores atómicos y súmalos en el código. Es normal obtener puntuaciones entre niveles, como 1.4. No lo es reconstruir una cantidad monetaria a partir de esas fracciones.

Noul no tiene campo de confianza, así que la condición de paso debe basarse en el valor noul y en cualquier segunda pregunta que añadas. Una combinación habitual usa Noul para «¿está dentro del alcance?» y Choice para «¿a qué categoría pertenece?» solo cuando noul es alto. El registro de invariantes de jaggedness advierte que no debes tratar esos dos valores como si fueran la misma estadística.

Una solicitud que combina los tres Primitives para un mismo ticket es la estructura habitual, no un truco avanzado. Urgencia como Noul, departamento como Choice, frustración como Score y después código. Es el mismo mapa que muestra la guía de inicio rápido en curl. La comparación de esta página te ayuda a elegir el tipo antes de escribir el JSON.

Los campos compartidos del envoltorio no son un cuarto Primitive. requestId, timestamp, latency y metadata acompañan a cada respuesta para que puedas rastrear la llamada. Los datos del producto deben ir en el estado. Si estás introduciendo una política en metadata, muévela al objeto que Jev realmente lee.

Redacta los criterios como si un compañero nuevo fuera a leerlos mañana. Los nombres de opción de un Choice y los nombres de nivel de un Score forman parte de la pregunta. Las etiquetas imprecisas hacen que las interpretaciones literales lleguen a producción.

Noul es un nombre propio. Conserva su ortografía aunque el resto de la solicitud esté redactado en inglés.

Fuentes