Jev est un modèle avec un paradigme différent de ce que vous connaissez. Avec Claude et ChatGPT, vous êtes habitués à ce que l'IA écrive du texte pour vous aider dans vos décisions. Concernant Jev, vous lui posez une question fermée et il renvoie un choix, un score ou une probabilité en moins d'une demi-seconde. De plus, ça ne vous coûte presque rien…
Qu'est-ce que Jev ?
Il s'agit du premier modèle de TypeSafe AI, la société d'un ancien de chez OpenAI : Diogo Almeida.
Avec Jev, TypeSafe nous parle d'un modèle System One et de sa pensée rapide et intuitive, en opposition avec le raisonnement pas à pas des LLM classiques.
Son objectif n'est pas de prédire le token suivant, mais d'évaluer les questions posées pour renvoyer des décisions avec des probabilités. Le modèle a été entraîné avec une méthode propre à TypeSafe pour que sa confiance soit fiable.
Jev renvoie une valeur qui dépend toujours d'un schéma que vous avez défini.
Trois types de questions
-
Choice: vous définissez des options (255 maximum) et Jev fait son choix -
Score: vous définissez des niveaux, par exemple le niveau de satisfaction de vos clients -
Noul: une proposition à vérifier avec une probabilité entre 0 et 1 que ce soit vrai
Les questions sont en rapport avec un contexte envoyé avec elles, c'est ce que TypeSafe appelle : state. Le contexte peut être du texte ou un JSON.
Installer Jev
La clé API se récupère via leur console. Mais au moment où je rédige cet article, ils ne délivrent plus de clés. Je passe donc par OpenRouter (je veux le tester ce Jev ! 🤣). Comme le SDK officiel accepte une clé OpenRouter, ça ne pose aucun problème.
Pour ma part, avec Python, j'utilise uv :
uv init --no-package jev-demo && cd jev-demo uv add typesafe-sdk # ou : pip install typesafe-sdk (Python 3.10 minimum) # Avec une clé TypeSafe export TYPESAFE_API_KEY="votre-clé" # Ou avec une clé OpenRouter export TYPESAFE_API_KEY="votre-clé-openrouter" export TYPESAFE_BASE_URL="https://openrouter.ai/api"
J'utilise export pour les variables d'environnement, ce qui n'est valable que pour le terminal ouvert. Vous pouvez aussi mettre vos variables dans un .env.
Premier appel avec Python
Certains me connaissent, je viens de Python, je teste donc Jev avec ce langage :
from typesafe_sdk import Choice, Noul, Score, TypeSafeClient client = TypeSafeClient() ticket = "Hi, I've been trying to connect my Stripe account for 3 days and the integration keeps failing. I'm losing sales. Please help ASAP." response = client.system_one( state=ticket, questions={ "department": Choice( instructions="Which team should handle this", criteria={ "billing": "Payment or subscription issues", "technical": "Bugs or integration problems", "sales": "Pricing or account questions", }, ), "frustration": Score( instructions="How frustrated the customer appears", criteria=["Calm, just stating facts", "Frustrated but civil", "Very angry, strong language"], ), "is_urgent": Noul(instructions="The message conveys urgency or time-sensitivity"), }, ) print(response.answers["department"].choice) # "technical" print(response.answers["department"].confidence) # 0.73 print(response.answers["frustration"].score) # 1.0 print(response.answers["is_urgent"].noul) # 0.99
Jev confie le ticket à notre département technique, pour une confiance de 0.73.
Pour la frustration, il y a trois niveaux numérotés dans l'ordre de la liste : 0 pour « Calm », 1 pour « Frustrated but civil », 2 pour « Very angry ». Ici, Jev l'évalue à 1.0. Ce qui est juste !
Enfin, la probabilité pour que le message soit urgent est de 99 %.
Intégrer Jev dans une application
Dans une application Django, on pourrait appeler Jev depuis la vue ou une tâche Celery, puis enregistrer le résultat en base de données. Ici je parle de Django, mais vous pouvez utiliser autre chose : Jev est une API web et vous l'interrogez avec une requête HTTP.
Utiliser la confiance
TypeSafe a entraîné Jev sur la confiance, elle est donc fiable. Mais prenez un peu la température avec quelques-unes de vos questions quand même…
On pourrait alors imaginer quelque chose du genre :
answer = response.answers["department"] if answer.confidence < 0.5: marquer_a_verifier(ticket) # le modèle ne sait pas, un humain tranche elif answer.choice == "billing" and answer.confidence > 0.85: ouvrir_ticket_facturation(ticket) # seuil haut, ça touche à l'argent else: router(ticket, answer.choice)
Vous voyez alors un peu toutes les possibilités.
Mon avis
Je n'ai pour le moment pas eu l'occasion de l'intégrer à une application. Bien qu'un LLM avec une sortie structurée puisse faire la même chose, il serait plus lent et plus cher. Eh oui, Jev ne coûte que 0,042 $ par million de tokens en entrée, sortie gratuite !
Après, presque comme d'habitude, dites-vous bien que vos données partent chez un tiers 😉.