Comparaisons / JevModel
Classification d’e-mails par IA : règles, prompts LLM ou API de décision typée pour le courrier entrant
Router le courrier entrant vers support, ventes, facturation, fournisseurs ou files à faible valeur : nettoyer fils et signatures, comparer règles, prompts LLM et API typées, envoyer la bande moyenne aux humains.
Dernière mise à jour:
Réponse courte : classez le dernier message, pas toute la boîte
- La classification d’e-mails attribue chaque message entrant à une route bornée—support, ventes, facturation, fournisseur ou prospection à faible valeur—avant toute réponse, remboursement ou transfert automatique.
- Le travail propre à l’e-mail se fait avant le modèle : retirer citations, signatures et mentions légales, garder objet, domaine de l’expéditeur et alias destinataire, et décrire les pièces jointes en métadonnées, car un modèle texte ne les ouvre pas.
- Les règles traitent à bas coût expéditeurs et alias connus ; les prompts LLM gèrent la prose désordonnée mais dérivent ; une API de décision typée comme Choice plus Noul de JevModel renvoie des labels fixes avec probabilités, pour router la bande haute et confier la moyenne aux humains.
En quoi la classification d’e-mails diffère-t-elle de celle des tickets ou des intentions ?
Un ticket support arrive généralement comme une description propre. Un e-mail arrive comme une enveloppe : en-têtes From, To et Reply-To, un objet du type « Re: Fwd: Facture », la réponse récente en haut, plusieurs messages cités dessous, une signature, une mention de confidentialité et parfois des pièces jointes. La route dépend surtout du dernier paragraphe écrit par une personne et de quelques en-têtes : l’alias destinataire, le fait que le domaine expéditeur soit client ou fournisseur, et s’il s’agit d’une réponse automatique ou d’un rebond. Envoyé brut, le message pousse le modèle à lire l’historique cité et le pied de page comme des preuves, et à classer selon un e-mail vieux de trois semaines. La classification d’intention demande ce que veut l’auteur ; celle des e-mails doit d’abord décider quelle partie du message est sa parole actuelle. Pour la conception des files, voir support-triage ; pour les labels d’intention multicanaux, intent-classification.
Route customer support with JevClassification d’intention pour texte produit et support : règles, LLM et API typéesCourrier entrant : règles vs prompts LLM vs API de décision typée
La plupart des boîtes en production finissent avec les trois couches : règles pour les faits connus, modèle pour la prose, code pour les seuils. Le tableau compare maintenance et modes de défaillance ; ce n’est pas un benchmark, et aucune option ne remplace un jeu de test labellisé issu de votre propre courrier.
How to classify text with the JevModel APIJev or rules?Jev vs GPT and Claude: choosing a decision layer| Dimension | Règles / filtres de messagerie | Prompt LLM + parsing | API typée (JevModel Choice/Noul) |
|---|---|---|---|
| Meilleur signal | En-têtes : alias destinataire, domaines connus, marqueurs de réponse auto et rebond | Le corps : paraphrases, demandes mêlées, formulations indirectes | Corps nettoyé plus en-têtes, évalués selon des critères écrits par route |
| Défaillance typique | Rate les nouvelles formulations ; les règles s’empilent jusqu’à l’opacité | Lit l’historique cité comme actuel ; invente des labels ; le JSON dérive après modification du prompt | Des critères faibles donnent des probabilités diffuses ; les longs fils doivent être réduits pour tenir dans la limite de state |
| Incertitude | Aucune : la règle se déclenche ou non | Confiance auto-déclarée en texte, difficile à calibrer | Probabilités par option, seuils vérifiables contre les labels |
Comment préparer un e-mail avant de l’envoyer à un classifieur ?
Faites le parsing de l’e-mail dans votre code, puis envoyez un petit state JSON. Gardez : l’objet sans préfixes « Re: » et « Fwd: », l’alias destinataire (billing@, sales@), le domaine expéditeur et sa présence dans votre liste clients ou fournisseurs, et le corps du message le plus récent. Retirez : citations (lignes commençant par « > » et blocs après « On … wrote: »), signatures, mentions de confidentialité, pixels de suivi et HTML. Pour un fil transféré, gardez la note de la personne qui transfère et un court extrait du premier paragraphe de l’expéditeur d’origine, marqué comme transféré. Pour les pièces jointes, ne passez que noms et types : JevModel accepte du texte ou du JSON, pas de fichiers ni d’images, donc « invoice.pdf joint » est un indice, pas une preuve du contenu du PDF. Dans JevModel, le state sérialisé et la requête complète doivent chacun tenir en 8 000 caractères, ce qu’un e-mail nettoyé respecte presque toujours. L’exemple pose une question Choice pour la route et une question Noul pour savoir si une personne doit regarder maintenant.
JevModel API: request and responseChoice, Score, and NoulJev est-il multimodal / téléchargeable ? Ce qu’est vraiment JevModel{
"state": {
"subject": "Invoice 2291 charged twice",
"to_alias": "billing@",
"sender_domain": "customer-example.com",
"sender_known_as": "customer",
"latest_message": "Hi, our card was charged twice for invoice 2291 this morning. Can you refund the duplicate?",
"attachments": [
"receipt.png (not read)"
]
},
"questions": {
"route": {
"type": "choice",
"instructions": "Which team should own the newest message in this email? Ignore attachment names as evidence.",
"criteria": {
"support": "Product questions, bugs, how-to or account access problems.",
"sales": "Pricing, plans, demos, procurement or purchase questions from prospects.",
"billing": "Charges, refunds, invoices, receipts or payment method changes.",
"vendor": "Messages from suppliers or partners about their own services or invoices to us.",
"low_value": "Cold outreach, newsletters, automatic notifications needing no action."
}
},
"needs_person_now": {
"type": "noul",
"instructions": "Should a person read this email today instead of waiting in a queue?",
"criteria": {
"true": "Money, access, legal or a clear deadline is at stake today.",
"false": "It can wait in the normal queue."
}
}
}
}Comment les seuils de confiance doivent-ils router les e-mails vers des humains ?
Utilisez trois bandes par route, fixées sur votre propre courrier réservé. Bande haute : déplacer l’e-mail vers le dossier ou la file de l’équipe et ajouter un label—actions à faible risque et réversibles. Bande moyenne : une vue de revue partagée avec les deux routes suggérées en tête ; c’est là qu’arrivent les e-mails mixtes (« merci pour la démo, et notre facture est fausse »). Bande basse ou quasi-égalité entre deux routes : laisser dans la boîte générale. Ne laissez jamais un label de route déclencher seul une étape irréversible comme un remboursement, une réponse contractuelle ou une suppression ; exigez une vérification séparée dans le code et utilisez une question Noul comme needs_person_now pour remonter le courrier urgent quelle que soit sa route. Réglez les bandes par alias, car billing@ et info@ reçoivent des mélanges très différents. Le schéma général est décrit dans confidence-and-abstention.
Jev probability, confidence and human-review thresholdsAI Decision Flows with Jev and human reviewComment tester en régression un classifieur d’e-mails ?
Construisez des fixtures à partir de courrier réel anonymisé et figez-les. Couvrez les formes qui cassent le routage d’e-mails : une réponse dont l’historique cité porte sur un autre sujet, un fil transféré où la personne n’ajoute que « voir ci-dessous », une réponse d’absence, un rebond de livraison, une facture fournisseur envoyée à billing@ (vendor, pas billing), un client écrivant depuis une adresse personnelle, un message dans une seconde langue et une demande mixte qui doit tomber en bande moyenne. Exécutez parser et classifieur ensemble, car la plupart des régressions viennent du nettoyage, pas du modèle. Dans Console → Batch de JevModel, vous pouvez importer des lignes CSV, TXT ou JSONL avec une question fixe, exporter les réponses ligne par ligne puis les joindre à vos labels par script ; Batch ne calcule pas la précision. Refusez le changement si des routes dorées basculent ou si les fixtures de bande moyenne cessent de s’abstenir. Voir evaluation et batch-text-classification-api.
Evaluate a Jev workflowBatch text classification with the JevModel APIQuand JevModel convient-il au routage d’e-mails, et quand non ?
JevModel est une API de décision hébergée : vous envoyez en POST à /api/v1/systemone l’e-mail nettoyé comme state et 1 à 8 questions nommées, et il appelle le modèle fixe typesafe/jev-1.13 via OpenRouter. Il convient quand plusieurs services—worker de messagerie, help desk, synchronisation CRM—doivent partager une même définition de routes avec probabilités, et quand la bande moyenne doit aller aux humains plutôt qu’être devinée. Choice gère 2 à 12 routes, Score évalue des niveaux ordonnés comme l’urgence, Noul répond oui/non avec une probabilité. Il ne convient pas comme filtre anti-spam ou anti-phishing : gardez devant les filtres anti-spam et l’authentification d’expéditeur de votre fournisseur. Il ne lit ni pièces jointes, ni images, ni PDF scannés, n’est pas open source, n’offre pas de poids téléchargeables, et les comptes gratuits vérifiés ont 5 exécutions réussies par jour UTC : une boîte partagée chargée demande un plan payant ou un traitement par lots planifié. Pour les help desks, voir zendesk-ai-ticket-classification.
JevModel pricing and free Jev runsClassification et routage de tickets Zendesk AI : Intelligent Triage intégré vs classifieur customLLM-as-a-judge : prompts libres, notation par grille ou juge typé avec abstentionRoute customer support with JevClassification d’intention pour texte produit et support : règles, LLM et API typéesJev probability, confidence and human-review thresholdsBatch text classification with the JevModel APIClassification des retours clients : un thème, une priorité, et pourquoi le sentiment ne suffit pasQuestions fréquentes
Un classifieur d’e-mails IA peut-il lire les pièces jointes ?
JevModel non : il n’accepte que du texte ou du JSON. Si une pièce jointe compte, extrayez d’abord son texte avec votre OCR ou parser et passez un court extrait dans state ; sinon, passez seulement nom et type comme indice.
Faut-il utiliser un LLM ou une API de décision comme filtre anti-spam ?
Non. Laissez spam, phishing et authentification d’expéditeur à votre fournisseur. Placez le classifieur ensuite, pour des catégories métier comme la prospection à froid, les newsletters ou les notifications automatiques : du courrier légitime sans réponse nécessaire.
En quoi cela diffère-t-il des guides support-triage et Zendesk ?
Ces guides partent d’un ticket existant. Cette page couvre l’étape d’avant : transformer un e-mail brut avec en-têtes, historique cité, signatures et pièces jointes en state propre, puis le router entre équipes au-delà du support.
Comment choisir le seuil de bande moyenne pour les e-mails ?
Labellisez un jeu réservé par alias, exécutez-le et retenez la probabilité la plus basse à laquelle le courrier routé automatiquement reste juste aussi souvent que votre équipe le tolère. Entre ce point et la bande basse, tout part en revue ; revérifiez après tout changement de parser ou de critères.
JevModel est indépendant et n’est pas affilié à TypeSafe AI.