Workflow n8n

Automatisation n8n : chat avec une base de données PostgreSQL

Ce workflow n8n a pour objectif de faciliter les interactions avec une base de données PostgreSQL via un système de chat. Dans un contexte où les entreprises cherchent à optimiser leur gestion des données, ce workflow permet aux utilisateurs de poser des questions en langage naturel et d'obtenir des réponses précises en temps réel. Cela est particulièrement utile pour les équipes de data analysts, les développeurs et les responsables de projets qui ont besoin d'accéder rapidement à des informations critiques sans passer par des requêtes SQL complexes.

  • Étape 1 : Le déclencheur 'When chat message received' capte les messages envoyés dans le chat. Ensuite, l'étape 2 utilise le noeud 'AI Agent' pour traiter le message et déterminer la réponse appropriée. L'étape 3, avec le modèle de chat OpenAI, génère des réponses basées sur le contexte de la conversation. Pour obtenir des informations précises, l'étape 4 'Get Table Definition' interroge la structure de la base de données, tandis que l'étape 10 'Execute SQL Query' exécute les requêtes nécessaires pour fournir des données pertinentes. Enfin, les noeuds 'Sticky Note' sont utilisés pour afficher les résultats de manière visuelle et organisée. Les bénéfices de ce workflow incluent une réduction significative du temps nécessaire pour accéder aux données, une amélioration de la collaboration entre les équipes et une augmentation de la productivité grâce à une interface de chat intuitive. En intégrant ce type d'automatisation n8n, les entreprises peuvent transformer leur manière d'interagir avec leurs bases de données, rendant l'accès à l'information plus fluide et efficace.
Tags clés :automatisationPostgreSQLchatn8nintelligence artificielle
Catégorie: Webhook · Tags: automatisation, PostgreSQL, chat, n8n, intelligence artificielle0

Workflow n8n PostgreSQL, chat, intelligence artificielle : vue d'ensemble

Schéma des nœuds et connexions de ce workflow n8n, généré à partir du JSON n8n.

Workflow n8n PostgreSQL, chat, intelligence artificielle : détail des nœuds

  • When chat message received

    Ce noeud déclenche le workflow lorsqu'un message de chat est reçu.

  • AI Agent

    Ce noeud représente un agent d'intelligence artificielle qui traite les messages reçus.

  • OpenAI Chat Model

    Ce noeud utilise le modèle de chat OpenAI pour générer des réponses basées sur les entrées.

  • Get Table Definition

    Ce noeud récupère la définition d'une table depuis une base de données PostgreSQL.

  • Sticky Note

    Ce noeud crée une note autocollante avec des paramètres de couleur, de taille et de contenu spécifiés.

  • Chat History

    Ce noeud gère l'historique des chats en utilisant un tampon de mémoire.

  • Sticky Note3

    Ce noeud crée une troisième note autocollante avec des paramètres de couleur, de taille et de contenu.

  • Sticky Note1

    Ce noeud crée une première note autocollante avec des paramètres de couleur, de taille et de contenu.

  • Sticky Note2

    Ce noeud crée une deuxième note autocollante avec des paramètres de couleur, de taille et de contenu.

  • Execute SQL Query

    Ce noeud exécute une requête SQL sur une base de données PostgreSQL.

  • Get DB Schema and Tables List

    Ce noeud récupère le schéma de la base de données et la liste des tables.

Inscris-toi pour voir l'intégralité du workflow

Inscription gratuite

