Skip to main content

Welcome to a Grasp lesson

Create a free account to keep studying and create your own study path.

Lesson 54

Classification de texte avec LLM

Recommended resources

Bonjour et bienvenue dans cette nouvelle leçon !

Dans la leçon précédente, vous avez établi la connexion fondamentale entre n8n et un modèle de langage (LLM) via l'API d'OpenAI. Vous avez construit votre premier workflow d'agent IA, capable de recevoir un message et de générer une réponse. C'est la première étape essentielle pour toute automatisation intelligente.

Aujourd'hui, nous allons mettre cette connexion au service d'une tâche extrêmement puissante et pratique : classifier du texte entrant en catégories prédéfinies à l'aide d'un LLM. Imaginez pouvoir trier automatiquement des emails, des tickets de support, ou des avis clients sans intervention manuelle. C'est précisément ce que vous apprendrez à faire.

À la fin de cette leçon, vous serez en mesure de construire un workflow qui analyse un texte et lui assigne une catégorie et une priorité, une compétence clé pour de nombreux cas d'usage professionnels.

1. La Classification de Texte : Donner un Sens à l'Information

La classification est le processus qui consiste à assigner une ou plusieurs étiquettes (catégories) à un morceau de texte. C'est une tâche où les LLMs excellent, car ils peuvent comprendre le contexte et la nuance d'un langage non structuré.

Dans n8n, il existe principalement deux approches pour accomplir cette tâche :

  1. Le nœud Text Classifier : Un nœud spécialisé, conçu spécifiquement pour la classification. Il est simple et direct pour des besoins de catégorisation clairs.
  2. Le nœud AI Agent avec un prompt structuré : Une méthode plus flexible et puissante, qui utilise le nœud OpenAI Chat Model que vous connaissez déjà. Elle permet non seulement de classifier, mais aussi d'extraire d'autres informations structurées en même temps (comme une priorité, un résumé, etc.).

Nous allons explorer les deux, en nous concentrant sur la seconde méthode qui offre plus de possibilités.


2. Méthode 1 : Le Nœud Spécialisé Text Classifier

Le nœud Text Classifier est l'outil le plus direct pour la classification dans n8n. Il est conçu pour prendre un texte en entrée et le faire correspondre à l'une des catégories que vous avez définies.

La vidéo suivante, bien qu'en anglais, offre une excellente démonstration visuelle de son fonctionnement et de son importance.

n8n Text Classifier Node Tutorial: Build Smarter, More Powerful AI Agents

Cette vidéo de la chaîne "Bradford Carlton - Automate Business AI" présente le nœud Text Classifier comme un élément central pour construire des agents IA complexes.

Regardez les segments de 00:48 à 04:57. Concentrez-vous sur les points suivants : Configuration de base (00:48 - 02:14) : Observez comment ajouter le nœud, fournir le texte d'entrée (Input), et définir les catégories (Categories). Notez les options comme Other Branch pour gérer les cas qui ne correspondent à aucune catégorie. L'importance des descriptions (02:14 - 04:57) : C'est le point le plus crucial. L'auteur explique pourquoi des descriptions de catégorie vagues comme "toute requête sur la météo" sont inefficaces. Il montre comment des descriptions détaillées, qui agissent comme des mini-prompts, améliorent considérablement la précision de la classification.

Points Clés du Text Classifier

  • Entrée (Input) : C'est ici que vous fournissez le texte à classifier, généralement via une expression n8n (par exemple, le corps d'un email ou un message de chat).
  • Catégories (Categories) : Vous définissez chaque catégorie potentielle avec un nom et, surtout, une description détaillée. Cette description est votre instruction au LLM pour qu'il comprenne quand assigner cette catégorie. Pensez-y comme à un "mini-prompt".
  • Sorties multiples : Le nœud crée une sortie distincte pour chaque catégorie que vous définissez, ce qui facilite le branchement de votre logique avec un nœud IF ou Switch par la suite.

Pour un aperçu écrit en français, l'article d'Ocade Fusion mentionne également ce nœud comme une solution de choix.

Workflow Extraction Content File N8N Français - Ocade Fusion

Cet article sur l'extraction de contenu mentionne explicitement la classification comme une étape clé après l'extraction de texte.

