n8n Workflows

Wie man SQL-Abfragen nur auf Basis eines Schemas generiert – KI-gestützt

3 Min. LesezeitMEKSOFT
Inhalt
  1. Einführung
  2. Node-Erklärung
  3. Ergebnis

Einführung

In diesem Workflow verwenden wir n8n und die OpenAI API, um SQL-Abfragen basierend auf einem gegebenen Schema zu generieren. Jeder Knoten hat eine spezifische Rolle, um die Abfragegeneration zu erleichtern und die Datenverarbeitung zu optimieren.

Node-Erklärung

1. OpenAI Chat Model

  • Typ: @n8n/n8n-nodes-langchain.lmChatOpenAi
  • Zweck: Verwendet das GPT-4 Modell von OpenAI zur Generierung von Abfrageantworten basierend auf dem Schema.
  • Parameter: Temperatur eingestellt auf 0.2, was die Diversität der generierten Antworten steuert. Eine niedrigere Temperatur führt zu konsistenteren Antworten.
  • Credentials: Erfordert eine OpenAI API-Verbindung.

2. Window Buffer Memory

  • Typ: @n8n/n8n-nodes-langchain.memoryBufferWindow
  • Zweck: Speichert den Kontext von Konversationen oder Abfragen für einen besseren Verlauf.
  • Parameter: Kontextfensterlänge von 10, was die Anzahl der gespeicherten Konversationen angibt.

3. No Operation, do nothing

  • Typ: n8n-nodes-base.noOp
  • Zweck: Ein Knoten, der keine Operationen ausführt, oft als Platzhalter.

4. List all tables in a database

  • Typ: n8n-nodes-base.mySql
  • Zweck: Listet alle Tabellen in der Datenbank auf.
  • Parameter: Führt die Abfrage „SHOW TABLES;“ aus. Dies ist wichtig, um alle verfügbaren Tabellen zu identifizieren.
  • Credentials: Benötigt eine Verbindung zu einer MySQL-Datenbank.

5. Extract database schema

  • Typ: n8n-nodes-base.mySql
  • Zweck: Extrahiert das Schema der angegebenen Tabelle.
  • Parameter: „DESCRIBE {{ $json.Tables_in_tttytdb2023 }};“. Diese Abfrage benötigt den Tabellennamen, den wir vorher erfasst haben.

6. Add table name to output

  • Typ: n8n-nodes-base.set
  • Zweck: Fügt den Tabellennamen zur Ausgabe hinzu, um später darauf zugreifen zu können.
  • Parameter: Zuweisung des aktuellen Tabellennamens in einer neuen Variablen.

7. Convert data to binary

  • Typ: n8n-nodes-base.convertToFile
  • Zweck: Konvertiert die gesammelten Schema-Daten in ein binäres JSON-Format.
  • Parameter: Die Operation ist „toJson“.

8. Save file locally

  • Typ: n8n-nodes-base.readWriteFile
  • Zweck: Speichert die konvertierten JSON-Daten lokal in einer Datei.
  • Parameter: Definiert den Dateinamen „./chinook_mysql.json“.

9. Extract data from file

  • Typ: n8n-nodes-base.extractFromFile
  • Zweck: Extrahiert die JSON-Daten aus der lokal gespeicherten Datei.
  • Parameter: Die Operation ist „fromJson“.

10. Chat Trigger

  • Typ: @n8n/n8n-nodes-langchain.chatTrigger
  • Zweck: Startet den Workflow, wenn eine Nachricht vom Nutzer empfangen wird.
  • Parameter: Enthält Optionen für den Chat.

11. AI Agent

  • Typ: @n8n/n8n-nodes-langchain.agent
  • Zweck: Nimmt die Eingabe des Benutzers und erstellt eine SQL-Abfrage, wenn nötig.
  • Parameter: Verwendet das Datenbankschema zur SQL-Generierung und weist auf die Eingabe des Benutzers hin.

12. Combine schema data and chat input

  • Typ: n8n-nodes-base.set
  • Zweck: Kombiniert das Datenbankschema mit der Benutzereingabe für die Abfragegenerierung.

13. Load the schema from the local file

  • Typ: n8n-nodes-base.readWriteFile
  • Zweck: Lädt das Schema aus der vorher gespeicherten Datei.

14. Extract SQL query

  • Typ: n8n-nodes-base.set
  • Zweck: Extrahiert die SQL-Abfrage aus der Antwort des KI-Agenten.
  • Parameter: Verwendet einen regulären Ausdruck, um die Abfrage zu filtern.

15. Check if query exists

  • Typ: n8n-nodes-base.if
  • Zweck: Überprüft, ob die generierte SQL-Abfrage nicht leer ist.

16. Run SQL query

  • Typ: n8n-nodes-base.mySql
  • Zweck: Führt die SQL-Abfrage in der Datenbank aus.
  • Credentials: Erforderlich ist eine Verbindung zur MySQL-Datenbank.

17. Format query results

  • Typ: n8n-nodes-base.set
  • Zweck: Formatiert die Abfrageergebnisse für die Ausgabe in einem lesbaren Format.

18. Prepare final output

  • Typ: n8n-nodes-base.set
  • Zweck: Erstellt die endgültige Ausgabe für den Chat, einschließlich Ergebnis und Antwort des Agenten.

Ergebnis

Dieser Workflow ermöglicht es, SQL-Abfragen basierend auf einem Datenbankschema zu generieren, diese auszuführen und die Ergebnisse dem Benutzer in einer Chat-Sitzung anzuzeigen. Durch den Einsatz von n8n und OpenAI wird der Prozess automatisiert und vereinfacht erheblich.

Für den Download des Workflows klicken Sie bitte hier: Download Link

Artikel teilen
Zur Blogübersicht