Skip to main content

Welcome to a Grasp lesson

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

Lesson 56

Chaînage de Prompts LLM : Sortie vers Entrée

Recommended resources

Bonjour !

Dans la leçon précédente, nous avons appris à surmonter les limites de la fenêtre de contexte des LLM en utilisant le nœud Summarization Chain et la méthode Map-Reduce pour résumer des textes longs. Cette technique, qui consiste à traiter des morceaux de texte en parallèle avant de combiner les résultats, est très puissante.

Aujourd'hui, nous allons explorer une autre architecture IA fondamentale : le chaînage de prompts séquentiel. L'objectif est de décomposer une tâche complexe non pas en morceaux parallèles, mais en une série d'étapes logiques où la sortie d'un premier appel LLM sert d'entrée au suivant. C'est comme construire une chaîne de raisonnement pour l'IA, ce qui permet d'obtenir des résultats beaucoup plus structurés et de haute qualité que ce qu'un seul prompt monolithique pourrait produire.

Cette leçon vous montrera comment implémenter ce patron de conception, qui est au cœur de nombreuses applications d'IA sophistiquées.

1. Le "Chaînage de Requêtes" : Un Patron de Conception Fondamental

Le chaînage de prompts n'est pas une simple astuce, c'est un patron de conception (design pattern) robuste. En ingénierie, un patron de conception est une solution générale et réutilisable à un problème courant. Pour les workflows IA, le "chaînage de requêtes" est la solution au problème de la "tâche trop complexe pour un seul prompt".

L'image ci-dessous illustre une version complexe de ce patron. Un processus de génération de contenu est décomposé en recherche, sélection, rédaction de sections, puis agrégation finale. Chaque étape alimente la suivante.

Workflow de Génération de Contenu avec IA et Chaînage de Prompts
Ce diagramme illustre un workflow de génération de contenu complexe utilisant le chaînage. Des étapes de recherche (Tavily) et de rédaction (OpenAI) s'enchaînent pour produire le résultat final.

Pour bien comprendre la théorie derrière ce concept, je vous propose de lire un court extrait d'un article du blog n8n qui le définit formellement.

AI agentic workflows: a practical guide for n8n automation

Cet article, "AI agentic workflows: a practical guide for n8n automation", bien que centré sur les agents IA, contient une excellente définition du patron de conception qui nous intéresse aujourd'hui.

Lisez la section intitulée "Example 1. Chained requests". Concentrez-vous sur la définition, les bénéfices clés ("Key benefits") et le fonctionnement ("How it works").

Comme vous l'avez lu, les points essentiels à retenir sont :

  • Logique rigide, composants flexibles : La séquence des étapes est prédéfinie (Idée -> Plan -> Article), mais le prompt de chaque étape peut être ajusté et amélioré indépendamment.
  • Raffinement indépendant : Si la génération du plan n'est pas satisfaisante, vous pouvez vous concentrer uniquement sur le prompt de cette étape sans toucher au reste du workflow.
  • Idéal pour les processus multi-étapes : Parfait pour des tâches comme la génération de rapports, l'enrichissement de données ou, comme nous allons le voir, la rédaction d'articles.

2. Démonstration Pratique : Générateur d'Articles en Chaîne

Passons maintenant à la pratique. Nous allons analyser un workflow qui génère un article de blog complet en décomposant la tâche en quatre appels LLM séquentiels.

La vidéo suivante, bien qu'en anglais, est une démonstration parfaite de ce processus. Je vais détailler chaque étape en français pour que vous puissiez suivre la logique.

n8n Tutorial #8: Integrate AI Using Sequential LLM Chaining

Cette vidéo de Ben Young AI, intitulée "n8n Tutorial #8: Integrate AI Using Sequential LLM Chaining", est la ressource centrale de cette leçon. Elle montre pas à pas comment construire une chaîne de prompts.

Regardez attentivement la section de 05:07 à 10:18. L'auteur y présente un workflow déjà construit et explique le rôle de chaque nœud LLM dans la chaîne. Ne vous préoccupez pas de reproduire le workflow pour l'instant, concentrez-vous sur la logique de l'enchaînement.

Analyse de la Chaîne de Prompts

