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