Analyses

Jev ou un LLM : quand un modèle de décision suffit

TchaviPar Gael — fondateur de Tchavi

· 12 min de lecture

Retour au blog

Sommaire

Pour classer des messages de clients, un LLM est un tout petit peu plus exact que Jev dans mon test, mais Jev répond environ 3,6 fois plus vite et coûte environ 1,7 fois moins par classement. L'écart d'exactitude est d'un message sur 40 : ce n'est pas assez pour trancher. L'écart de vitesse et de prix, lui, se répète à chaque passe.

J'ai mesuré ça en octobre 2026, à travers Tchavi, avec 40 messages WhatsApp inventés pour une boutique de Cotonou. Voici le protocole, les chiffres, et le montage que j'utiliserais : Jev décide, un LLM écrit.

En bref

  • Tchavi, une passerelle d'API IA compatible OpenAI que tu paies en mobile money, donne accès aux deux : jev-1.13 (modèle de décision, sur /v1/decisions) et gpt-6-luna (modèle de chat), avec la même clé.
  • Sur 40 messages et 3 passes : Jev 39/40 à chaque passe (97,5 %), gpt-6-luna 40/40, 39/40 puis 40/40 (99,2 % en moyenne).
  • Latence médiane : environ 326 ms pour Jev, environ 1 184 ms pour gpt-6-luna.
  • Coût de 1 000 classements : environ 43,6 crédits (14,5 F) pour Jev, environ 74,4 crédits (24,8 F) pour gpt-6-luna.
  • Pour répondre au client, il faut un modèle de chat : Jev ne rédige pas. Le bon montage est Jev pour décider, le LLM pour écrire.

Le protocole

Je voulais un test refaisable. J'ai écrit 40 messages de clients d'une boutique, en style WhatsApp (fautes légères, abréviations, majuscules), tous fictifs. Il y a 5 classes, 8 messages par classe :

  • commande : commander, modifier, annuler, demander un stock ;
  • reclamation : produit abîmé ou faux, colis incomplet, service injoignable, double facturation ;
  • livraison : zones, délais, suivi, retrait en boutique ;
  • paiement : numéro mobile money, confirmation, paiement échoué, modalités ;
  • autre : horaires, recrutement, démarchage, remerciements, question sur le tissu.

Les étiquettes ont été fixées avant la première exécution et je ne les ai jamais changées. Quelques messages sont ambigus exprès : « Je prends les 3 pagnes, comment je fais pour valider ? » peut être une commande ou une question de paiement.

Les deux modèles ont reçu les mêmes cinq définitions de classes.

Jev reçoit une seule question de type choice :

{
  model: 'jev-1.13',
  state: `Message WhatsApp d'un client d'une boutique : ${text}`,
  questions: {
    intent: {
      type: 'choice',
      instructions: "Quelle est l'intention principale du client ?",
      criteria: {
        commande: 'le client veut commander, modifier ou annuler une commande, ou demande si un article est en stock',
        reclamation: 'le client se plaint : produit abîmé, erroné, manquant, service ou livreur mécontentant, remboursement',
        livraison: 'question sur la livraison : zones, délais, suivi du colis, retrait en boutique',
        paiement: 'paiement par mobile money : numéro, confirmation, échec, moyens et modalités de paiement',
        autre: 'tout le reste : horaires, recrutement, démarchage, remerciements, questions sur le produit',
      },
    },
  },
}

gpt-6-luna passe par /v1/chat/completions avec une consigne système qui demande un objet JSON, les mêmes définitions, et aucun réglage particulier :

Tu classes des messages WhatsApp de clients d'une boutique. Réponds uniquement par un objet JSON {"intent": "<label>"} où <label> est exactement l'un de : - commande : … - reclamation : … (les mêmes définitions)

Les appels sont séquentiels. Si Tchavi répond 429 (limite par minute de ma clé de test), le script attend le Retry-After et recommence, et la latence ne compte que la tentative réussie. J'ai fait trois passes complètes de chaque modèle.

Les résultats

Jev (jev-1.13)gpt-6-luna
exactitude, passe 1 / 2 / 339/40, 39/40, 39/4040/40, 39/40, 40/40
exactitude moyenne97,5 %99,2 %
latence médiane (p50), par passe326, 342, 317 ms1 198, 1 184, 1 141 ms
crédits pour 40 messages1,745 à chaque passe2,912 ; 3,064 ; 2,952
crédits pour 1 000 classements43,674,4 (en moyenne)
F pour 1 000 classements (3 crédits = 1 F)14,5 F24,8 F

Les latences sont des allers-retours depuis mon poste, une requête à la fois : le rapport entre les deux est plus fiable que les millisecondes elles-mêmes.

Les erreurs, classe par classe

