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

Dieses Workflow hilft dabei, SQL-Abfragen auf Basis einer Datenbankschema-Definition zu generieren und diese Abfragen zu verarbeiten.

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

Die Website nutzt die Wordpress-Infrastruktur.

Server: Unser Server befindet sich in einem Unternehmen mit Sitz in Deutschland. Er hat eine hohe und schnelle Internetverbindung. Es gibt eine Generatorunterstützung für ununterbrochenen Strom.

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

Facebook
Twitter
LinkedIn

Andere Projekte