S'inscrire gratuitementBesoin d'aide ?
{
  "id": "eOUewYsEzJmQixI6",
  "meta": {
    "instanceId": "77c4feba8f41570ef06dc76ece9a6ded0f0d44f7f1477a64c2d71a8508c11faa",
    "templateCredsSetupCompleted": true
  },
  "name": "Chat with Postgresql Database",
  "tags": [],
  "nodes": [
    {
      "id": "6501a54f-a68c-452d-b353-d7e871ca3780",
      "name": "When chat message received",
      "type": "@n8n/n8n-nodes-langchain.chatTrigger",
      "position": [
        -300,
        -80
      ],
      "webhookId": "cf1de04f-3e38-426c-89f0-3bdb110a5dcf",
      "parameters": {
        "options": {}
      },
      "typeVersion": 1.1
    },
    {
      "id": "cd32221b-2a36-408d-b57e-8115fcd810c9",
      "name": "AI Agent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        0,
        -80
      ],
      "parameters": {
        "agent": "openAiFunctionsAgent",
        "options": {
          "systemMessage": "You are DB assistant. You need to run queries in DB aligned with user requests.\n\nRun custom SQL query to aggregate data and response to user. Make sure every table has schema prefix to it in sql query which you can get from `Get DB Schema and Tables List` tool.\n\nFetch all data to analyse it for response if needed.\n\n## Tools\n\n- Execute SQL query - Executes any sql query generated by AI\n- Get DB Schema and Tables List - Lists all the tables in database with its schema name\n- Get Table Definition - Gets the table definition from db using table name and schema name"
        }
      },
      "typeVersion": 1.7
    },
    {
      "id": "8accbeeb-7eaf-4e9e-aabc-de8ab3a0459b",
      "name": "OpenAI Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        -60,
        160
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "48uG61Ilo8jndw3r",
          "name": "Your OpenAI Account Credentials"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "11f2013f-a080-4c9e-8773-c90492e2c628",
      "name": "Get Table Definition",
      "type": "n8n-nodes-base.postgresTool",
      "position": [
        780,
        140
      ],
      "parameters": {
        "query": "select\n  c.column_name,\n  c.data_type,\n  c.is_nullable,\n  c.column_default,\n  tc.constraint_type,\n  ccu.table_name AS referenced_table,\n  ccu.column_name AS referenced_column\nfrom\n  information_schema.columns c\nLEFT join\n  information_schema.key_column_usage kcu\n  ON c.table_name = kcu.table_name\n  AND c.column_name = kcu.column_name\nLEFT join\n  information_schema.table_constraints tc\n  ON kcu.constraint_name = tc.constraint_name\n  AND tc.constraint_type = 'FOREIGN KEY'\nLEFT join\n  information_schema.constraint_column_usage ccu\n  ON tc.constraint_name = ccu.constraint_name\nwhere\n  c.table_name = '{{ $fromAI(\"table_name\") }}'\n  AND c.table_schema = '{{ $fromAI(\"schema_name\") }}'\norder by\n  c.ordinal_position",
        "options": {},
        "operation": "executeQuery",
        "descriptionType": "manual",
        "toolDescription": "Get table definition to find all columns and types"
      },
      "credentials": {
        "postgres": {
          "id": "nGI61D0TEEZz18rr",
          "name": "Your Postgresql Database Credentials"
        }
      },
      "typeVersion": 2.5
    },
    {
      "id": "760bc9bc-0057-4088-b3f0-3ee37b3519df",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -300,
        -240
      ],
      "parameters": {
        "color": 5,
        "width": 560,
        "height": 120,
        "content": "### 👨‍🎤 Setup\n1. Add your **postgresql** and **OpenAI** credentials.\n2. Click **Chat** button and start asking questions to your database.\n3. Activate the workflow and you can make the chat publicly available."
      },
      "typeVersion": 1
    },
    {
      "id": "0df33341-c859-4a54-b6d9-a99670e8d76d",
      "name": "Chat History",
      "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
      "position": [
        120,
        160
      ],
      "parameters": {},
      "typeVersion": 1.3
    },
    {
      "id": "4938b22e-f187-4ca0-b9f1-60835e823799",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        360,
        300
      ],
      "parameters": {
        "color": 7,
        "width": 562,
        "height": 156,
        "content": "🛠️ Tools Used:\n1. Execute SQL Query: Used to execute any query generated by the agent.\n2. Get DB Schema and Tables List: It returns the list of all the tables with its schema name.\n3. Get Table Definition: It returns table details like column names, foreign keys and more of a particular table in a schema."
      },
      "typeVersion": 1
    },
    {
      "id": "39780c78-4fbc-403e-a220-aa6a4b06df8c",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -100,
        300
      ],
      "parameters": {
        "color": 7,
        "width": 162,
        "height": 99,
        "content": "👆 You can exchange this with any other chat model of your choice."
      },
      "typeVersion": 1
    },
    {
      "id": "28a5692c-5003-46cb-9a09-b7867734f446",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        100,
        300
      ],
      "parameters": {
        "color": 7,
        "width": 162,
        "height": 159,
        "content": "👆 You can change how many number of messages to keep using `Context Window Length` option. It's 5 by default."
      },
      "typeVersion": 1
    },
    {
      "id": "c18ced71-6330-4ba0-9c52-1bb5852b3039",
      "name": "Execute SQL Query",
      "type": "n8n-nodes-base.postgresTool",
      "position": [
        380,
        140
      ],
      "parameters": {
        "query": "{{ $fromAI(\"sql_query\", \"SQL Query\") }}",
        "options": {},
        "operation": "executeQuery",
        "descriptionType": "manual",
        "toolDescription": "Get all the data from Postgres, make sure you append the tables with correct schema. Every table is associated with some schema in the database."
      },
      "credentials": {
        "postgres": {
          "id": "nGI61D0TEEZz18rr",
          "name": "Your Postgresql Database Credentials"
        }
      },
      "typeVersion": 2.5
    },
    {
      "id": "557623c6-e499-48a6-a066-744f64f8b6f3",
      "name": "Get DB Schema and Tables List",
      "type": "n8n-nodes-base.postgresTool",
      "position": [
        580,
        140
      ],
      "parameters": {
        "query": "SELECT \n    table_schema,\n    table_name\nFROM information_schema.tables\nWHERE table_type = 'BASE TABLE'\n    AND table_schema NOT IN ('pg_catalog', 'information_schema')\nORDER BY table_schema, table_name;",
        "options": {},
        "operation": "executeQuery",
        "descriptionType": "manual",
        "toolDescription": "Get list of all tables with their schema in the database"
      },
      "credentials": {
        "postgres": {
          "id": "nGI61D0TEEZz18rr",
          "name": "Your Postgresql Database Credentials"
        }
      },
      "typeVersion": 2.5
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "10c7c74e-b383-4ac7-8cb2-c9a15a2818fe",
  "connections": {
    "Chat History": {
      "ai_memory": [
        [
          {
            "node": "AI Agent",
            "type": "ai_memory",
            "index": 0
          }
        ]
      ]
    },
    "Execute SQL Query": {
      "ai_tool": [
        [
          {
            "node": "AI Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "AI Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Get Table Definition": {
      "ai_tool": [
        [
          {
            "node": "AI Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "When chat message received": {
      "main": [
        [
          {
            "node": "AI Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get DB Schema and Tables List": {
      "ai_tool": [
        [
          {
            "node": "AI Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    }
  }
}

Workflow n8n PostgreSQL, chat, intelligence artificielle : pour qui est ce workflow ?

Ce workflow s'adresse principalement aux entreprises qui utilisent des bases de données PostgreSQL et qui souhaitent améliorer l'interaction avec leurs données. Il est particulièrement pertinent pour les équipes techniques, les data analysts et les développeurs, ainsi que pour les organisations de taille moyenne à grande qui cherchent à automatiser leurs processus de gestion de données.

Workflow n8n PostgreSQL, chat, intelligence artificielle : problème résolu

Ce workflow résout le problème de l'accès difficile aux données stockées dans des bases de données PostgreSQL. En permettant aux utilisateurs de poser des questions en langage naturel, il élimine la nécessité de connaître les requêtes SQL, ce qui peut être une source de frustration pour ceux qui ne sont pas familiers avec la programmation. De plus, il réduit le temps d'attente pour obtenir des réponses, ce qui améliore l'efficacité opérationnelle et la prise de décision.

Workflow n8n PostgreSQL, chat, intelligence artificielle : étapes du workflow

Étape 1 : Le déclencheur 'When chat message received' capte un message dans le chat.

  • Étape 1 : Le noeud 'AI Agent' analyse le message pour comprendre l'intention de l'utilisateur.
  • Étape 2 : Le modèle de chat OpenAI génère une réponse basée sur le contexte.
  • Étape 3 : Le noeud 'Get Table Definition' récupère la structure de la base de données pour fournir des informations pertinentes.
  • Étape 4 : 'Execute SQL Query' exécute les requêtes nécessaires pour obtenir les données demandées.
  • Étape 5 : Les noeuds 'Sticky Note' affichent les résultats de manière visuelle et organisée.

Workflow n8n PostgreSQL, chat, intelligence artificielle : guide de personnalisation

Pour personnaliser ce workflow, commencez par ajuster le déclencheur 'When chat message received' pour l'intégrer à votre plateforme de chat spécifique. Vous pouvez également modifier les paramètres du noeud 'AI Agent' pour adapter le comportement de l'agent à vos besoins. Assurez-vous que les requêtes SQL dans le noeud 'Execute SQL Query' correspondent à votre structure de base de données. Enfin, vous pouvez personnaliser les noeuds 'Sticky Note' pour changer la couleur et le contenu affiché, afin de mieux répondre à vos préférences visuelles.