Jev a fait la même erreur à chaque passe : le message n° 3 (« Je prends les 3 pagnes + la paire de sandales. Comment je fais pour valider ? »), classé paiement au lieu de commande, avec une confiance de 0,78 à 0,81. C'est un des messages ambigus. Les 7 autres commande et les 32 messages des quatre autres classes étaient justes.

gpt-6-luna s'est trompé une seule fois sur les trois passes : « mon colis est où ? le livreur ne décroche pas », classé reclamation au lieu de livraison, à la deuxième passe seulement. Les deux autres passes étaient parfaites.

Deux lectures. Le LLM est le plus exact, de peu (119 bonnes réponses sur 120 contre 117). Et l'erreur de Jev est stable et vient d'un message vraiment ambigu, alors que celle du LLM change d'une passe à l'autre.

La confiance de Jev sert de filtre

Dans chaque passe, 38 messages sur 40 avaient une confiance supérieure ou égale à 0,9, et ces 38 étaient tous justes. Le message ambigu faisait partie des 2 restants. Si tu envoies à un humain tout ce qui est sous 0,9, il lit 2 messages sur 40 et ton code n'en rate aucun sur ce jeu. Mon LLM ne rendait qu'une étiquette, sans signal de ce genre.

Un jeu plus dur

J'ai aussi passé 12 messages difficiles, en une seule passe : sarcasme (« Super le livreur, 5 jours de retard et le sac est sale. Bravo hein. »), deux intentions dans un message, remerciements qui cachent une demande de remboursement. Résultat : 9 sur 12 pour Jev, 9 sur 12 pour gpt-6-luna. Ils se trompent ensemble sur deux messages et chacun rate un message que l'autre réussit. Douze messages, c'est trop peu pour conclure, mais ça montre que le LLM n'est pas magiquement meilleur quand le message devient flou.

Combien ça coûte vraiment

Le prix de Jev est de 0,09 crédit par millier de tokens d'entrée, sortie gratuite. Celui de gpt-6-luna est de 0,22 crédit par millier en entrée et 1,1 en sortie. Une classification revient en moyenne à 0,0436 crédit chez Jev et environ 0,074 chez le LLM.

Deux détails de facturation qui expliquent les chiffres :

  • Jev développe tes questions dans le prompt, donc il facture environ 485 tokens d'entrée par message même quand le message tient en une ligne. Ce poids explique que l'écart de prix avec le LLM ne soit que d'un facteur 1,7.
  • gpt-6-luna raisonne avant de répondre, et ces tokens de raisonnement sont facturés comme de la sortie. Sur le premier message de la deuxième passe, j'ai relevé 33 tokens de sortie dont 19 de raisonnement, pour une réponse qui tient en quelques mots.

L'écart est d'environ 10 F pour 1 000 classements : il compte à partir de dizaines de milliers de messages, pas pour un petit bot de boutique.

Ces tarifs sont ceux du catalogue d'octobre 2026 ; la page de chaque modèle (Jev 1.13, GPT-6 Luna) affiche le prix du moment.

Là où le LLM gagne

Mon test est un cas favorable à Jev : cinq libellés fixes, des définitions courtes. Il y a des cas où je prendrais le LLM sans hésiter, même si je ne les ai pas mesurés ici :

  • Une grille ouverte : « ce message respecte-t-il notre charte de ton, avec ses 12 règles et leurs exceptions ? ». Le LLM lit des consignes longues et nuancées ; Jev répond à des questions typées avec des critères courts. Je n'ai pas mesuré ce cas.
  • Quand la réponse n'est pas une étiquette : résumer, extraire un nom et une adresse, reformuler, traduire.
  • Quand tu n'as pas besoin de la vitesse : un tri nocturne de 10 000 tickets se moque de 300 ms ou de 1 200 ms.

Et dans mon test, le LLM était simplement un peu plus exact. Si une erreur te coûte très cher et que ton volume est faible, ça pèse plus que le prix.

Le montage combiné : Jev décide, un LLM écrit

Jev ne rédige pas, et un chat est lent et cher pour juste trier. Je les mets donc l'un derrière l'autre : Jev route et note, le LLM écrit la réponse avec le ton qui convient. J'ai testé le montage sur trois messages (la robe déchirée, une question sur Parakou, un client qui a écrit trois fois sans réponse) :

// 1. Jev décide : intention, urgence, colère, en un seul appel
// même requête que plus haut, avec trois questions : intent (choice),
// urgence (score) et colere (noul)
const decision = await fetch('https://tchavi.com/api/v1/decisions', {
  /* méthode, en-têtes et body comme dans le premier exemple */
});
const { intent, colere } = (await decision.json()).answers;

// 2. Le seuil choisit le ton, puis un modèle de chat écrit
const tone =
  colere.noul >= 0.7
    ? 'Commence par des excuses sincères et propose une solution concrète.'
    : 'Sois chaleureux et direct.';

