Skip to Content
ModèlesJev (TypeSafe)Présentation

Jev

TypeSafe Jev est un modèle de décision : il ne génère pas de texte et répond uniquement à des questions définies à l’avance. La requête contient le contenu à évaluer et un ensemble de questions ; le modèle renvoie pour chaque question une réponse structurée accompagnée de sa probabilité, sur la base de laquelle le programme peut exécuter directement sa logique de branchement.

Cas d’usage

L'essentielUtilisez Jev lorsque le programme doit exécuter une logique différente selon le résultat de la décision ; utilisez un modèle de chat lorsqu’il s’agit de générer un texte destiné à être lu.

Adapté à :

  • Classification et routage : équipe chargée de traiter un ticket, catégorie d’intention de l’utilisateur.
  • Décisions oui/non : présence de données personnelles, demande de remboursement, tentative d’injection de prompt.
  • Notation et classement : degré d’urgence, pertinence, intensité du sentiment, ainsi que filtrage de résultats de recherche.
  • Contrôle qualité des sorties de LLM : pertinence de la réponse, non-conformité aux règles.

Non adapté à :

  • La génération de texte, de résumés, de traductions ou de code.
  • Les décisions portant sur des images (Jev n’accepte que du texte et du JSON en entrée ; pour les images, utilisez GPT-6 Luna).
  • Les questions ouvertes dont les réponses ne peuvent pas être définies à l’avance sous forme d’options ou de niveaux.

Comparaison avec l’approche « modèle de chat + sortie JSON » :

JevModèle de chat + sortie JSON
Contenu renvoyéLimité aux options ou niveaux définis à l’avancePeut renvoyer des valeurs hors des options ; validation supplémentaire nécessaire
IncertitudeChaque réponse inclut une probabilité ; choice et score incluent en outre une confianceGénéralement aucune probabilité exploitable
Plusieurs questionsTraitées dans une seule requête, avec une entrée communeÀ regrouper dans un même prompt ou à répartir sur plusieurs appels
FacturationTokens d’entrée uniquement ; la sortie n’est pas facturéeEntrée et sortie facturées au tarif du modèle de chat

Démarrage rapide

1. Préparer les informations de connexion : créez une clé API dans la console OfoxAI , puis utilisez les informations suivantes :

Informations de connexion
Base URLhttps://api.ofox.ai/v1
ID de modèletypesafe/jev-latestPeut aussi s’écrire jev-latest
Chemin de l’endpoint/v1/decisionsPOST, et non /v1/chat/completions

2. Installer le SDK : pour effectuer l’appel avec le SDK Python officiel d’OpenAI, installez une version qui inclut client.decisions :

Terminal
pip install -U openai
AttentionSi l’erreur AttributeError: 'OpenAI' object has no attribute 'decisions' apparaît à l’exécution, la version du SDK est trop ancienne ; exécutez la commande ci-dessus pour la mettre à jour (version openai 3.31.0 vérifiée). Sans SDK, l’appel peut également être effectué avec la commande cURL ci-dessous.

3. Effectuer l’appel :

quickstart.py
import os from openai import OpenAI client = OpenAI(base_url="https://api.ofox.ai/v1", api_key=os.environ["OFOX_API_KEY"]) r = client.decisions.create( model="typesafe/jev-latest", input="Customer message: I was charged twice, nobody has answered my two emails, and I need a refund today.", questions=[{"type": "predicate", "name": "is_frustrated", "instructions": "Is the customer frustrated?"}], ) print(r.answers[0].probability) # 0.98

Exemple de réponse :

{ "model": "typesafe/jev-latest", "answers": [{ "type": "predicate", "name": "is_frustrated", "probability": 0.98 }], "usage": { "prompt_tokens": 302, "completion_tokens": 23, "total_tokens": 325 } }

probability indique la probabilité que la réponse soit « oui » ; une valeur de 0.98 signifie que le modèle estime très probable que le client soit mécontent. Pour l’appliquer à votre propre cas d’usage, remplacez input par le contenu réel et questions par les questions réelles.

Types de questions

Choisissez le type de question en fonction de la forme du résultat attendu :

Résultat attenduType de questionChamps à fournirChamps renvoyés
Oui ou nonpredicateLa question ; facultativement criteria pour préciser le sens de « oui » et de « non »probability : probabilité du « oui »
Une option parmi plusieurschoicechoices : de 2 à 255 optionschoice, probabilité de chaque option, confidence
Un degréscorelevels : de 2 à 10 niveaux, du plus bas au plus élevéscore, probabilité de chaque niveau, confidence