Lisez rapidement les sections "Classifier les documents avec l’IA" et la question "Peut-on classifier automatiquement des documents avec N8N ?" dans la FAQ. Cela confirmera l'usage du nœud Text Classifier et introduira l'alternative via un LLM, que nous allons voir maintenant.

Bien que simple, le nœud Text Classifier est parfois limité si vous avez besoin d'une sortie plus complexe qu'une simple catégorie. C'est là qu'intervient la deuxième méthode.


3. Méthode 2 : Classification via Prompt Engineering

Cette approche utilise les nœuds AI Agent et OpenAI Chat Model que vous avez configurés lors de la leçon précédente. La magie opère dans la manière dont nous rédigeons le System Prompt. L'objectif est de contraindre le LLM à retourner une réponse dans un format structuré et prévisible, comme un objet JSON.

C'est une technique extrêmement puissante pour un consultant technique comme vous, car elle transforme le LLM en un service d'API prédictible que vous pouvez intégrer de manière fiable dans des processus métier.

L'article suivant fournit un exemple parfait et concret pour un cas de classification de tickets de support.

Building AI Workers with n8n: A Practical Guide Using OpenAI ...

L'article "Building AI Workers with n8n" sur Medium.com détaille la création d'un classificateur de tickets intelligent. Nous allons nous concentrer sur la partie la plus importante : le prompt.

Lisez attentivement la section "Step 4: Call the AI model". Portez une attention particulière au "Example system message". Analysez sa structure : Rôle : You are a support ticket classifier. Règles critiques de formatage : Il insiste pour que la sortie soit UNIQUEMENT un JSON valide, sans texte additionnel. C'est la clé de la robustesse. Logique de classification : Il définit les règles pour assigner les priorités. Format de sortie exact : Il spécifie la structure du JSON attendu (priority, category, summary). Cet exemple de prompt est une excellente base pour notre exercice.


Exercice Pratique : Construction d'un Classificateur de Tickets de Support

Mettons cela en pratique. Nous allons construire un workflow qui reçoit un ticket de support, le classifie en utilisant la méthode du "prompt engineering", et prépare le terrain pour le router.

Scénario : Vous gérez les demandes entrantes pour un service client. Vous voulez automatiquement déterminer la catégorie et la priorité de chaque demande.