Le workflow présenté dans la vidéo est un exemple parfait de spécialisation des tâches. Plutôt que de demander à l'IA "Écris-moi un article sur le jardinage d'intérieur", on lui demande de suivre un processus de réflexion structuré :

  1. Nœud 1 : Génération d'Idées (Ideas)

    • Entrée : Le sujet de l'utilisateur (ex: "Indoor gardening").
    • Prompt : "Nous allons écrire un article sur [sujet]. Propose 10 idées intéressantes pour un article de 1000 mots. Liste uniquement les 10 idées, rien d'autre."
    • Sortie : Une liste de 10 titres/angles potentiels.
  2. Nœud 2 : Création du Plan (Outline)

    • Entrée : La liste d'idées du nœud 1.
    • Prompt : "Sélectionne la meilleure idée parmi la liste ci-dessous [sortie du nœud 1]. Écris un plan engageant et complet pour un article de 1000 mots. Tu dois inclure des contre-arguments. Formate la sortie en JSON avec les clés selected_idea et outline."
    • Sortie : Un objet JSON contenant l'idée choisie et un plan détaillé.
  3. Nœud 3 : Création du Titre (Headline)

    • Entrée : Le plan du nœud 2 et une liste d'exemples de titres percutants (fournie statiquement dans le prompt).
    • Prompt : "En te basant sur ces exemples de titres [exemples] et le plan suivant [sortie du nœud 2], crée un titre unique et intrigant."
    • Sortie : Une seule phrase, le titre final de l'article.
  4. Nœud 4 : Rédaction de l'Article (Article)

    • Entrées : Le titre du nœud 3 et le plan du nœud 2.
    • Prompt : "Voici le titre [sortie du nœud 3] et le plan [sortie du nœud 2] d'un article. Ta tâche est de rédiger l'article de 1000 mots en suivant le plan. Assure-toi que le contenu est fluide et cohérent."
    • Sortie : Le texte complet de l'article.

Ce qui est remarquable ici, c'est comment chaque nœud utilise la sortie du ou des précédents. Par exemple, le nœud de rédaction de l'article utilise une expression qui ressemble à {{ $('Headline').item.json.text }} pour récupérer le titre et {{ $('Outline').item.json.text }} pour le plan. C'est l'essence même du chaînage.

n8n Basic LLM Chain Node Configuration for Prompt Source
Cette capture d'écran montre comment, dans l'interface de n8n, on peut définir un prompt en utilisant les données d'un nœud précédent via des expressions, ce qui est la mécanique fondamentale du chaînage.

3. Exercice : Chaîne d'Enrichissement de Données d'Entreprise

Construisons maintenant notre propre chaîne, plus simple, mais basée sur un cas d'usage métier très courant : la prospection commerciale.

Objectif : Créer un workflow qui, à partir d'un nom d'entreprise, identifie son secteur d'activité, puis génère une phrase d'accroche personnalisée pour un email de vente.