const reply = await fetch('https://tchavi.com/api/v1/chat/completions', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    Authorization: `Bearer ${process.env.TCHAVI_API_KEY}`,
  },
  body: JSON.stringify({
    model: 'gpt-6-luna',
    messages: [
      {
        role: 'system',
        content: `Assistant WhatsApp d'une boutique de Cotonou. Message classé « ${intent.choice} ». 2 phrases maximum. ${tone} N'invente aucun prix, délai ni politique.`,
      },
      { role: 'user', content: text },
    ],
  }),
});

Résultats mesurés :

messageJev (3 questions)gpt-6-luna (réponse)
robe déchiréereclamation, colère 0,66 : 595 ms, 0,043 crédit2,0 s, 0,130 crédit
livraison à Parakoulivraison, colère 0,03 : 357 ms, 0,042 crédit5,4 s, 0,255 crédit
a écrit 3 fois sans réponsereclamation, colère 0,97 : 601 ms, 0,043 crédit4,1 s, 0,191 crédit

Trois choses à retenir.

La décision coûte entre 0,042 et 0,043 crédit, la rédaction entre 0,130 et 0,255 : le tri représente de 14 % à 25 % du coût total d'un message traité, mais c'est le seul coût que paient aussi les messages qui n'ont pas besoin d'une réponse rédigée. Le montage permet aussi de ne pas appeler le gros modèle quand ce n'est pas la peine (un message autre de remerciement peut recevoir une réponse toute faite).

Le seuil de colère a bien choisi le ton : le message à 0,97 a reçu des excuses (« Je suis sincèrement désolé que vous ayez dû nous écrire trois fois sans réponse »), celui à 0,03 une réponse neutre.

Mais le LLM n'obéit pas toujours à la consigne. Pour la question sur Parakou, il a répondu « Je vérifie si la livraison à Parakou est possible et combien elle coûte », une promesse que ton système n'est pas prêt à tenir, malgré « n'invente aucune politique ». Donne au LLM les vraies informations (zones, tarifs) dans la consigne, et relis les premières réponses avant de laisser le bot parler seul.

Ce que ces chiffres ne disent pas

  • 40 messages écrits par une seule personne, en français : ce n'est pas un benchmark, et un message d'écart ne démontre rien.
  • Une requête à la fois depuis un seul poste : sous charge, les latences peuvent changer.
  • Un seul LLM et une seule consigne : un autre modèle ou une autre formulation peut bouger l'exactitude.
  • Rien sur le fon, le wolof ou le mélange de langues, et rien sur les images : je n'ai testé que du texte français.

FAQ

Jev est-il plus exact qu'un LLM pour classer ?

Pas dans mon test. gpt-6-luna a obtenu 99,2 % en moyenne contre 97,5 % pour Jev, soit un message de plus sur 40. C'est trop peu pour dire que l'un est meilleur : la différence solide est la vitesse et le coût.

Pourquoi Jev est-il plus rapide ?

Je ne le sais pas avec certitude. Je constate qu'il ne produit pas de texte et que sa réponse est courte. Ce que j'ai mesuré, c'est l'écart : environ 326 ms contre environ 1 184 ms de médiane, en octobre 2026.

Quand choisir un LLM plutôt que Jev ?

Quand la réponse est un texte, quand ta grille est longue et ouverte, ou quand tu n'as pas de volume : l'écart de prix ne compte pas pour quelques centaines de messages par jour. Tu peux aussi garder le LLM comme second avis sur les cas où la confiance de Jev est basse.

Comment tester sur mes propres messages ?

Prends 50 à 100 messages réels, étiquette-les à la main, passe-les dans les deux et compte les erreurs, comme dans cet article. Le code est un simple fetch pour Jev et un appel de chat classique pour le LLM. Pour un premier aperçu des appels Jev, lis le guide de Jev et la référence des décisions.

Faut-il un SDK ?

Non. Les deux appels sont des requêtes HTTP classiques ; j'ai utilisé fetch pour tout.

Combien me coûtent 1 000 classements ?

Dans mon test : environ 43,6 crédits (14,5 F) avec Jev et environ 74,4 crédits (24,8 F) avec gpt-6-luna, à raison de 3 crédits pour 1 F. Ce sont les tarifs du catalogue, et ils peuvent changer.

crée ton compte et recharge 1 000 F

Cet article fait partie de la série « Construire un SaaS IA depuis l'Afrique francophone ». Tchavi est une passerelle d'API IA compatible OpenAI : une seule clé donne accès à plus de 100 modèles de texte, d'image, d'audio et de vidéo, et tu la paies en mobile money, sans carte bancaire (pays et opérateurs). Plus de guides sur le blog. Pour suivre les prochains : LinkedIn et X.

Partager

Ton premier appel d'API, payé en mobile money

Sans carte bancaire. Recharge à partir de 1 000 F ; ta première recharge ajoute 150 crédits de bonus, et tes crédits n'expirent pas.