Choice, Score et Noul
Comparez Choice, Score et Noul avant de rédiger une requête.
Chaque appel à Jev associe des questions typées à un même état. Choice sélectionne une option dans un ensemble défini pouvant en contenir jusqu’à 255. Score place l’état sur 2 à 10 niveaux ordonnés et peut se situer entre deux niveaux. Noul renvoie P(oui) sous forme de noul dans [0, 1], sans champ de confiance distinct. Choisissez la primitive adaptée à la décision et confiez les calculs, les dates et la génération à d’autres outils.
Comment choisir une primitive
Utilisez Choice lorsque la réponse est une option nommée : une file d'attente, une compétence, une étiquette de classe ou le prochain lien. La question affichée par TypeSafe est « Laquelle de ces options ? ». Les valeurs renvoyées sont le choix, les probabilités et le niveau de confiance. Criteria est une carte pouvant contenir jusqu'à 255 options. Avec des centaines de liens Wikipedia, impossible de tous les placer dans un seul Choice : la démo Wikiracing les évalue d'abord, puis choisit dans une liste restreinte.
Utilisez Score lorsque la réponse est un degré sur une courte échelle ordonnée : calme / frustré / très frustré, ou une gravité de 1 à 5. Les valeurs renvoyées sont le score, la légende, les probabilités et la confiance. Les critères forment un tableau ordonné de 2 à 10 niveaux. N’interprétez pas le score interpolé comme une grandeur exacte. Les niveaux de Jev 1.13 permettent mal de reconstituer une valeur entre deux échelons ; utilisez l’espérance uniquement pour vérifier un seuil.
Utilisez Noul pour une question appelant oui ou non : « Est-ce vrai ? » Renvoie un noul de 0 à 1. Les critères peuvent éventuellement décrire le vrai et le faux. Il n'existe aucun champ de confiance. Un Noul proche de 0.5 indique une incertitude, pas une intensité moyenne. Ne supposez pas que Noul équivaut à un Choice à deux options et ne réutilisez pas pour l'un un seuil réglé sur l'autre. La page jaggedness de TypeSafe montre, sur le même ticket, un Noul de remboursement à 0.22 et un Choice positif à 0.01.
Choice
- Champ de type
- choice
- question
- Laquelle de ces options ?
- returns
- choix, probabilités, confiance
- criteria
- table contenant jusqu’à 255 options
- Nombre maximal d’options
- 255
Score
- Champ de type
- score
- question
- Quel niveau ?
- returns
- score, légende, probabilités, confiance
- criteria
- tableau ordonné de 2 à 10 niveaux
- Niveaux minimaux
- 2
- Niveaux max.
- 10
Noul
- Champ de type
- noul
- question
- Est-ce vrai ?
- returns
- noul (0 à 1)
- aConfiance
- false
- criteria
- descriptions facultatives du vrai et du faux
Questions parallèles et identifiants
Dans une même requête, les questions partagent l’état, s’exécutent indépendamment en parallèle et n’augmentent presque pas la latence lorsqu’on en ajoute. Mélangez Choice, Score et Noul dans une même table. Vous choisissez les clés : urgence, service, frustration. La réponse correspondante revient sous la même clé. Celle-ci n’est ni envoyée au modèle sous-jacent ni utilisée pour l’inférence.
Cette règle d'identifiant est importante lorsque vous générez des clés dans une boucle. L'exemple de comptage de la page jaggedness pose un Noul par élément de liste (item_0, item_1, …), puis additionne les réponses dans Python. Jev ne voit jamais ces noms comme des tokens. Conservez des noms stables dans vos journaux afin de rattacher les nouvelles tentatives à la table d'origine.
Les métadonnées de retour communes à chaque réponse de primitive comprennent requestId, timestamp, latency et metadata. Utilisez requestId pour relier les traces. Considérez timestamp et latency comme des données de transport, pas comme une raison de reposer la question. metadata désigne le contenu facultatif joint à la charge utile principale. Comparez d’abord les trois primitives, puis interprétez ces champs communs comme l’enveloppe entourant la réponse typée.
Limites en pratique
La limite de 255 options de Choice est stricte, pas indicative. Wikiracing la contourne avec une liste restreinte produite par Score, suivie d'un Choice. Si votre taxonomie compte 400 étiquettes, il vous faut la même structure en deux étapes ou une hiérarchie de Choices. N'espérez pas que l'API en accepte 256.
Les 2 à 10 niveaux de Score sont destinés à de courtes légendes qu’un humain pourrait lire à voix haute. Une échelle de qualité sur 100 points n’est pas la bonne primitive : décomposez-la en Scores atomiques et additionnez-les dans le code. Les scores intermédiaires comme 1.4 sont normaux, contrairement à la reconstitution d’un montant en dollars à partir de ces fractions.
Noul n'a aucun champ de confiance : votre seuil doit donc reposer sur la valeur noul et sur toute question complémentaire ajoutée. Une paire courante associe Noul pour « est-ce dans le périmètre ? » à Choice pour « dans quelle catégorie ? », uniquement lorsque le noul est élevé. La fiche des invariants de jaggedness avertit qu'il ne faut pas traiter ces deux nombres comme une même statistique.
Une requête qui applique les trois primitives à un même ticket est une structure normale, pas une technique avancée. L’urgence en Noul, le service en Choice, la frustration en Score, puis le code. C’est la même table que celle présentée en curl dans le guide de démarrage rapide. La comparaison de cette page sert à choisir le type avant de rédiger le JSON.
Les champs communs de l’enveloppe ne constituent pas une quatrième primitive. requestId, timestamp, latency et metadata accompagnent chaque réponse afin de permettre le traçage de l’appel. Les données du produit doivent figurer dans l’état. Si vous placez une règle dans metadata, déplacez-la dans l’objet que Jev lit réellement.
Rédigez les critères comme si un nouveau collègue devait les lire demain. Les noms d’options d’un Choice et les noms de niveaux d’un Score font partie de la question. Des libellés vagues entraînent des interprétations littérales en production.
Noul est un nom propre. Conservez cette orthographe même si le reste de la requête est rédigé en prose anglaise.
Sources