Votre Workflow :

  1. Déclencheur Manual ou Start.

  2. Nœud Set : Pour définir notre entrée.

    • Créez un champ de type String nommé companyName.
    • Donnez-lui la valeur Microsoft.
  3. Nœud Basic LLM Chain (Étape 1 : Identifier le secteur)

    • Nommez ce nœud Identifier Secteur.
    • Prompt :
      Dans quel secteur d'activité principal opère l'entreprise '{{ $json.companyName }}' ? Réponds uniquement avec le nom du secteur (par exemple : 'Technologie', 'Automobile', 'Finance').
      
    • Connectez un modèle de chat (ex: OpenAI Chat Model) à ce nœud.
  4. Nœud Basic LLM Chain (Étape 2 : Générer l'accroche)

    • Connectez la sortie du nœud Identifier Secteur à l'entrée de ce nouveau nœud.
    • Nommez ce nœud Générer Accroche.
    • Prompt :
      Rédige une phrase d'accroche de 20 mots pour un email de prospection destiné à l'entreprise '{{ $('Set').item.json.companyName }}'. L'accroche doit mentionner que cette entreprise est un leader dans le secteur '{{ $json.text }}' et suggérer subtilement comment nos services peuvent améliorer un de leurs processus clés.
      
    • Attention : Notez bien les expressions ici.
      • {{ $('Set').item.json.companyName }} : Nous récupérons le nom de l'entreprise depuis le nœud Set du début.
      • {{ $json.text }} : Nous récupérons le secteur d'activité qui est la sortie directe (text) du nœud précédent (Identifier Secteur).
    • Connectez un modèle de chat à ce nœud également.
  5. Exécution et Vérification :

    • Exécutez le workflow.
    • Inspectez la sortie du nœud Identifier Secteur. Elle devrait contenir quelque chose comme "Technologie".
    • Inspectez la sortie du nœud Générer Accroche. Elle devrait contenir une phrase personnalisée, par exemple : "En tant que pionnier du secteur de la technologie, optimiser la gestion de vos projets d'innovation est crucial, et nous avons la solution."

Solution (Workflow JSON)

Comme convenu, voici le code JSON du workflow de l'exercice. Vous pouvez le copier (Ctrl+C) et le coller directement dans votre canevas n8n (Ctrl+V) pour l'importer. Pensez à assigner vos propres credentials pour les nœuds OpenAI.

{
  "name": "Chaîne d'enrichissement de données",
  "nodes": [
    {
      "parameters": {},
      "id": "23c2a05d-e08b-40b6-8f35-bd5780a423f0",
      "name": "Start",
      "type": "n8n-nodes-base.start",
      "typeVersion": 1,
      "position": [
        240,
        300
      ]
    },
    {
      "parameters": {
        "values": {
          "string": [
            {
              "name": "companyName",
              "value": "Microsoft"
            }
          ]
        },
        "options": {}
      },
      "id": "e818816c-e5ff-4ab4-9580-c081e64908a8",
      "name": "Set",
      "type": "n8n-nodes-base.set",
      "typeVersion": 1,
      "position": [
        460,
        300
      ]
    },
    {
      "parameters": {
        "prompt": "Dans quel secteur d'activité principal opère l'entreprise '{{ $json.companyName }}' ? Réponds uniquement avec le nom du secteur (par exemple : 'Technologie', 'Automobile', 'Finance')."
      },
      "id": "0d20d4f6-821f-4e00-a0a3-bb39f99f3484",
      "name": "Identifier Secteur",
      "type": "n8n-nodes-langchain.chainllmBasic",
      "typeVersion": 1,
      "position": [
        680,
        300
      ]
    },
    {
      "parameters": {},
      "id": "d0571168-ff7d-4340-9284-88e84dfa1b15",
      "name": "OpenAI Chat Model",
      "type": "n8n-nodes-langchain.chatOpenai",
      "typeVersion": 1,
      "position": [
        680,
        520
      ],
      "credentials": {
        "openAiApi": {
          "id": "YOUR_CREDENTIAL_ID",
          "name": "YOUR_CREDENTIAL_NAME"
        }
      }
    },
    {
      "parameters": {
        "prompt": "Rédige une phrase d'accroche de 20 mots pour un email de prospection destiné à l'entreprise '{{ $('Set').item.json.companyName }}'. L'accroche doit mentionner que cette entreprise est un leader dans le secteur '{{ $json.text }}' et suggérer subtilement comment nos services peuvent améliorer un de leurs processus clés."
      },
      "id": "a97a3a0e-47de-4be0-8809-77f6eb04f58c",
      "name": "Générer Accroche",
      "type": "n8n-nodes-langchain.chainllmBasic",
      "typeVersion": 1,
      "position": [
        900,
        300
      ]
    },
    {
      "parameters": {},
      "id": "e229a43a-7d40-42fe-bd34-f8d227572bd0",
      "name": "OpenAI Chat Model1",
      "type": "n8n-nodes-langchain.chatOpenai",
      "typeVersion": 1,
      "position": [
        900,
        520
      ],
      "credentials": {
        "openAiApi": {
          "id": "YOUR_CREDENTIAL_ID",
          "name": "YOUR_CREDENTIAL_NAME"
        }
      }
    }
  ],
  "connections": {
    "Start": {
      "main": [
        [
          {
            "node": "Set",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set": {
      "main": [
        [
          {
            "node": "Identifier Secteur",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Identifier Secteur": {
      "main": [
        [
          {
            "node": "Générer Accroche",
            "type": "main",
            "index": 0
          }
        ]
      ],
      "model": [
        [
          {
            "node": "OpenAI Chat Model",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Générer Accroche": {
      "model": [
        [
          {
            "node": "OpenAI Chat Model1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Conclusion

Félicitations ! Vous avez maintenant ajouté à votre arsenal une technique d'ingénierie de prompts extrêmement puissante et polyvalente.

Points clés à retenir :

  • Le chaînage de prompts consiste à décomposer une tâche complexe en une séquence d'appels LLM où chaque étape utilise la sortie de la précédente.
  • Ce patron améliore considérablement la qualité, la fiabilité et la contrôlabilité de vos workflows IA par rapport à un unique prompt complexe.
  • Dans n8n, il s'implémente simplement en connectant des nœuds IA (comme Basic LLM Chain) en série et en utilisant des expressions pour faire circuler les données d'un nœud à l'autre.

Nous arrivons à la fin de nos modules thématiques. Vous avez exploré les fondamentaux, la manipulation de données, les APIs, et maintenant les workflows IA avancés. Vous êtes prêt pour la suite.

La prochaine leçon marque le début du projet final de synthèse. Nous commencerons par la première partie : concevoir et documenter l'architecture d'un système d'automatisation complet à partir d'un cahier des charges qui vous sera fourni. Il sera temps de mettre en pratique tout ce que vous avez appris