Votre workflow :

  1. Déclencheur : Commencez avec un nœud Manual (ou When Chat Message Received si vous préférez tester en mode interactif). Pour simuler une entrée, nous allons utiliser une variable simple.

  2. Nœud Set : Ajoutez un nœud Set. Créez un champ nommé ticket_body et collez-y le texte suivant pour notre premier test :

    Bonjour, je n'arrive plus à me connecter. J'ai essayé de réinitialiser mon mot de passe mais je ne reçois pas l'email. Mon compte est bloqué et c'est urgent.

  3. Nœud AI Agent : Ajoutez un nœud AI Agent.

    • Source for Prompt : Changez pour Define Below.
    • User Message : Entrez l'expression {{ $json.ticket_body }} pour passer le texte de notre ticket.
    • System Prompt : C'est ici que nous appliquons ce que nous avons appris. Adaptez le prompt de l'article LINK en français. Voici une base solide :
    Tu es un expert en classification de tickets de support. Analyse le ticket ci-dessous et retourne UNIQUEMENT un objet JSON valide, sans aucun texte ou formatage supplémentaire comme \`\`\`json.
    
    
    
    
    ### RÈGLES CRITIQUES :
    - La sortie doit être exclusivement un objet JSON valide.
    - Pas d'explication avant ou après le JSON.
    
    
    
    
    ### FORMAT DE SORTIE :
    {
      "categorie": "nom_de_la_categorie",
      "priorite": "niveau_de_priorite",
      "resume": "un résumé très court en une phrase"
    }
    
    
    
    
    ### NIVEAUX DE PRIORITÉ POSSIBLES :
    - "Haute" : Problèmes bloquants (accès au compte, paiement, perte de données, erreur critique).
    - "Moyenne" : Bugs non critiques, questions fonctionnelles.
    - "Basse" : Questions générales, demandes d'information.
    
    
    
    
    ### CATÉGORIES POSSIBLES :
    - "Compte" : Problèmes de connexion, mot de passe, profil utilisateur.
    - "Facturation" : Questions sur les paiements, abonnements, factures.
    - "Technique" : Bugs, erreurs de la plateforme, problèmes de performance.
    - "Général" : Questions qui ne rentrent pas dans les autres catégories.
    
  4. Connectez le Chat Model : Comme dans la leçon précédente, connectez un nœud OpenAI Chat Model à votre AI Agent, en utilisant votre credential et le modèle gpt-4o-mini.

  5. Exécutez le workflow.

Analyser le Résultat

Après l'exécution, inspectez la sortie du nœud AI Agent. Vous devriez voir dans la section Message un objet JSON parfaitement formaté, quelque chose comme :

{
  "categorie": "Compte",
  "priorite": "Haute",
  "resume": "L'utilisateur ne peut pas se connecter car la réinitialisation du mot de passe ne fonctionne pas."
}

C'est là que la puissance se révèle : vous avez transformé un texte en données structurées, prêtes à être utilisées par le reste de votre workflow.


4. Router la Logique avec un Nœud Switch

Maintenant que nous avons une sortie structurée, nous pouvons l'utiliser pour la logique de branchement.

  1. Nœud Edit Fields (ou Set) : La sortie du LLM est une chaîne de caractères (string) qui ressemble à un JSON. Nous devons la convertir en un véritable objet JSON. Ajoutez un nœud Edit Fields après l'agent.

    • Créez un champ, par exemple classified_data.
    • Activez l'expression (</>) pour ce champ.
    • Utilisez la fonction JSON.parse() sur la sortie de l'agent. L'expression ressemblera à ceci : {{ JSON.parse($json.choices[0].message.content) }}. Assurez-vous de bien cibler le champ contenant la réponse du LLM.
  2. Nœud Switch : Ajoutez un nœud Switch après le Edit Fields. Vous l'avez déjà utilisé dans le Module 1.

    • Dans Property to Match, ciblez la priorité que nous venons d'extraire : {{ $json.classified_data.priorite }}.
    • Routing Rules : Ajoutez une règle pour le cas Haute.
      • Operation : Equals
      • Value : Haute

Le nœud Switch aura maintenant deux sorties : une pour la Haute priorité et une Default pour les autres. Vous pouvez y connecter des actions spécifiques (par exemple, un nœud de notification Slack pour les cas urgents).

Voici à quoi peuvent ressembler de tels workflows dans un contexte réel :

AI Customer Support Workflow in n8n
Ce workflow illustre comment une requête entrante (`Webhook`) est traitée par un `AI Agent`, puis un nœud `Switch` la route en fonction de la catégorie identifiée par l'IA (`order_status`, `product_recommendations`, `support_ticket`).
n8n Workflow for Automated Ticket Classification and Management with LLM
Cet autre exemple montre un système plus complexe où des tickets HubSpot sont récupérés, puis un "Category Classifier" utilisant un modèle OpenAI détermine la catégorie avant de créer une tâche dans Jira. Votre exercice est la première brique d'un tel système.

Conclusion

Félicitations ! Vous avez considérablement augmenté la capacité de vos workflows n8n. Vous êtes passé de l'envoi de simples prompts à l'utilisation d'un LLM pour une tâche d'analyse structurée.

Points clés à retenir :

  • Il existe deux méthodes principales pour la classification : le nœud spécialisé Text Classifier pour les cas simples, et le prompt engineering avec un AI Agent pour une flexibilité maximale.
  • La technique la plus importante pour des automatisations IA robustes est de contraindre le LLM à répondre dans un format de données strict, comme le JSON.
  • Le System Prompt est votre outil principal pour définir le rôle, les règles, et le format de sortie attendu du LLM.
  • Une fois les données classifiées et structurées (via JSON.parse()), vous pouvez utiliser des nœuds standards comme Switch pour appliquer une logique métier complexe.

Dans la prochaine leçon, nous aborderons une autre tâche fondamentale du traitement de texte : utiliser un LLM pour résumer des documents longs ou des fils d'emails. Cette compétence, combinée à la classification, vous permettra de construire des systèmes de gestion documentaire et de communication extrêmement sophistiqués.