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
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 » :
Démarrage rapide
1. Préparer les informations de connexion : créez une clé API dans la console OfoxAI , puis utilisez les informations suivantes :
https://api.ofox.ai/v1typesafe/jev-latestPeut aussi s’écrire jev-latest/v1/decisionsPOST, et non /v1/chat/completions2. Installer le SDK : pour effectuer l’appel avec le SDK Python officiel d’OpenAI, installez une version qui inclut client.decisions :
pip install -U openaiAttributeError: '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 :
Python
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.98Exemple 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 :
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
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.