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
- 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
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