Exemples : « S’agit-il d’une demande de remboursement ? » relève de predicate ; « Quelle équipe doit traiter ce ticket ? » relève de choice ; « Quel est le degré d’urgence ? » relève de score. Les trois questions peuvent figurer dans la même requête, qui renvoie alors toutes les réponses en une fois.

Une fois le type de question déterminé, vérifiez les questions et les options en vous reportant à Conception des questions.

Erreurs courantes

SymptômeCauseRésolution
AttributeError: 'OpenAI' object has no attribute 'decisions'Version du SDK OpenAI trop ancienneExécuter pip install -U openai, puis réessayer
400 endpoint_not_supported, avec le message Please use /v1/decisions insteadJev a été appelé comme un modèle de chat via /v1/chat/completionsAppeler /v1/decisions
400 Invalid request payloadLe format natif TypeSafe (state, questions sous forme d’objet) a été utilisé sur /v1/decisionsUtiliser input et questions sous forme de tableau, ou appeler /typesafe/v1/systemone
400 questions are required for decisionquestions est videFournir au moins une question
400 question "a" has kind choice and requires criteria optionsUne question choice ne contient pas de choicesAjouter les options
400 Too many score levels. Must have at most 10 levels.Une question score comporte plus de 10 niveauxFusionner des niveaux
400 max_tokens_exceededL’entrée dépasse 64K tokensDécouper les documents longs ou ne transmettre que les parties pertinentes
400, avec input_image et Typesafe cannot read dans le message d’erreurUne image a été transmise à JevRetirer l’image ou utiliser un modèle qui accepte les images
404 model_not_foundID de modèle incorrectUtiliser typesafe/jev-latest
La requête aboutit, mais la réponse est manifestement erronée avec une confiance élevéeLes options de choice ne couvrent pas la situation réelleAjouter une option « aucune des précédentes » et compléter les descriptions des options ; voir Conception des questions
Les réponses ne contiennent pas de name et ne peuvent pas être associées aux questionsLes questions ne définissent pas de nameDéfinir un name pour chaque question

La liste complète des erreurs figure dans Decisions API · Erreurs courantes.

Documentation officielle

Questions fréquentes

Quelle est la différence entre Jev et un LLM produisant du JSON ?

Jev répond uniquement dans le cadre des options et niveaux fournis et ne renvoie aucune valeur hors de ce cadre ; chaque réponse inclut une probabilité, et choice et score incluent en outre une confiance, directement utilisable pour définir des seuils. Le JSON produit par un LLM nécessite une validation supplémentaire et ne fournit généralement pas de probabilité exploitable.

Faut-il utiliser /v1/decisions ou /typesafe/v1/systemone ?

Pour un nouveau projet, il est recommandé d'utiliser /v1/decisions, qui peut être appelé directement avec le SDK OpenAI. Les projets qui utilisent déjà le SDK TypeSafe ou son code d'exemple officiel peuvent utiliser /typesafe/v1/systemone en modifiant uniquement l'URL de base.

Comment Jev est-il facturé ?

Seuls les tokens d'entrée sont facturés ; la sortie ne l'est pas. Les tarifs figurent sur la page du modèle. Les questions d'une même requête partagent la même entrée ; regrouper les questions dans une seule requête permet donc de réduire les coûts.

Une confiance élevée signifie-t-elle que la réponse est nécessairement correcte ?

Pas nécessairement. Lorsque les options ne couvrent pas la situation réelle, le modèle choisit tout de même l'une des options existantes, éventuellement avec une confiance élevée. Il convient donc de prévoir pour les questions choice une option de repli telle que « aucune des précédentes » et de valider les résultats sur des échantillons annotés manuellement.

Que signifie un score de 1.43 ?

Le score est une valeur pondérée par les probabilités de chaque niveau, les niveaux étant numérotés à partir de 0. La valeur 1.43 se situe entre le niveau 1 et le niveau 2, plus près du niveau 1 ; la probabilité de chaque niveau figure dans probabilities.

Les contenus dans une autre langue que l'anglais sont-ils pris en charge ?

Oui. Lors des tests, un contenu en chinois a été traité correctement avec des questions rédigées en chinois comme en anglais.

Jev prend-il en charge les images ?

Non. Jev n'accepte que du texte et du JSON. Pour les décisions portant sur des images, utilisez GPT-6 Luna (openai/gpt-6-luna), qui accepte les images en entrée, avec le même format de requête.

Dernière mise à jour le