Pourquoi ce sujet est important
Dans n8n, un LLM doit être traité comme un composant probabiliste au milieu d’un workflow déterministe. Il peut interpréter ou proposer, mais le workflow doit valider ses sorties et garder le contrôle des actions.
Choisir le bon pattern
Les usages robustes sont classification, extraction structurée, résumé, rédaction assistée et routage. Un agent autonome n’est utile que si le choix dynamique d’outils apporte une valeur. Pour des étapes connues, préférez une chaîne fixe avec branches explicites.
Exiger une sortie structurée
Définissez un schéma JSON avec champs, types et valeurs autorisées. Validez la réponse dans un nœud déterministe. Si elle est invalide, tentez une réparation bornée ou envoyez en revue. Ne construisez pas des actions à partir de texte libre fragile.
Séparer proposition et exécution
Le LLM peut préparer un email, choisir une catégorie ou proposer une mise à jour. Un autre nœud vérifie destinataire, droits, montant, limites et règle métier avant l’action. Ajoutez une approbation humaine pour suppression, paiement, publication ou communication sensible.
Gérer les erreurs
Distinguez timeout, quota, refus, sortie invalide et erreur outil. Réessayez seulement les erreurs transitoires avec backoff et limite. Routez les échecs persistants vers une file de revue. Stockez un identifiant de corrélation et rendez les écritures idempotentes.
Protéger données et secrets
Utilisez les credentials n8n, jamais le prompt. Minimisez les données, masquez PII et traitez documents externes comme non fiables. Le modèle ne doit pas accéder librement à tous les connecteurs du workflow. Séparez environnements et rôles.
Mesurer coût et qualité
Enregistrez modèle, version du prompt, tokens, latence, résultat de validation et décision humaine. Calculez le coût par résultat accepté. Conservez un jeu d’exemples pour comparer un changement de fournisseur ou de modèle.
Préparer la production
Versionnez les workflows, documentez entrées et sorties, configurez alertes et branches d’erreur. Testez reprise après interruption et doublons. Un workflow visuel nécessite les mêmes revues et contrôles qu’un service codé.
Exemple concret
Un workflow reçoit des demandes clients. Le LLM extrait produit, urgence et résumé dans un schéma. n8n valide les champs, vérifie le client dans le CRM et propose une priorité. Seules les demandes à faible risque sont routées automatiquement ; les cas ambigus passent en revue.
Les erreurs fréquentes
- utiliser du texte libre pour piloter une action
- réessayer toutes les erreurs sans limite
- donner les credentials au modèle
- confondre compatibilité API et comportement identique
- ne pas rendre les écritures idempotentes
- publier automatiquement dès le premier prototype
Checklist
- [ ] Cas d’usage et risque définis
- [ ] Schéma de sortie validé
- [ ] Actions séparées des propositions
- [ ] Retries bornés et branches d’erreur
- [ ] Credentials hors prompts
- [ ] Données minimisées
- [ ] Coût par résultat suivi
- [ ] Revue humaine sur actions sensibles
FAQ
Agent ou chaîne fixe ?
Préférez une chaîne fixe lorsque les étapes sont connues. Un agent ajoute variabilité et coût.
Comment changer de fournisseur ?
Gardez un contrat interne, versionnez les prompts et rejouez le même jeu d’évaluation.
Comment éviter les doublons ?
Utilisez une clé d’idempotence issue de l’événement métier et stockez le statut de traitement.
Peut-on publier automatiquement ?
Oui seulement après validation du risque, contrôles, seuils et procédure de retour arrière.
Pattern concret : appel robuste avec réponse structurée
Dans un nœud Code, préparez une charge utile bornée plutôt que de transmettre tout l’objet entrant :
const input = String($json.message ?? '').slice(0, 4000)
return [{ json: {
model: 'gpt-4.1-mini',
input,
text: { format: {
type: 'json_schema',
name: 'triage',
schema: {
type: 'object',
properties: {
category: { type: 'string', enum: ['support', 'sales', 'other'] },
confidence: { type: 'number', minimum: 0, maximum: 1 }
},
required: ['category', 'confidence'],
additionalProperties: false
},
strict: true
}}
}}]Configurez le nœud HTTP avec un délai maximal, deux ou trois tentatives et une attente exponentielle. Après l’appel, un nœud IF doit refuser une confiance insuffisante et envoyer le cas vers une file de revue humaine. Utilisez une clé d’idempotence dérivée de l’identifiant métier pour éviter un double envoi lors d’une relance. Journalisez l’identifiant de requête, le modèle, la latence et les tokens, mais jamais le prompt brut lorsqu’il contient des données personnelles.