Workflow Überblick
Der Workflow „Make OpenAI Citation for File Retrieval RAG“ ist eine n8n-Integration, die mithilfe eines OpenAI-Assistenten und einer Vektorspeicher-Datenbank Zitate für abgerufene Dateien generiert. Das Ziel ist es, relevante Informationen aus Dateien abzurufen und diese in einem strukturierten Format mit Zitaten anzuzeigen.
Node Erklärungen
1. Aggregate
Typ: Aggregate
Zweck: Aggregiert alle ausgehenden Daten in einem einzigen Datensatz.
Einstellungen: {"aggregate":"aggregateAllItemData"} – Diese Einstellung wurde gewählt, um sicherzustellen, dass alle Elemente im Workflow als ein zusammengefasster Datensatz ausgegeben werden.
2. Window Buffer Memory
Typ: Memory Buffer Window
Zweck: Speichert Informationen über den Kontext während des Ausführungsprozesses.
Einstellungen: Keine spezifischen Parameter werden gesetzt; dies ermöglicht eine flexible Nutzung der gespeicherten Informationen.
3. Sticky Note4
Typ: Sticky Note
Zweck: Dient zur Notierung von Erinnerungshinweisen innerhalb des Workflows.
Einstellungen: {"color":3,"width":840,"height":80,"content":"## Within N8N, there will be a chat button to test"} – Ermöglicht eine visuelle Anzeige wichtiger Punkte.
4. Create a simple Trigger to have the Chat button within N8N
Typ: Chat Trigger
Zweck: Erzeugt einen Trigger, der einen Chat-Button in der n8n-Oberfläche implementiert.
Einstellungen: {"options":{}} – Dies erstellt einen sehr grundlegenden Trigger.
5. OpenAI Assistant with Vector Store
Typ: OpenAI
Zweck: Führt die Suche im Vektorspeicher durch und interagiert mit dem OpenAI-Assistenten.
Einstellungen: {"options":{"preserveOriginalTools":false},"resource":"assistant","assistantId":{"__rl":true,"mode":"list","value":"asst_QAfdobVCVCMJz8LmaEC7nlId","cachedResultName":"Teste"}} – Diese Konfiguration stellt sicher, dass die richtigen Ressourcen und IDs verwendet werden.
6. Get ALL Thread Content
Typ: HTTP Request
Zweck: Abrufen des vollständigen Inhalts des Threads von der OpenAI API.
Einstellungen: {"url":"=https://api.openai.com/v1/threads/{{ $json.threadId }}/messages"} – Der URL verwendet den Thread-ID, um alle Nachrichten abzurufen.
7. Split all message iterations from a thread
Typ: Split Out
Zweck: Teilt alle Nachrichten des Threads in Einzelelemente.
Einstellungen: {"fieldToSplitOut":"data"} – Dies ermöglicht eine feingranulare Handhabung von Dateiinhalten.
8. Retrieve file name from a file ID
Typ: HTTP Request
Zweck: Ruft den Dateinamen anhand der Datei-ID ab, die von OpenAI bereitgestellt wird.
Einstellungen: {"url":"=https://api.openai.com/v1/files/{{ $json.file_citation.file_id }}"} – Erforderlich, um den korrekten Dateinamen zu erhalten.
9. Regularize output
Typ: Set
Zweck: Normiert die Ausgabe, um eine konsistente Struktur zu gewährleisten.
Einstellungen: {"assignments":{"assignments":[{"name":"id","value":"={{ $json.id }}"},{"name":"filename","value":"={{ $json.filename }}"},{"name":"text","value":"={{ $('Split all citations from a single message').item.json.text }}"}]}} – Standardisiert die Ausgabeparameter.
10. Finnaly format the output
Typ: Code
Zweck: Formatiert die Ausgabe, um die endgültige Antwort anzupassen.
Einstellungen: let saida = $('OpenAI Assistant with Vector Store').item.json.output; – Diese Codestücke sorgen dafür, dass Zitationen in den Text eingefügt werden.
Ergebnis
Am Ende des Workflows haben wir eine strukturierte Ausgabe, die relevante Informationen aus dem OpenAI-Assistenten enthält, komplett mit Zitationen aus den Vektordateien. Diese können nun in einer benutzerfreundlichen Weise präsentiert werden.