Les 7 meilleures alternatives open source à TypeSafe Jev
Découvrez une nouvelle vague de projets open source offrant des alternatives pratiques à Jev pour une prise de décision en IA rapide, locale et économique.
De nombreuses applications d’IA mobilisent des modèles de langage de grande taille pour des tâches qui ne nécessitent pas réellement de génération de texte.
Un agent peut simplement devoir décider quel outil appeler, si un document est pertinent, à quel point une demande est urgente, ou si une action doit être escaladée.
Jev de TypeSafe AI aborde ces tâches différemment. Au lieu de générer une réponse token par token, il prend l’état de l’application et des questions structurées et renvoie des décisions typées telles que des choix, des scores, des jugements oui/non et des probabilités. Voyez-le à l’œuvre dans notre tutoriel Jev API
TypeSafe AI décrit cela comme une approche System One Model : utiliser l’IA comme couche de décision rapide plutôt que comme générateur de texte généraliste.
Le défi, c’est que nous savons encore relativement peu de choses sur le fonctionnement interne de Jev.
TypeSafe AI a partagé quelques détails sur son approche de prise de décision en parallèle et sa méthode d’entraînement, mais l’architecture complète, les poids, les données d’entraînement et la recette d’entraînement ne sont pas publics.
Cela rend difficile l’inspection, la reproduction ou l’adaptation directe de Jev.
Des projets open source explorent la même idée avec des architectures que nous pouvons réellement examiner et exécuter en local.
Certains utilisent de petits modèles bidirectionnels, d’autres adaptent Qwen avec des têtes de décision spécialisées, tandis que d’autres extraient directement des probabilités depuis des modèles de langage existants.
Parce que vous contrôlez toute la pile, vous pouvez aussi optimiser la taille du modèle, la quantification, le batching, la mise en cache, le matériel et le serving pour bâtir une couche de décision plus rapide et moins coûteuse adaptée à votre charge.
Dans cet article, je compare sept alternatives open source à Jev, dont Laya, Nimble, Kev, SemIf, Rizzo Flow, Von et NanoJev, en expliquant le fonctionnement de chacune, leur proximité avec l’approche Jev, leurs points forts et comment les exécuter en local.
Avertissement : les projets présentés ici sont très récents et évoluent rapidement. Les extraits de code s’appuient sur leur documentation et leurs dépôts officiels, mais tous n’ont pas été testés de bout en bout de manière indépendante.
1. Laya : une alternative Jev dédiée et multilingue
Laya est un modèle de décision non auto-régressif conçu pour cet usage, basé sur ModernBERT-large, avec un point de contrôle mmBERT séparé pour les charges multilingues.
Au lieu de générer du texte, il traite simultanément l’état, la question et les options disponibles, puis note directement les réponses possibles en un seul passage avant. Il prend en charge des décisions à la Jev de type choice, score et noul, avec des checkpoints dédiés pour l’anglais, le multilingue et les décisions typées.
Cela fait de Laya l’une des alternatives architecturales les plus proches de Jev, car toutes deux sont conçues spécifiquement pour des décisions probabilistes plutôt que pour la génération de texte.
Laya se distingue par ses modèles relativement compacts (322 M à 421 M), son support multilingue dans plus de 100 langues, et la capacité d’évaluer efficacement plusieurs questions sans exécuter un modèle génératif de plusieurs milliards de paramètres.
Fonctionnement de Laya
Laya prend un état (email, ticket de support, document ou objet JSON) associé à des questions typées comme choice, score ou noul.
Son routeur sélectionne le checkpoint le plus adapté à la requête, comme ModernBERT-large pour l’anglais ou mmBERT-base pour l’entrée multilingue.
Le modèle sélectionné traite l’état et les questions en un seul passage, puis une tête de décision note les options disponibles et les convertit en probabilités.
Cela crée un flux direct de l’entrée, via le routage et l’encodage, jusqu’à la décision typée finale.
Cette commande installe la bibliothèque Laya et ses dépendances, mais n’embarque pas les poids du modèle dans le package.
Les modèles sont hébergés sur Hugging Face.
Lorsque vous créez le routeur avec preload=True, Laya télécharge et charge immédiatement les checkpoints disponibles afin qu’ils soient prêts avant la première requête.
Les poids téléchargés sont mis en cache localement et n’ont donc pas à être retéléchargés à chaque exécution de votre application.
from laya import Router
router = Router(preload=True)
state ={"subject":"Duplicate charge","body":"I was charged twice. Please refund this today."}
questions ={"department":{"type":"choice","instructions":"Which department should handle this?","criteria":{"billing":"Payments and refunds","technical":"Errors and outages","sales":"Pricing and purchases"}}}
result = router.predict(state, questions)print(result["answers"]["department"]["choice"])Propulsé par
Ici, Router(preload=True) est l’élément important.
Lors de la première exécution, Laya récupère les fichiers de modèle requis depuis son dépôt Hugging Face et les charge en mémoire. Les exécutions suivantes réutilisent les copies mises en cache localement.
Laya procède en chargement paresseux : il attend qu’un checkpoint soit nécessaire et le télécharge/initialise lors du premier usage.
2. Nimble : une alternative à Jev basée sur Qwen
Bespoke Nimble utilise Qwen3.5-9B comme colonne vertébrale et l’affine avec une LoRA de rang 16 spécifiquement pour la prise de décision typée.
Vous fournissez un texte accompagné d’un schéma plat contenant des questions booléennes ou énumérées, et Nimble renvoie la réponse sélectionnée ainsi que les probabilités pour chaque option autorisée.
Plutôt que de décoder une réponse token par token, l’entraînement et l’inférence opèrent directement sur les logits des candidats.
Comme Jev, Nimble repose sur l’idée « état en entrée, décisions probabilistes typées en sortie », mais son implémentation montre comment ajouter ce comportement à un LLM ouvert existant sans exiger une architecture de décision propriétaire.
Son principal atout est la transparence de bout en bout : Bespoke Labs a publié le modèle, la recette d’entraînement, le dispositif d’évaluation et le pipeline de curation des données, ce qui rend Nimble particulièrement utile pour les développeurs qui veulent entraîner ou étudier leurs propres modèles à la Jev.
Fonctionnement de Nimble
Nimble part d’un contexte et d’un schéma de décision qui définit les sorties autorisées, par exemple un booléen ou une valeur issue d’une énumération.
Il utilise Qwen3.5-9B avec LoRA pour traiter le contexte et le schéma, puis lit les logits pour les tokens candidats autorisés au lieu de générer une réponse complète.
Ces logits sont passés dans un softmax pour produire des probabilités, renvoyées sous forme de sortie typée structurée.
Bien démarrer avec Nimble
Nimble requiert Python 3.12 et utilise le checkpoint Bespoke-Nimble-9B. Commencez par cloner le dépôt et installer les dépendances :
git clone https://github.com/bespokelabsai/nimble.git nimble
cd nimble
python3.12 -m venv .cache/venvs/nimble
source .cache/venvs/nimble/bin/activate
python -m pip install torch==2.8.0 -r requirements/training.txtPropulsé par
Ensuite, téléchargez et préparez le modèle. L’étape officielle télécharge bespokelabs/Bespoke-Nimble-9B depuis Hugging Face et, si nécessaire, fusionne son adaptateur LoRA avec le modèle Qwen3.5 de base figé. Elle crée ensuite .cache/nimble-model.json.
import json
from pathlib import Path
from huggingface_hub import snapshot_download
repo ="bespokelabs/Bespoke-Nimble-9B"
snapshot = Path(
snapshot_download(
repo,
cache_dir=".cache/huggingface/hub"))
config ={"model_path":str(snapshot.resolve()),"model_id": repo,"revision": snapshot.name,"max_input_tokens":2048,}
Path(".cache/nimble-model.json").write_text(
json.dumps(config, indent=2))Propulsé par
Si la release téléchargée est un adaptateur LoRA, utilisez le bloc de préparation complet de Nimble (quickstart officiel) afin de fusionner l’adaptateur avec le modèle de base figé avant l’inférence.
Sur un GPU NVIDIA, chargez le modèle préparé :
import json
from pathlib import Path
from nimble.scoring.cuda_scorer import CudaCandidateScorer
config = json.loads(
Path(".cache/nimble-model.json").read_text())
scorer = CudaCandidateScorer(**config)
Then make a typed decision:
schema ={"priority":{"type":"enum","choices":["HIGH","LOW"],"description":"Urgency based on current business impact."},"requires_review":{"type":"boolean","description":"Whether a human should review this incident."}}
result = scorer.score("The payment service is down for all customers.",
schema
)print(result["output"])print(result["fields"]["priority"]["scores"])Propulsé par
Nimble renvoie les valeurs sélectionnées avec la probabilité associée à chaque candidat, plutôt que de générer une réponse textuelle.
3. Kev : la réplique architecturale la plus proche de Jev
Kev est une famille de modèles de décision inspirés de Jev et construits sur Qwen3.5, avec des variantes 0,8 B, 4 B et 9 B.
Il ajoute un adaptateur LoRA de rang 16 et une petite tête « pointer » qui compare chaque représentation d’option avec la représentation de décision de la question.
Plusieurs questions peuvent partager le même état, tandis que Kev isole les questions et renvoie leurs distributions de probabilité sans générer de texte.
Kev est particulièrement proche de Jev car son architecture se fonde explicitement sur une reconstruction publique de Jev, et son serveur implémente le contrat d’API /v1/systemone de TypeSafe.
Il prend en charge les mêmes styles de questions noul, choice et score, de sorte que le code des SDK TypeSafe existants peut être redirigé vers un serveur Kev local.
Son principal avantage tient à la combinaison de comportements proches de Jev, de poids ouverts, de multiples tailles de modèles et d’un pipeline d’entraînement ouvert.
Fonctionnement de Kev
Kev utilise un modèle Qwen de base avec un adaptateur LoRA et une petite tête « pointer ».
L’état partagé est traité une fois et réutilisé pour plusieurs questions, évitant au modèle de retraiter le même contexte.
Pour chaque question, Kev crée des représentations cachées pour les options et le token de décision, puis la tête « pointer » les compare et produit des scores d’option.
Softmax convertit ces scores en probabilités pour la sortie finale choice, noul ou score.
Bien démarrer avec Kev
Kev s’exécute comme un serveur System One local.
Commencez par cloner le projet et installer ses dépendances de serving :
git clone https://github.com/jaredpalmer/kev.git
cd kev
uv sync --extra servePropulsé par
Cela installe Kev lui-même, mais pas nécessairement tous les poids du modèle.
Démarrez Kev-4B avec :
KEV_DTYPE=bf16 \
uv run --extra serve python -m kev.serve \--run jaredpalmer/kev-4b \--port8009Propulsé par
Lors de la première exécution, Kev télécharge automatiquement à la fois l’adaptateur/checkpoint Kev et son modèle Qwen de base depuis Hugging Face.
Les démarrages ultérieurs réutilisent les fichiers de modèle en cache plutôt que de les retélécharger.
Une fois le serveur lancé, vous pouvez utiliser le SDK TypeSafe pour l’interroger :
from typesafe_sdk import Choice, TypeSafeClient
client = TypeSafeClient(
api_key="local",
base_url="http://127.0.0.1:8009",
model="kev-latest",)
response = client.system_one(
state="I was charged twice.",
questions={"team": Choice(
instructions="Which team owns this?",
criteria={"billing":None,"technical":None,},)},)print(response.choices["team"].choice)Propulsé par
Avec Kev, la commande serveur fait aussi office d’étape de chargement du modèle : le premier lancement télécharge automatiquement les poids requis.
4. SemIf : une alternative Jev à logits directs, sans fine-tuning
SemIf adopte une approche plus simple : il n’entraîne pas de nouveau modèle de décision.
À la place, il utilise des modèles ouverts existants comme Qwen3.5-4B et lit directement les logits attribués aux réponses autorisées.
L’état, les critères et les options typées sont passés au modèle, et SemIf convertit les logits natifs des options en probabilités, sans échantillonnage ni génération de réponse.
Cela reproduit l’une des propriétés pratiques majeures de Jev—prendre des décisions sans sortie auto-régressive—tout en évitant le besoin d’un checkpoint spécialisé.
SemIf se démarque par sa flexibilité : vous pouvez utiliser différents modèles ouverts en sous-jacent, réutiliser un long état sur de nombreuses questions, et expérimenter le scoring direct sur CUDA, Apple Silicon, ou des modèles quantifiés dans le navigateur.
Il est particulièrement utile si vous souhaitez tester l’idée System One sans entraîner d’abord un modèle dédié.
Fonctionnement de SemIf
SemIf prend un état non structuré, des critères à l’exécution et un ensemble d’options autorisées, puis les envoie à un modèle ouvert existant.
Au lieu de demander au modèle de générer une réponse, il lit directement les logits attribués à ces options prédéfinies.
Ces logits sont convertis en une distribution de probabilité, permettant à l’application de produire une décision typée sans générer de texte ni parser une réponse ensuite.
Bien démarrer avec SemIf
SemIf n’a pas de checkpoint de modèle de base dédié. Il exécute plutôt le scoring de décision sur un modèle ouvert existant.
Clonez et installez :
git clone https://github.com/TheoLeeCJ/SemIf.git
cd SemIf
python -m venv .venv
source .venv/bin/activate
pip install -e '.[test]'Propulsé par
Cela installe SemIf, mais ne télécharge pas encore Qwen.
Lancez le scorer :
CUDA_VISIBLE_DEVICES=0 semif-score \--mode direct \--model Qwen/Qwen3.5-4B \--revision 851bf6e806efd8d0a36b00ddf55e13ccb7b8cd0a \--input examples/decisions.jsonl \--output results.jsonlPropulsé par
Lors de la première exécution, le modèle Qwen sélectionné est téléchargé depuis Hugging Face et stocké dans le cache Hugging Face. La documentation de SemIf recommande même de définir HF_HOME vers un disque volumineux car les fichiers de modèle peuvent prendre beaucoup de place.
Par exemple :
exportHF_HOME=/path/to/large-drive/huggingfacePropulsé par
Une fois le modèle mis en cache, les exécutions suivantes réutilisent la copie locale.
Ainsi, SemIf lui-même reste relativement léger. La majeure partie de la taille à télécharger dépend du modèle ouvert sous-jacent que vous choisissez d’exécuter.
5. Rizzo Flow : alternative Jev « local-first » pour une flexibilité matérielle
Rizzo Flow est un système d’inférence de type Jev, pensé « local-first », construit autour des modèles Spark-X2.5 ouverts et d’un serving basé sur llama.cpp.
Au lieu de générer une réponse JSON, il convertit chaque décision en un ensemble contraint de tokens de réponse possibles, lit les logits associés à ces tokens, puis les transforme en probabilités.
L’état peut être traité une fois et réutilisé pour plusieurs questions, ce qui réduit les calculs répétés.
Comme Jev, Rizzo Flow accepte un état non structuré et renvoie des décisions typées telles que des jugements oui/non, des choix, des scores et des sorties numériques.
Il reflète aussi l’interface HTTP de TypeSafe, ce qui facilite le remplacement d’un appel hébergé par un point de terminaison local.
Rizzo Flow se distingue particulièrement par son déploiement local et sa flexibilité matérielle, combinant modèles ouverts, quantification et une API familière, plutôt que de tenter de reproduire l’architecture d’entraînement propriétaire de Jev.
Fonctionnement de Rizzo Flow
Rizzo Flow traite l’état une fois et stocke le résultat dans le KV cache du modèle.
Plusieurs questions peuvent ensuite réutiliser cet état en cache au lieu de retraiter le contexte complet. Chaque question est convertie en problème à choix multiples, avec des réponses candidates représentées par des lettres comme A, B ou C.
Rizzo Flow ne lit que les logits de ces lettres de réponse, applique softmax, puis convertit les probabilités résultantes en sorties typées comme un booléen, un choix, un score ou un nombre.
Bien démarrer avec Rizzo Flow
Rizzo Flow requiert Python 3.11+, Git et uv.
Lors de l’installation, choisissez le backend de calcul adapté à votre machine. Par exemple, sous Linux avec un GPU NVIDIA :
git clone https://github.com/Rizzo-AI-Academy/rizzo-flow
cd rizzo-flow
uv sync --locked --extra cuda
source .venv/bin/activatePropulsé par
Pour Apple Silicon, utilisez --extra mlx ; pour les systèmes CPU-only, --extra cpu.
Téléchargez ensuite le modèle Spark-X2.5 par défaut et son runtime local :
Le modèle tourne désormais en local sur http://127.0.0.1:8017.
Vous pouvez tester l’endpoint compatible Jev avec une décision réelle :
curl http://127.0.0.1:8017/v1/systemone \-H'Content-Type: application/json'\-d'{
"state": "My payouts have been failing for three days.",
"model": "rizzo-latest",
"questions": {
"is_urgent": {
"type": "noul",
"instructions": "Does this convey urgency?"
},
"department": {
"type": "choice",
"instructions": "Which team should handle this?",
"criteria": {
"billing": "Payments and refunds",
"technical": "Bugs and outages",
"sales": null
}
}
}
}'Propulsé par
Rizzo Flow renvoie directement la réponse et la distribution de probabilités, sans générer de sortie token par token.
6. Von : une alternative System One compacte à Jev
Von est un modèle System One dédié, basé sur une architecture ModernBERT bidirectionnelle de 395 M de paramètres.
Au lieu de décoder du texte, il évalue ensemble l’état et les critères candidats à l’aide de représentations OptionMarker, puis produit directement des logits pour les décisions Choice, Noul et Score.
Il applique aussi une calibration post-entraînement afin que les distributions de probabilité résultantes puissent être utilisées directement par la logique applicative.
Von est très proche de Jev au niveau de l’interface : non auto-régressif, mêmes trois primitives de décision, évalue plusieurs questions en un passage avant, et implémente le protocole /v1/systemone.
Son principal atout est sa faible empreinte et sa conception pour l’inférence locale : le modèle compte des centaines de millions (et non des milliards) de paramètres et prend en charge CUDA, ROCm, Apple Silicon et l’exécution CPU.
Fonctionnement de Von
von utilise un modèle compact, bidirectionnel et basé sur ModernBERT pour traiter ensemble l’état, la question et les critères candidats.
Son mécanisme Option-Marker crée des représentations pour les réponses possibles, qui sont converties en logits candidats.
Une mise à l’échelle par la température est ensuite appliquée pour améliorer la distribution de probabilités avant que von ne renvoie la sortie finale choice, noul ou score.
La même architecture peut aussi évaluer plusieurs questions en un seul passage.
Bien démarrer avec Von
Von propose l’une des interfaces les plus simples.
Cela installe le logiciel Von. Le modèle proprement dit est publié séparément sous wfzyx/von-1.0 sur Hugging Face.
Lors du premier chargement, son checkpoint ModernBERT est téléchargé et mis en cache localement via le système de chargement de modèles Hugging Face/Transformers.
Une fois en cache, les inférences ultérieures utilisent la copie locale sans retélécharger les poids.
Vous pouvez ensuite prendre une décision avec :
import von
result = von.decide(
state="Database replication lag exceeded 45 seconds.",
choices={"infrastructure":"Database or network failures","billing":"Payments and invoices","feature":"Requests for new functionality",},
instructions="Classify the root cause.",)print(result.choice)print(result.confidence)
For a binary decision:
p_blocking = von.judge(
state="Requests are timing out.",
instructions="Is this actively blocking customers?")print(p_blocking)Propulsé par
Ainsi, le premier appel peut être plus long car le modèle doit être téléchargé et initialisé. Après cela, l’inférence se fait en local.
7. NanoJev : une réplique Jev légère et entraînable
NanoJev est une réplique Jev de 0,6 B construite sur Qwen3-0.6B avec des têtes de décision dédiées pour des sorties structurées.
Chaque requête contient un état, une question et un ensemble de candidats, qui passent par l’épine dorsale avant que des têtes partagées ne produisent des distributions de probabilité complètes.
Choice utilise une attention par ensemble et une tête scalaire, les décisions booléennes utilisent un sigmoid, et Score évalue des niveaux ordonnés et produit à la fois une distribution et un score attendu.
NanoJev suit de très près la conception de Jev : il gère des décisions en parallèle, des ensembles de candidats dynamiques, des distributions de probabilité complètes, et aucune décodage de sortie.
Son point fort réside dans sa colonne vertébrale très compacte et un pipeline d’entraînement explicite de bout en bout.
Il peut regrouper plusieurs états, questions et chemins de candidats en un seul passage avant de l’épine dorsale, ce qui en fait une option intéressante pour les développeurs souhaitant expérimenter une architecture Jev compacte et entraînable plutôt que d’adapter un LLM généraliste plus grand.
Fonctionnement de NanoJev
NanoJev prend un état, une question et les réponses candidates parmi lesquelles le modèle est autorisé à choisir.
Chaque candidat est combiné à l’entrée pertinente et passé dans l’épine dorsale partagée Qwen3-0.6B.
NanoJev utilise ensuite des têtes de décision dédiées pour noter directement les candidats : Choice utilise une attention par ensemble et softmax, Boolean utilise un sigmoid, et Score produit une distribution de probabilité sur des niveaux ordonnés.
Parce qu’il lit ces probabilités directement depuis le passage avant, il peut renvoyer des distributions typées complètes sans générer de tokens de sortie.
Bien démarrer avec NanoJev
NanoJev sépare le téléchargement du modèle de l’installation du dépôt.
Commencez par installer le projet :
git clone https://github.com/TianyuCodings/NanoJev.git
cd NanoJev
python -m pip install \
-r requirements-toy.txt \
huggingface_hubPropulsé par
Puis téléchargez le checkpoint public figé :
from huggingface_hub import snapshot_download
snapshot_download(
repo_id="C-Tianyu/NanoJev",
revision="unified-games-v1",
local_dir="checkpoints/NanoJev-unified",
allow_patterns=["best.safetensors","config.json","tokenizer/*","backbone_config/*",],)Propulsé par
Démarrez le serveur d’inférence local :
CUDA_VISIBLE_DEVICES=0 python scripts/serve_decisions.py \
--checkpoint-dir checkpoints/NanoJev-unified \
--web-root web \--host127.0.0.1 \--port8765\--precision bf16Propulsé par
Créez une requête :
cat> data/request.json <<'JSON'
{
"states": [{
"id": "living_room",
"state": "The living room is 29 degrees. The target is 24 degrees. The window is closed and someone is home.",
"questions": {
"action": {
"type": "choice",
"instructions": "Choose the action that most directly lowers the room temperature.",
"criteria": {
"cool": "Turn on air conditioning",
"light": "Turn on the lights",
"wait": "Keep the current settings"
}
},
"occupied": {
"type": "boolean",
"instructions": "Someone is home."
}
}
}]
}
JSONPropulsé par
Envoyez-la ensuite à NanoJev :
curl http://127.0.0.1:8765/api/evaluate \-H'Content-Type: application/json'\
--data-binary @data/request.jsonPropulsé par
Le serveur conserve le checkpoint chargé et renvoie la distribution de probabilité pour chaque question. NanoJev peut également traiter en lot plusieurs états et questions dans une même requête.
Comparer les 7 meilleures alternatives à Jev
La principale différence tient à la façon dont chaque projet produit la décision.
Laya et Von utilisent de petits encodeurs bidirectionnels conçus spécifiquement pour le scoring d’options.
Kev, Nimble et NanoJev adaptent des modèles Qwen avec un entraînement spécialisé ou des têtes de décision.
SemIf et Rizzo Flow adoptent une approche plus légère en extrayant directement les probabilités depuis des modèles génératifs existants.
Projet
Architecture
Taille
Décisions à la Jev
Idéal pour
Laya
ModernBERT/mmBERT + tête de décision
322 M–421 M
Oui
Décisions multilingues légères
Nimble
Qwen3.5 + scoring des candidats via LoRA
9 B
Similaire
Entraînement et recherche
Kev
Qwen + LoRA + tête pointer
0,8 B–9 B
Oui
Déploiement local proche de Jev
SemIf
Logits directs depuis des LLM ouverts
Dépend du modèle
Similaire
Expériences à logits directs
Rizzo Flow
Spark + scoring direct des options
1,7 B–4 B
Oui
Serving local simplifié
Von
ModernBERT + OptionMarker
~395 M
Oui
Inférence de décision compacte
NanoJev
Qwen3 + têtes de décision partagées
0,6 B
Oui
Petite réplique Jev entraînable
En pratique, les encodeurs dédiés privilégient la vitesse et l’efficacité, les modèles Qwen adaptés conservent davantage de capacités linguistiques générales, et les méthodes à logits directs sont plus simples à expérimenter car elles nécessitent moins d’entraînement spécialisé.
Quelle alternative à Jev choisir ?
Pour des modèles de décision petits et spécialisés, Laya, Von et NanoJev figurent parmi les options les plus intéressantes, de l’ordre de 322 M à 600 M de paramètres.
Si vous avez besoin de prise de décision multilingue, Laya se démarque grâce à un checkpoint dédié basé sur mmBERT couvrant plus de 100 langues.
Pour les applications construites autour de l’API TypeSafe System One, Kev et Von offrent des parcours d’intégration particulièrement proches, tandis que Rizzo Flow reflète la même interface HTTP pour un serving local.
Pour l’entraînement et l’expérimentation, Nimble publie sa recette de curation des données et de fine-tuning LoRA, tandis que NanoJev fournit un pipeline complet couvrant la génération des données, l’entraînement, l’évaluation et le serving.
Si vous voulez expérimenter sans entraîner un modèle de décision spécialisé, SemIf est une base utile : il lit directement les probabilités d’options depuis des modèles ouverts existants comme Qwen au lieu de générer une réponse.
En guise de conclusion
L’architecture exacte de Jev est peut-être nouvelle, mais l’idée sous-jacente ne l’est pas.
Les classifieurs NLI zero-shot exploitent depuis des années les logits de modèle pour noter des étiquettes candidates arbitraires, bien avant Jev.
Ce que TypeSafe AI apporte, c’est une architecture dédiée, des sorties parallèles, des probabilités calibrées et une API claire pour transformer cette idée en une couche de décision programmable.
L’écosystème open source montre que vous n’avez pas besoin d’un service fermé pour bâtir quelque chose de similaire.
Des projets comme Kev, Von et Rizzo Flow peuvent tourner en local et exposer des interfaces à la Jev, tandis que d’autres permettent de télécharger les poids, de les quantifier ou d’utiliser des runtimes comme llama.cpp.
La vraie leçon n’est pas que Jev a inventé la décision par l’IA, mais qu’il a remis en lumière une idée essentielle : si votre application a seulement besoin d’une décision, vous n’avez peut-être pas besoin de génération de texte du tout.
FAQs
Quelle est la différence de vitesse entre les modèles de décision non auto-régressifs et les LLM traditionnels ?⌄
En éliminant la génération token par token, les modèles non auto-régressifs évaluent le contexte et calculent les décisions en un seul passage avant. Ce changement architectural réduit généralement la latence d’inférence de plusieurs secondes à quelques dizaines de millisecondes, ce qui les rend adaptés au routage en temps réel dans des applications à haut débit où les LLM traditionnels deviendraient un goulot d’étranglement.
Quels sont les principaux cas d’usage en entreprise pour des couches de décision IA dédiées ?⌄
Les modèles de décision excellent dans les workflows nécessitant un routage structuré à grand volume plutôt qu’une génération de texte ouverte. Les cas d’usage courants incluent la sélection d’outils pour des agents autonomes (décider quelle API appeler ensuite), la modération de contenus en temps réel, le triage dynamique du support client, et les pipelines de validation automatique des données qui requièrent des sorties probabilistes typées strictes.
Les modèles de décision System One hallucinent-ils comme les modèles de langage génératifs ?⌄
Bien qu’ils n’inventent pas de citations ni ne fabriquent du texte (hallucinations classiques), les modèles de décision peuvent tout de même commettre des erreurs de classification. Comme ils produisent des distributions de probabilité mappées à des choix contraints, les développeurs atténuent ce risque en fixant des seuils de confiance stricts. Si la confiance du modèle pour une classification est inférieure au seuil, le système peut automatiquement escalader la tâche vers un humain ou un modèle de raisonnement plus grand.
Peut-on exécuter ces modèles de décision IA sur des appareils edge uniquement CPU ?⌄
Oui. Les modèles de décision conçus pour cet usage se situent souvent entre 300 M et 600 M de paramètres, et ne nécessitent qu’une fraction de la mémoire d’un LLM génératif standard. Une fois quantifiés, ils peuvent être déployés efficacement sur des CPU classiques, des appareils edge mobiles ou directement dans les navigateurs web via des runtimes comme ONNX ou llama.cpp, supprimant entièrement la dépendance au cloud et les coûts d’API.
En tant que data scientist certifié, je suis passionné par l'utilisation des technologies de pointe pour créer des applications innovantes d'apprentissage automatique. Avec une solide expérience en reconnaissance vocale, en analyse de données et en reporting, en MLOps, en IA conversationnelle et en NLP, j'ai affiné mes compétences dans le développement de systèmes intelligents qui peuvent avoir un impact réel. En plus de mon expertise technique, je suis également un communicateur compétent, doué pour distiller des concepts complexes dans un langage clair et concis. En conséquence, je suis devenu un blogueur recherché dans le domaine de la science des données, partageant mes idées et mes expériences avec une communauté grandissante de professionnels des données. Actuellement, je me concentre sur la création et l'édition de contenu, en travaillant avec de grands modèles linguistiques pour développer un contenu puissant et attrayant qui peut aider les entreprises et les particuliers à tirer le meilleur parti de leurs données.
Découvrez les principaux types d'agents d'intelligence artificielle, comment ils interagissent avec les environnements et comment ils sont utilisés dans les différents secteurs d'activité. Comprendre les agents réflexes simples, les agents basés sur un modèle, les agents basés sur un but, les agents basés sur l'utilité, les agents d'apprentissage, etc.
L'essor du développement de l'intelligence artificielle (IA) a entraîné une augmentation notable de la demande en matière de calcul, d'où la nécessité de disposer de solutions matérielles robustes. Les unités de traitement graphique (GPU) et les unités de traitement tensoriel (TPU) sont devenues des technologies essentielles pour répondre à ces demandes.
Apprenez l'essentiel de l'architecture d'un entrepôt de données, des composants clés aux meilleures pratiques, pour construire un système de données évolutif et efficace !
Apprenez à utiliser l'API DeepSeek : choix des modèles, gestion des paramètres, optimisation des coûts, mise en cache du contexte et optimisation du chain-of-thought.
De nombreuses applications d’IA mobilisent des modèles de langage de grande taille pour des tâches qui ne nécessitent pas réellement de génération de texte.
Un agent peut simplement devoir décider quel outil appeler, si un document est pertinent, à quel point une demande est urgente, ou si une action doit être escaladée.
Jev de TypeSafe AI aborde ces tâches différemment. Au lieu de générer une réponse token par token, il prend l’état de l’application et des questions structurées et renvoie des décisions typées telles que des choix, des scores, des jugements oui/non et des probabilités. Voyez-le à l’œuvre dans notre tutoriel Jev API
TypeSafe AI décrit cela comme une approche System One Model : utiliser l’IA comme couche de décision rapide plutôt que comme générateur de texte généraliste.
Le défi, c’est que nous savons encore relativement peu de choses sur le fonctionnement interne de Jev.
TypeSafe AI a partagé quelques détails sur son approche de prise de décision en parallèle et sa méthode d’entraînement, mais l’architecture complète, les poids, les données d’entraînement et la recette d’entraînement ne sont pas publics.
Cela rend difficile l’inspection, la reproduction ou l’adaptation directe de Jev.
Des projets open source explorent la même idée avec des architectures que nous pouvons réellement examiner et exécuter en local.
Certains utilisent de petits modèles bidirectionnels, d’autres adaptent Qwen avec des têtes de décision spécialisées, tandis que d’autres extraient directement des probabilités depuis des modèles de langage existants.
Parce que vous contrôlez toute la pile, vous pouvez aussi optimiser la taille du modèle, la quantification, le batching, la mise en cache, le matériel et le serving pour bâtir une couche de décision plus rapide et moins coûteuse adaptée à votre charge.
Dans cet article, je compare sept alternatives open source à Jev, dont Laya, Nimble, Kev, SemIf, Rizzo Flow, Von et NanoJev, en expliquant le fonctionnement de chacune, leur proximité avec l’approche Jev, leurs points forts et comment les exécuter en local.
Avertissement : les projets présentés ici sont très récents et évoluent rapidement. Les extraits de code s’appuient sur leur documentation et leurs dépôts officiels, mais tous n’ont pas été testés de bout en bout de manière indépendante.
1. Laya : une alternative Jev dédiée et multilingue
Laya est un modèle de décision non auto-régressif conçu pour cet usage, basé sur ModernBERT-large, avec un point de contrôle mmBERT séparé pour les charges multilingues.
Au lieu de générer du texte, il traite simultanément l’état, la question et les options disponibles, puis note directement les réponses possibles en un seul passage avant. Il prend en charge des décisions à la Jev de type
choice,scoreetnoul, avec des checkpoints dédiés pour l’anglais, le multilingue et les décisions typées.Cela fait de Laya l’une des alternatives architecturales les plus proches de Jev, car toutes deux sont conçues spécifiquement pour des décisions probabilistes plutôt que pour la génération de texte.
Laya se distingue par ses modèles relativement compacts (322 M à 421 M), son support multilingue dans plus de 100 langues, et la capacité d’évaluer efficacement plusieurs questions sans exécuter un modèle génératif de plusieurs milliards de paramètres.
Fonctionnement de Laya
Laya prend un état (email, ticket de support, document ou objet JSON) associé à des questions typées comme
choice,scoreounoul.Son routeur sélectionne le checkpoint le plus adapté à la requête, comme ModernBERT-large pour l’anglais ou mmBERT-base pour l’entrée multilingue.
Le modèle sélectionné traite l’état et les questions en un seul passage, puis une tête de décision note les options disponibles et les convertit en probabilités.
Cela crée un flux direct de l’entrée, via le routage et l’encodage, jusqu’à la décision typée finale.
Laya est disponible en package Python :
Cette commande installe la bibliothèque Laya et ses dépendances, mais n’embarque pas les poids du modèle dans le package.
Les modèles sont hébergés sur Hugging Face.
Lorsque vous créez le routeur avec
preload=True, Laya télécharge et charge immédiatement les checkpoints disponibles afin qu’ils soient prêts avant la première requête.Les poids téléchargés sont mis en cache localement et n’ont donc pas à être retéléchargés à chaque exécution de votre application.
Ici,
Router(preload=True)est l’élément important.Lors de la première exécution, Laya récupère les fichiers de modèle requis depuis son dépôt Hugging Face et les charge en mémoire. Les exécutions suivantes réutilisent les copies mises en cache localement.
Si vous utilisez plutôt :
Laya procède en chargement paresseux : il attend qu’un checkpoint soit nécessaire et le télécharge/initialise lors du premier usage.
2. Nimble : une alternative à Jev basée sur Qwen
Bespoke Nimble utilise Qwen3.5-9B comme colonne vertébrale et l’affine avec une LoRA de rang 16 spécifiquement pour la prise de décision typée.
Vous fournissez un texte accompagné d’un schéma plat contenant des questions booléennes ou énumérées, et Nimble renvoie la réponse sélectionnée ainsi que les probabilités pour chaque option autorisée.
Plutôt que de décoder une réponse token par token, l’entraînement et l’inférence opèrent directement sur les logits des candidats.
Comme Jev, Nimble repose sur l’idée « état en entrée, décisions probabilistes typées en sortie », mais son implémentation montre comment ajouter ce comportement à un LLM ouvert existant sans exiger une architecture de décision propriétaire.
Son principal atout est la transparence de bout en bout : Bespoke Labs a publié le modèle, la recette d’entraînement, le dispositif d’évaluation et le pipeline de curation des données, ce qui rend Nimble particulièrement utile pour les développeurs qui veulent entraîner ou étudier leurs propres modèles à la Jev.
Fonctionnement de Nimble
Nimble part d’un contexte et d’un schéma de décision qui définit les sorties autorisées, par exemple un booléen ou une valeur issue d’une énumération.
Il utilise Qwen3.5-9B avec LoRA pour traiter le contexte et le schéma, puis lit les logits pour les tokens candidats autorisés au lieu de générer une réponse complète.
Ces logits sont passés dans un softmax pour produire des probabilités, renvoyées sous forme de sortie typée structurée.
Nimble requiert Python 3.12 et utilise le checkpoint Bespoke-Nimble-9B. Commencez par cloner le dépôt et installer les dépendances :
Ensuite, téléchargez et préparez le modèle. L’étape officielle télécharge
bespokelabs/Bespoke-Nimble-9Bdepuis Hugging Face et, si nécessaire, fusionne son adaptateur LoRA avec le modèle Qwen3.5 de base figé. Elle crée ensuite.cache/nimble-model.json.Si la release téléchargée est un adaptateur LoRA, utilisez le bloc de préparation complet de Nimble (quickstart officiel) afin de fusionner l’adaptateur avec le modèle de base figé avant l’inférence.
Sur un GPU NVIDIA, chargez le modèle préparé :
Nimble renvoie les valeurs sélectionnées avec la probabilité associée à chaque candidat, plutôt que de générer une réponse textuelle.
3. Kev : la réplique architecturale la plus proche de Jev
Kev est une famille de modèles de décision inspirés de Jev et construits sur Qwen3.5, avec des variantes 0,8 B, 4 B et 9 B.
Il ajoute un adaptateur LoRA de rang 16 et une petite tête « pointer » qui compare chaque représentation d’option avec la représentation de décision de la question.
Plusieurs questions peuvent partager le même état, tandis que Kev isole les questions et renvoie leurs distributions de probabilité sans générer de texte.
Kev est particulièrement proche de Jev car son architecture se fonde explicitement sur une reconstruction publique de Jev, et son serveur implémente le contrat d’API
/v1/systemonede TypeSafe.Il prend en charge les mêmes styles de questions
noul,choiceetscore, de sorte que le code des SDK TypeSafe existants peut être redirigé vers un serveur Kev local.Son principal avantage tient à la combinaison de comportements proches de Jev, de poids ouverts, de multiples tailles de modèles et d’un pipeline d’entraînement ouvert.
Fonctionnement de Kev
Kev utilise un modèle Qwen de base avec un adaptateur LoRA et une petite tête « pointer ».
L’état partagé est traité une fois et réutilisé pour plusieurs questions, évitant au modèle de retraiter le même contexte.
Pour chaque question, Kev crée des représentations cachées pour les options et le token de décision, puis la tête « pointer » les compare et produit des scores d’option.
Softmax convertit ces scores en probabilités pour la sortie finale
choice,noulouscore.Kev s’exécute comme un serveur System One local.
Commencez par cloner le projet et installer ses dépendances de serving :
Cela installe Kev lui-même, mais pas nécessairement tous les poids du modèle.
Démarrez Kev-4B avec :
Lors de la première exécution, Kev télécharge automatiquement à la fois l’adaptateur/checkpoint Kev et son modèle Qwen de base depuis Hugging Face.
Les démarrages ultérieurs réutilisent les fichiers de modèle en cache plutôt que de les retélécharger.
Une fois le serveur lancé, vous pouvez utiliser le SDK TypeSafe pour l’interroger :
Avec Kev, la commande serveur fait aussi office d’étape de chargement du modèle : le premier lancement télécharge automatiquement les poids requis.
4. SemIf : une alternative Jev à logits directs, sans fine-tuning
SemIf adopte une approche plus simple : il n’entraîne pas de nouveau modèle de décision.
À la place, il utilise des modèles ouverts existants comme Qwen3.5-4B et lit directement les logits attribués aux réponses autorisées.
L’état, les critères et les options typées sont passés au modèle, et SemIf convertit les logits natifs des options en probabilités, sans échantillonnage ni génération de réponse.
Cela reproduit l’une des propriétés pratiques majeures de Jev—prendre des décisions sans sortie auto-régressive—tout en évitant le besoin d’un checkpoint spécialisé.
SemIf se démarque par sa flexibilité : vous pouvez utiliser différents modèles ouverts en sous-jacent, réutiliser un long état sur de nombreuses questions, et expérimenter le scoring direct sur CUDA, Apple Silicon, ou des modèles quantifiés dans le navigateur.
Il est particulièrement utile si vous souhaitez tester l’idée System One sans entraîner d’abord un modèle dédié.
Fonctionnement de SemIf
SemIf prend un état non structuré, des critères à l’exécution et un ensemble d’options autorisées, puis les envoie à un modèle ouvert existant.
Au lieu de demander au modèle de générer une réponse, il lit directement les logits attribués à ces options prédéfinies.
Ces logits sont convertis en une distribution de probabilité, permettant à l’application de produire une décision typée sans générer de texte ni parser une réponse ensuite.
SemIf n’a pas de checkpoint de modèle de base dédié. Il exécute plutôt le scoring de décision sur un modèle ouvert existant.
Clonez et installez :
Cela installe SemIf, mais ne télécharge pas encore Qwen.
Lancez le scorer :
Lors de la première exécution, le modèle Qwen sélectionné est téléchargé depuis Hugging Face et stocké dans le cache Hugging Face. La documentation de SemIf recommande même de définir
HF_HOMEvers un disque volumineux car les fichiers de modèle peuvent prendre beaucoup de place.Par exemple :
Une fois le modèle mis en cache, les exécutions suivantes réutilisent la copie locale.
Ainsi, SemIf lui-même reste relativement léger. La majeure partie de la taille à télécharger dépend du modèle ouvert sous-jacent que vous choisissez d’exécuter.
5. Rizzo Flow : alternative Jev « local-first » pour une flexibilité matérielle
Rizzo Flow est un système d’inférence de type Jev, pensé « local-first », construit autour des modèles Spark-X2.5 ouverts et d’un serving basé sur llama.cpp.
Au lieu de générer une réponse JSON, il convertit chaque décision en un ensemble contraint de tokens de réponse possibles, lit les logits associés à ces tokens, puis les transforme en probabilités.
L’état peut être traité une fois et réutilisé pour plusieurs questions, ce qui réduit les calculs répétés.
Comme Jev, Rizzo Flow accepte un état non structuré et renvoie des décisions typées telles que des jugements oui/non, des choix, des scores et des sorties numériques.
Il reflète aussi l’interface HTTP de TypeSafe, ce qui facilite le remplacement d’un appel hébergé par un point de terminaison local.
Rizzo Flow se distingue particulièrement par son déploiement local et sa flexibilité matérielle, combinant modèles ouverts, quantification et une API familière, plutôt que de tenter de reproduire l’architecture d’entraînement propriétaire de Jev.
Fonctionnement de Rizzo Flow
Rizzo Flow traite l’état une fois et stocke le résultat dans le KV cache du modèle.
Plusieurs questions peuvent ensuite réutiliser cet état en cache au lieu de retraiter le contexte complet. Chaque question est convertie en problème à choix multiples, avec des réponses candidates représentées par des lettres comme
A,BouC.Rizzo Flow ne lit que les logits de ces lettres de réponse, applique softmax, puis convertit les probabilités résultantes en sorties typées comme un booléen, un choix, un score ou un nombre.
Bien démarrer avec Rizzo Flow
Rizzo Flow requiert Python 3.11+, Git et
uv.Lors de l’installation, choisissez le backend de calcul adapté à votre machine. Par exemple, sous Linux avec un GPU NVIDIA :
Pour Apple Silicon, utilisez
--extra mlx; pour les systèmes CPU-only,--extra cpu.Téléchargez ensuite le modèle Spark-X2.5 par défaut et son runtime local :
Puis lancez le serveur :
Le modèle tourne désormais en local sur
http://127.0.0.1:8017.Vous pouvez tester l’endpoint compatible Jev avec une décision réelle :
Rizzo Flow renvoie directement la réponse et la distribution de probabilités, sans générer de sortie token par token.
6. Von : une alternative System One compacte à Jev
Von est un modèle System One dédié, basé sur une architecture ModernBERT bidirectionnelle de 395 M de paramètres.
Au lieu de décoder du texte, il évalue ensemble l’état et les critères candidats à l’aide de représentations OptionMarker, puis produit directement des logits pour les décisions
Choice,NouletScore.Il applique aussi une calibration post-entraînement afin que les distributions de probabilité résultantes puissent être utilisées directement par la logique applicative.
Von est très proche de Jev au niveau de l’interface : non auto-régressif, mêmes trois primitives de décision, évalue plusieurs questions en un passage avant, et implémente le protocole
/v1/systemone.Son principal atout est sa faible empreinte et sa conception pour l’inférence locale : le modèle compte des centaines de millions (et non des milliards) de paramètres et prend en charge CUDA, ROCm, Apple Silicon et l’exécution CPU.
Fonctionnement de Von
von utilise un modèle compact, bidirectionnel et basé sur ModernBERT pour traiter ensemble l’état, la question et les critères candidats.
Son mécanisme Option-Marker crée des représentations pour les réponses possibles, qui sont converties en logits candidats.
Une mise à l’échelle par la température est ensuite appliquée pour améliorer la distribution de probabilités avant que von ne renvoie la sortie finale
choice,noulouscore.La même architecture peut aussi évaluer plusieurs questions en un seul passage.
Bien démarrer avec Von
Von propose l’une des interfaces les plus simples.
Installez le SDK Python :
Cela installe le logiciel Von. Le modèle proprement dit est publié séparément sous
wfzyx/von-1.0sur Hugging Face.Lors du premier chargement, son checkpoint ModernBERT est téléchargé et mis en cache localement via le système de chargement de modèles Hugging Face/Transformers.
Une fois en cache, les inférences ultérieures utilisent la copie locale sans retélécharger les poids.
Vous pouvez ensuite prendre une décision avec :
Ainsi, le premier appel peut être plus long car le modèle doit être téléchargé et initialisé. Après cela, l’inférence se fait en local.
7. NanoJev : une réplique Jev légère et entraînable
NanoJev est une réplique Jev de 0,6 B construite sur Qwen3-0.6B avec des têtes de décision dédiées pour des sorties structurées.
Chaque requête contient un état, une question et un ensemble de candidats, qui passent par l’épine dorsale avant que des têtes partagées ne produisent des distributions de probabilité complètes.
Choice utilise une attention par ensemble et une tête scalaire, les décisions booléennes utilisent un sigmoid, et Score évalue des niveaux ordonnés et produit à la fois une distribution et un score attendu.
NanoJev suit de très près la conception de Jev : il gère des décisions en parallèle, des ensembles de candidats dynamiques, des distributions de probabilité complètes, et aucune décodage de sortie.
Son point fort réside dans sa colonne vertébrale très compacte et un pipeline d’entraînement explicite de bout en bout.
Il peut regrouper plusieurs états, questions et chemins de candidats en un seul passage avant de l’épine dorsale, ce qui en fait une option intéressante pour les développeurs souhaitant expérimenter une architecture Jev compacte et entraînable plutôt que d’adapter un LLM généraliste plus grand.
Fonctionnement de NanoJev
NanoJev prend un état, une question et les réponses candidates parmi lesquelles le modèle est autorisé à choisir.
Chaque candidat est combiné à l’entrée pertinente et passé dans l’épine dorsale partagée Qwen3-0.6B.
NanoJev utilise ensuite des têtes de décision dédiées pour noter directement les candidats : Choice utilise une attention par ensemble et softmax, Boolean utilise un sigmoid, et Score produit une distribution de probabilité sur des niveaux ordonnés.
Parce qu’il lit ces probabilités directement depuis le passage avant, il peut renvoyer des distributions typées complètes sans générer de tokens de sortie.
Bien démarrer avec NanoJev
NanoJev sépare le téléchargement du modèle de l’installation du dépôt.
Commencez par installer le projet :
Puis téléchargez le checkpoint public figé :
Démarrez le serveur d’inférence local :
Créez une requête :
Envoyez-la ensuite à NanoJev :
Le serveur conserve le checkpoint chargé et renvoie la distribution de probabilité pour chaque question. NanoJev peut également traiter en lot plusieurs états et questions dans une même requête.
Comparer les 7 meilleures alternatives à Jev
La principale différence tient à la façon dont chaque projet produit la décision.
Laya et Von utilisent de petits encodeurs bidirectionnels conçus spécifiquement pour le scoring d’options.
Kev, Nimble et NanoJev adaptent des modèles Qwen avec un entraînement spécialisé ou des têtes de décision.
SemIf et Rizzo Flow adoptent une approche plus légère en extrayant directement les probabilités depuis des modèles génératifs existants.
Projet
Architecture
Taille
Décisions à la Jev
Idéal pour
Laya
ModernBERT/mmBERT + tête de décision
322 M–421 M
Oui
Décisions multilingues légères
Nimble
Qwen3.5 + scoring des candidats via LoRA
9 B
Similaire
Entraînement et recherche
Kev
Qwen + LoRA + tête pointer
0,8 B–9 B
Oui
Déploiement local proche de Jev
SemIf
Logits directs depuis des LLM ouverts
Dépend du modèle
Similaire
Expériences à logits directs
Rizzo Flow
Spark + scoring direct des options
1,7 B–4 B
Oui
Serving local simplifié
Von
ModernBERT + OptionMarker
~395 M
Oui
Inférence de décision compacte
NanoJev
Qwen3 + têtes de décision partagées
0,6 B
Oui
Petite réplique Jev entraînable
En pratique, les encodeurs dédiés privilégient la vitesse et l’efficacité, les modèles Qwen adaptés conservent davantage de capacités linguistiques générales, et les méthodes à logits directs sont plus simples à expérimenter car elles nécessitent moins d’entraînement spécialisé.
Quelle alternative à Jev choisir ?
Pour des modèles de décision petits et spécialisés, Laya, Von et NanoJev figurent parmi les options les plus intéressantes, de l’ordre de 322 M à 600 M de paramètres.
Si vous avez besoin de prise de décision multilingue, Laya se démarque grâce à un checkpoint dédié basé sur mmBERT couvrant plus de 100 langues.
Pour les applications construites autour de l’API TypeSafe System One, Kev et Von offrent des parcours d’intégration particulièrement proches, tandis que Rizzo Flow reflète la même interface HTTP pour un serving local.
Pour l’entraînement et l’expérimentation, Nimble publie sa recette de curation des données et de fine-tuning LoRA, tandis que NanoJev fournit un pipeline complet couvrant la génération des données, l’entraînement, l’évaluation et le serving.
Si vous voulez expérimenter sans entraîner un modèle de décision spécialisé, SemIf est une base utile : il lit directement les probabilités d’options depuis des modèles ouverts existants comme Qwen au lieu de générer une réponse.
En guise de conclusion
L’architecture exacte de Jev est peut-être nouvelle, mais l’idée sous-jacente ne l’est pas.
Les classifieurs NLI zero-shot exploitent depuis des années les logits de modèle pour noter des étiquettes candidates arbitraires, bien avant Jev.
Ce que TypeSafe AI apporte, c’est une architecture dédiée, des sorties parallèles, des probabilités calibrées et une API claire pour transformer cette idée en une couche de décision programmable.
L’écosystème open source montre que vous n’avez pas besoin d’un service fermé pour bâtir quelque chose de similaire.
Des projets comme Kev, Von et Rizzo Flow peuvent tourner en local et exposer des interfaces à la Jev, tandis que d’autres permettent de télécharger les poids, de les quantifier ou d’utiliser des runtimes comme llama.cpp.
La vraie leçon n’est pas que Jev a inventé la décision par l’IA, mais qu’il a remis en lumière une idée essentielle : si votre application a seulement besoin d’une décision, vous n’avez peut-être pas besoin de génération de texte du tout.