Intégrer une IA pour analyser et catégoriser automatiquement chaque message entrant.
📖 COURS
1) LE POUVOIR DE L'IA POUR LA CLASSIFICATION DE TEXTE
La classification de texte est une tâche fondamentale du Traitement Automatisé du Langage Naturel (NLP). Elle consiste à assigner une ou plusieurs catégories prédéfinies à un texte. Dans notre cas, les catégories sont simples : `PRO` et `PERSO`.
Pour accomplir cela, nous allons utiliser un **Grand Modèle de Langage (LLM)**, comme ceux proposés par OpenAI (le créateur de ChatGPT), Anthropic, ou Mistral AI. Ces modèles sont entraînés sur d'immenses quantités de texte et sont devenus extraordinairement doués pour comprendre les nuances du langage humain.
2) COMMENT ÇA MARCHE ? LE "PROMPTING"
Nous n'allons pas "programmer" l'IA au sens traditionnel. À la place, nous allons lui parler en langage naturel. Nous allons créer une instruction, appelée un **"prompt"**, qui explique à l'IA la tâche qu'elle doit accomplir.
Un prompt efficace pour notre cas d'usage pourrait ressembler à :
`"Tu es un assistant de classification. Analyse le message suivant et détermine s'il est de nature 'PRO' (professionnel) ou 'PERSO' (personnel). Ne réponds que par 'PRO' ou 'PERSO'. Voici le message : [texte du message ici]"`
En envoyant cette instruction (le prompt) avec le message WhatsApp au LLM, celui-ci nous retournera la catégorie souhaitée.
3) L'AIGUILLAGE DANS N8N : LE NŒUD "IF"
Une fois que l'IA nous a donné la catégorie (`PRO` ou `PERSO`), nous devons orienter le message dans la bonne direction. Pour cela, n8n dispose d'un nœud fondamental : le nœud **"IF"**.
Le nœud "IF" fonctionne comme un aiguillage de chemin de fer. Il examine une valeur (la réponse de l'IA) et, en fonction de cette valeur, il envoie les données sur une branche ou une autre du workflow. Par exemple :
- **SI** la réponse est `PRO`, alors suivre la branche "Traitement Professionnel".
- **SINON**, suivre la branche "Traitement Personnel".
🗝️ POINTS CLÉS
1) IA POUR LA COMPRÉHENSION
- Nous utilisons un LLM pour "lire" et "comprendre" le contenu de chaque message.
2) LE PROMPT EST LA CLÉ
- La qualité de l'instruction que nous donnons à l'IA (le prompt) détermine la qualité de sa réponse.
3) CLASSIFICATION BINAIRE
- Notre objectif est simple : classer chaque message dans l'une des deux catégories (`PRO` / `PERSO`).
4) LE NŒUD IF POUR L'ACTION
- Le nœud "IF" est essentiel pour créer des logiques conditionnelles et diriger le flux de travail en fonction des résultats de l'IA.
💪 PRATIQUE
PRÉREQUIS
1) **Workflow du Module 1** : Assurez-vous que votre workflow avec le webhook WhatsApp est fonctionnel.
2) **Un compte OpenAI** : Pour ce guide, nous utiliserons OpenAI car il est très simple à intégrer. Créez un compte sur [https://platform.openai.com/](https://platform.openai.com/).
3) **Une clé API OpenAI** : Une fois votre compte créé, allez dans la section "API Keys" et créez une nouvelle clé secrète. Copiez-la et conservez-la précieusement.
1) AJOUTER LES IDENTIFIANTS (CREDENTIALS) OPENAI DANS N8N
Pour que n8n puisse communiquer avec OpenAI, vous devez d'abord enregistrer votre clé API de manière sécurisée.
1) Dans votre interface n8n, allez dans le menu de gauche : **"Credentials"**.
2) Cliquez sur **"Add Credential"**.
3) Cherchez **"OpenAI API"** et sélectionnez-le.
4) Donnez un nom à votre credential (ex: `Mon OpenAI`).
5) Dans le champ **"API Key"**, collez la clé API secrète que vous avez obtenue d'OpenAI.
6) Cliquez sur **"Save"**.
2) AJOUTER LE NŒUD OPENAI À VOTRE WORKFLOW
1) Retournez à votre workflow.
2) Supprimez le nœud "HTTP Request" que nous avions ajouté à la fin du Module 1 pour la réponse. Nous allons le réinsérer plus tard.
3) Cliquez sur le `+` après votre nœud **"Webhook"**.
4) Cherchez et sélectionnez le nœud **"OpenAI Chat"** (ou "OpenAI" puis "Chat Model").
3) CONFIGURER LE NŒUD OPENAI CHAT
C'est ici que nous allons construire notre fameux "prompt".
1) Dans les paramètres du nœud OpenAI :
- **Credential for OpenAI API** : Choisissez le credential que vous venez de créer (`Mon OpenAI`).
- **Model** : Choisissez un modèle. `gpt-3.5-turbo` est un excellent choix pour commencer (rapide et peu coûteux).
- **Resource** : `Chat`.
- **Operation** : `Completion`.
2) Maintenant, dans la section **"Messages"**, nous allons définir le prompt :
- Laissez le premier item avec le rôle **"System"**. Dans le champ **"Content"**, écrivez l'instruction de base pour l'IA :
```
Tu es un assistant expert en classification de texte. Ta seule tâche est de déterminer si un message est de nature "PRO" (professionnel, lié au travail, à une demande client, une question sur un service) ou "PERSO" (personnel, amical, spam, non lié au travail). Tu dois répondre UNIQUEMENT par le mot "PRO" ou le mot "PERSO", sans aucune autre ponctuation ou phrase.
```
- Cliquez sur **"Add Message Item"**.
- Le rôle de ce deuxième item doit être **"User"**. C'est ici que nous allons insérer le message de l'utilisateur.
- Cliquez dans le champ **"Content"** et ouvrez l'éditeur d'expression.
- Naviguez dans les données du webhook pour trouver le contenu du message : `Nodes` -> `Webhook` -> `Output Data` -> `JSON` -> `body` -> `entry` -> `0` -> `changes` -> `0` -> `value` -> `messages` -> `0` -> `text` -> `body`.
- L'expression devrait ressembler à : `{{$json["body"]["entry"][0]["changes"][0]["value"]["messages"][0]["text"]["body"]}}`
4) AJOUTER L'AIGUILLAGE AVEC LE NŒUD "IF"
1) Cliquez sur le `+` après le nœud OpenAI.
2) Cherchez et ajoutez le nœud **"IF"**.
3) Dans les paramètres du nœud IF, nous allons créer une condition :
- Cliquez sur **"Add Condition"**.
- Dans la section **"Value 1"**, nous allons récupérer la réponse de l'IA. Ouvrez l'éditeur d'expression.
- Naviguez vers la sortie du nœud OpenAI : `Nodes` -> `OpenAI Chat` -> `Output Data` -> `JSON` -> `choices` -> `0` -> `message` -> `content`.
- L'expression sera : `{{$json["choices"][0]["message"]["content"]}}`
- **Operation** : `String` -> `Contains`.
- **Value 2** : Tapez `PRO`.
4) Le nœud IF a maintenant deux sorties : `true` (pour les messages professionnels) et `false` (pour les messages personnels).
❓ FAQ
1) L'IA SE TROMPE PARFOIS DANS LA CLASSIFICATION. COMMENT L'AMÉLIORER ?
La qualité de la classification dépend à 90% de la qualité de votre prompt. Vous pouvez l'améliorer en :
- **Donnant des exemples (Few-shot prompting)** : Modifiez votre prompt système pour inclure des exemples clairs. Ex: `"... Voici des exemples. Message: 'salut ca va ?', Réponse: 'PERSO'. Message: 'bonjour je voudrais un devis', Réponse: 'PRO'."`
- **Utilisant un meilleur modèle** : `gpt-4` est plus intelligent mais plus cher et plus lent. Testez différents modèles pour trouver le bon équilibre.
2) COMBIEN COÛTE L'UTILISATION DE L'API OPENAI ?
Le coût est très faible pour la classification de texte. Il est basé sur le nombre de "tokens" (des morceaux de mots) que vous envoyez et recevez. Pour des milliers de messages, le coût ne sera que de quelques centimes. Surveillez votre consommation sur votre tableau de bord OpenAI.
3) PUIS-JE AVOIR PLUS DE DEUX CATÉGORIES ?
Absolument ! Il vous suffit de :
- Mettre à jour votre prompt OpenAI pour lister toutes les catégories possibles (ex: `PRO`, `PERSO`, `SPAM`, `SUPPORT`).
- Modifier votre logique dans n8n. Au lieu d'un nœud IF, vous pourriez utiliser un nœud **"Switch"**, qui est comme un nœud IF avec plusieurs sorties, une pour chaque catégorie.
🧠 QUIZ
1) QU'EST-CE QU'UN "PROMPT" DANS LE CONTEXTE D'UN LLM ?
* a) Un type de nœud dans n8n.
* b) L'instruction en langage naturel donnée à l'IA pour qu'elle accomplisse une tâche.
* c) La réponse finale de l'IA.
* d) Un paramètre de sécurité de l'API OpenAI.
...
Réponse : B
2) QUEL NŒUD N8N EST UTILISÉ POUR CRÉER DES BRANCHES CONDITIONNELLES BASÉES SUR LA RÉPONSE DE L'IA ?
* a) Le nœud Webhook.
* b) Le nœud OpenAI Chat.
* c) Le nœud IF.
* d) Le nœud HTTP Request.
...
Réponse : C
3) POUR AMÉLIORER LA FIABILITÉ DE LA CLASSIFICATION DE L'IA, QUELLE EST LA MEILLEURE STRATÉGIE ?
* a) Rendre le prompt plus court.
* b) Utiliser un modèle d'IA moins puissant.
* c) Ajouter des exemples concrets (few-shot prompting) dans le prompt système.
* d) Supprimer le nœud IF.
...
Réponse : C