Files
ai-agents-masterclass/n8n-streamlit-agent/Supabase_RAG_AI_Agent_Supabase_Auth.json

835 lines
19 KiB
JSON

{
"name": "Supabase RAG AI Agent Custom Auth",
"nodes": [
{
"parameters": {
"model": "gpt-4o-mini",
"options": {}
},
"id": "20216b42-d5fa-4d1e-a4fb-9549834fea99",
"name": "OpenAI Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"typeVersion": 1,
"position": [
940,
520
],
"credentials": {
"openAiApi": {
"id": "JJjD91oisPv9cs01",
"name": "OpenAi account"
}
}
},
{
"parameters": {
"model": "gpt-4o-mini",
"options": {}
},
"id": "1e53e934-c7fa-4650-8f5e-106102a9494d",
"name": "OpenAI Chat Model1",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"typeVersion": 1,
"position": [
1880,
460
],
"credentials": {
"openAiApi": {
"id": "JJjD91oisPv9cs01",
"name": "OpenAi account"
}
}
},
{
"parameters": {
"jsonMode": "expressionData",
"jsonData": "={{ $json.data }}",
"options": {
"metadata": {
"metadataValues": [
{
"name": "=file_id",
"value": "={{ $('Set File ID').item.json.file_id }}"
}
]
}
}
},
"id": "a766868e-c847-48b9-8b61-dcd5fcd9e280",
"name": "Default Data Loader",
"type": "@n8n/n8n-nodes-langchain.documentDefaultDataLoader",
"typeVersion": 1,
"position": [
2020,
1000
]
},
{
"parameters": {
"model": "text-embedding-3-small",
"options": {}
},
"id": "23255e75-bfdb-46ac-8244-98c5e518bafe",
"name": "Embeddings OpenAI1",
"type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi",
"typeVersion": 1,
"position": [
1860,
1000
],
"credentials": {
"openAiApi": {
"id": "JJjD91oisPv9cs01",
"name": "OpenAi account"
}
}
},
{
"parameters": {
"name": "user_documents",
"description": "Contains all the user's documents that you can check for context to answer user questions."
},
"id": "62ca6e95-73ff-459c-8e29-6b38d12895c8",
"name": "Retrieve Documents",
"type": "@n8n/n8n-nodes-langchain.toolVectorStore",
"typeVersion": 1,
"position": [
1660,
280
]
},
{
"parameters": {
"content": "## Agent Tools for RAG",
"height": 528.85546469693,
"width": 583.4552380860637,
"color": 4
},
"id": "53866fd6-ca7f-4174-b438-809c6d06eec0",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
1480,
160
]
},
{
"parameters": {
"content": "## Tool to Add a Google Drive File to Vector DB",
"height": 671.8877842322804,
"width": 2070.8894079025763,
"color": 5
},
"id": "de4b8d94-b4aa-4b72-b9ac-70b3cf624eb7",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
260,
700
]
},
{
"parameters": {
"operation": "download",
"fileId": {
"__rl": true,
"value": "={{ $('Set File ID').item.json.file_id }}",
"mode": "id"
},
"options": {
"googleFileConversion": {
"conversion": {
"docsToFormat": "text/plain"
}
}
}
},
"id": "705a761d-6b10-4e98-8aad-b21413f60005",
"name": "Download File",
"type": "n8n-nodes-base.googleDrive",
"typeVersion": 3,
"position": [
1360,
880
],
"executeOnce": true,
"credentials": {
"googleDriveOAuth2Api": {
"id": "cfNochbuJikPwwl2",
"name": "Google Drive account"
}
}
},
{
"parameters": {
"pollTimes": {
"item": [
{
"mode": "everyMinute"
}
]
},
"triggerOn": "specificFolder",
"folderToWatch": {
"__rl": true,
"value": "1914m3M7kRzkd5RJqAfzRY9EBcJrKemZC",
"mode": "list",
"cachedResultName": "Meeting Notes",
"cachedResultUrl": "https://drive.google.com/drive/folders/1914m3M7kRzkd5RJqAfzRY9EBcJrKemZC"
},
"event": "fileCreated",
"options": {}
},
"id": "b22ee4d4-b310-426f-b1ca-82ef62fe2f07",
"name": "File Created",
"type": "n8n-nodes-base.googleDriveTrigger",
"typeVersion": 1,
"position": [
320,
780
],
"credentials": {
"googleDriveOAuth2Api": {
"id": "cfNochbuJikPwwl2",
"name": "Google Drive account"
}
}
},
{
"parameters": {
"pollTimes": {
"item": [
{
"mode": "everyMinute"
}
]
},
"triggerOn": "specificFolder",
"folderToWatch": {
"__rl": true,
"value": "1914m3M7kRzkd5RJqAfzRY9EBcJrKemZC",
"mode": "list",
"cachedResultName": "Meeting Notes",
"cachedResultUrl": "https://drive.google.com/drive/folders/1914m3M7kRzkd5RJqAfzRY9EBcJrKemZC"
},
"event": "fileUpdated",
"options": {}
},
"id": "91fc8df8-1c77-4e58-b723-ecfb756b148a",
"name": "File Updated",
"type": "n8n-nodes-base.googleDriveTrigger",
"typeVersion": 1,
"position": [
320,
1000
],
"credentials": {
"googleDriveOAuth2Api": {
"id": "cfNochbuJikPwwl2",
"name": "Google Drive account"
}
}
},
{
"parameters": {
"operation": "text",
"options": {}
},
"id": "ed74944a-418e-42c8-9a36-5d280dfa02f1",
"name": "Extract Document Text",
"type": "n8n-nodes-base.extractFromFile",
"typeVersion": 1,
"position": [
1620,
880
],
"alwaysOutputData": true
},
{
"parameters": {
"model": "text-embedding-3-small",
"options": {}
},
"id": "4a2ab29f-026a-4e67-9e70-cb647e901360",
"name": "Embeddings OpenAI",
"type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi",
"typeVersion": 1,
"position": [
1700,
560
],
"credentials": {
"openAiApi": {
"id": "JJjD91oisPv9cs01",
"name": "OpenAi account"
}
}
},
{
"parameters": {},
"id": "d3e47e92-65f7-483c-a730-13bcb26b26c5",
"name": "Postgres Chat Memory",
"type": "@n8n/n8n-nodes-langchain.memoryPostgresChat",
"typeVersion": 1,
"position": [
1060,
520
],
"notesInFlow": false,
"credentials": {
"postgres": {
"id": "tzFFADvpFiUtaZtb",
"name": "Supabase Postgres"
}
}
},
{
"parameters": {
"options": {}
},
"id": "45a38eca-0093-4263-932a-b915b81909c4",
"name": "Recursive Character Text Splitter",
"type": "@n8n/n8n-nodes-langchain.textSplitterRecursiveCharacterTextSplitter",
"typeVersion": 1,
"position": [
2020,
1200
]
},
{
"parameters": {
"operation": "delete",
"tableId": "documents",
"filterType": "string",
"filterString": "=metadata->>file_id=like.*{{ $json.file_id }}*"
},
"id": "699533ea-e91e-4229-bd70-c9cb718411af",
"name": "Delete Old Doc Rows",
"type": "n8n-nodes-base.supabase",
"typeVersion": 1,
"position": [
1060,
880
],
"alwaysOutputData": true,
"credentials": {
"supabaseApi": {
"id": "azIAMHxdSaq5XhoW",
"name": "Supabase account"
}
}
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "10646eae-ae46-4327-a4dc-9987c2d76173",
"name": "file_id",
"value": "={{ $json.id }}",
"type": "string"
}
]
},
"options": {}
},
"id": "ec2f04ff-2824-4b0f-ac57-740a6a103f3d",
"name": "Set File ID",
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
740,
880
]
},
{
"parameters": {
"content": "## RAG AI Agent with Chat Interface",
"height": 464.8027193303974,
"width": 1397.1362723489267
},
"id": "12172aa3-12ff-46da-9883-c5bd45920259",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
65.97988322897118,
220
]
},
{
"parameters": {
"tableName": {
"__rl": true,
"value": "documents",
"mode": "list",
"cachedResultName": "documents"
},
"options": {
"queryName": "match_documents"
}
},
"id": "84b6ba04-1409-4eb8-8530-7fc5f450fae6",
"name": "Supabase Vector Store",
"type": "@n8n/n8n-nodes-langchain.vectorStoreSupabase",
"typeVersion": 1,
"position": [
1540,
440
],
"credentials": {
"supabaseApi": {
"id": "azIAMHxdSaq5XhoW",
"name": "Supabase account"
}
}
},
{
"parameters": {
"options": {}
},
"id": "9606a05d-8ab1-4aeb-9855-a69c29c09fe0",
"name": "Respond to Webhook",
"type": "n8n-nodes-base.respondToWebhook",
"typeVersion": 1.1,
"position": [
1300,
300
]
},
{
"parameters": {
"public": true,
"options": {}
},
"id": "64a6fef1-b254-4f39-9684-e29c9a4ff1b2",
"name": "When chat message received",
"type": "@n8n/n8n-nodes-langchain.chatTrigger",
"typeVersion": 1.1,
"position": [
120,
300
],
"webhookId": "21ffce44-9a14-4739-a143-808087431b7f"
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "9a9a245e-f1a1-4282-bb02-a81ffe629f0f",
"name": "chatInput",
"value": "={{ $json?.chatInput || $('Webhook').item.json.body.chatInput }}",
"type": "string"
},
{
"id": "b80831d8-c653-4203-8706-adedfdb98f77",
"name": "sessionId",
"value": "={{ $json?.sessionId || $('Webhook').item.json.body.sessionId }}",
"type": "string"
}
]
},
"options": {}
},
"id": "145612c9-aae5-4743-a0d2-085ce7741e5e",
"name": "Edit Fields",
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
740,
300
]
},
{
"parameters": {
"promptType": "define",
"text": "={{ $json.chatInput }}",
"options": {
"systemMessage": "You are a personal assistant who helps answer questions from a corpus of documents when you don't know the answer yourself."
}
},
"id": "2e950dc6-8be1-4067-a1d4-a6265f6cd6c0",
"name": "RAG AI Agent",
"type": "@n8n/n8n-nodes-langchain.agent",
"typeVersion": 1.6,
"position": [
960,
300
]
},
{
"parameters": {
"mode": "insert",
"tableName": {
"__rl": true,
"value": "documents",
"mode": "list",
"cachedResultName": "documents"
},
"options": {
"queryName": "match_documents"
}
},
"id": "379f7875-c08e-4352-8958-7cf2606ba07c",
"name": "Insert into Supabase Vectorstore",
"type": "@n8n/n8n-nodes-langchain.vectorStoreSupabase",
"typeVersion": 1,
"position": [
1900,
780
],
"credentials": {
"supabaseApi": {
"id": "azIAMHxdSaq5XhoW",
"name": "Supabase account"
}
}
},
{
"parameters": {
"url": "https://[YOUR SUPABASE PROJECT URL]/auth/v1/user",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "apikey",
"value": "YOUR_SUPABASE_API_KEY"
},
{
"name": "Authorization",
"value": "={{ $json.headers.authorization }}"
}
]
},
"options": {}
},
"id": "bed3b947-0c39-47f1-9dd6-3032cc357624",
"name": "HTTP Request",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
340,
500
]
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict"
},
"conditions": [
{
"id": "2d5f1cb2-511d-48a3-952a-c7c5be7b3e61",
"leftValue": "={{ $json.email }}",
"rightValue": "",
"operator": {
"type": "string",
"operation": "notEmpty",
"singleValue": true
}
}
],
"combinator": "and"
},
"options": {}
},
"id": "2dadff1f-6a4f-4f2b-8b02-a4b2a3a4c876",
"name": "If",
"type": "n8n-nodes-base.if",
"typeVersion": 2,
"position": [
540,
500
]
},
{
"parameters": {
"options": {}
},
"id": "9af5a135-aa55-4d7d-8d92-22e4b5f3a8bb",
"name": "Respond with Error",
"type": "n8n-nodes-base.respondToWebhook",
"typeVersion": 1.1,
"position": [
740,
500
]
},
{
"parameters": {
"httpMethod": "POST",
"path": "invoke-supabase-agent",
"responseMode": "responseNode",
"options": {}
},
"id": "dcdeeade-bfd1-47bb-a94c-e75f0060b41a",
"name": "Webhook",
"type": "n8n-nodes-base.webhook",
"typeVersion": 2,
"position": [
120,
500
],
"webhookId": "33512ab3-8838-49a7-aaa1-90252504db01"
}
],
"pinData": {},
"connections": {
"OpenAI Chat Model": {
"ai_languageModel": [
[
{
"node": "RAG AI Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"OpenAI Chat Model1": {
"ai_languageModel": [
[
{
"node": "Retrieve Documents",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Retrieve Documents": {
"ai_tool": [
[
{
"node": "RAG AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Download File": {
"main": [
[
{
"node": "Extract Document Text",
"type": "main",
"index": 0
}
]
]
},
"File Created": {
"main": [
[
{
"node": "Set File ID",
"type": "main",
"index": 0
}
]
]
},
"Embeddings OpenAI": {
"ai_embedding": [
[
{
"node": "Supabase Vector Store",
"type": "ai_embedding",
"index": 0
}
]
]
},
"Extract Document Text": {
"main": [
[
{
"node": "Insert into Supabase Vectorstore",
"type": "main",
"index": 0
}
]
]
},
"Embeddings OpenAI1": {
"ai_embedding": [
[
{
"node": "Insert into Supabase Vectorstore",
"type": "ai_embedding",
"index": 0
}
]
]
},
"Default Data Loader": {
"ai_document": [
[
{
"node": "Insert into Supabase Vectorstore",
"type": "ai_document",
"index": 0
}
]
]
},
"Postgres Chat Memory": {
"ai_memory": [
[
{
"node": "RAG AI Agent",
"type": "ai_memory",
"index": 0
}
]
]
},
"Recursive Character Text Splitter": {
"ai_textSplitter": [
[
{
"node": "Default Data Loader",
"type": "ai_textSplitter",
"index": 0
}
]
]
},
"Delete Old Doc Rows": {
"main": [
[
{
"node": "Download File",
"type": "main",
"index": 0
}
]
]
},
"Set File ID": {
"main": [
[
{
"node": "Delete Old Doc Rows",
"type": "main",
"index": 0
}
]
]
},
"File Updated": {
"main": [
[
{
"node": "Set File ID",
"type": "main",
"index": 0
}
]
]
},
"Supabase Vector Store": {
"ai_vectorStore": [
[
{
"node": "Retrieve Documents",
"type": "ai_vectorStore",
"index": 0
}
]
]
},
"When chat message received": {
"main": [
[
{
"node": "Edit Fields",
"type": "main",
"index": 0
}
]
]
},
"Edit Fields": {
"main": [
[
{
"node": "RAG AI Agent",
"type": "main",
"index": 0
}
]
]
},
"RAG AI Agent": {
"main": [
[
{
"node": "Respond to Webhook",
"type": "main",
"index": 0
}
]
]
},
"HTTP Request": {
"main": [
[
{
"node": "If",
"type": "main",
"index": 0
}
]
]
},
"If": {
"main": [
[
{
"node": "Edit Fields",
"type": "main",
"index": 0
}
],
[
{
"node": "Respond with Error",
"type": "main",
"index": 0
}
]
]
},
"Webhook": {
"main": [
[
{
"node": "HTTP Request",
"type": "main",
"index": 0
}
]
]
}
},
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "b6084362-7eaa-41a2-b29b-5fb3ac58f7b2",
"meta": {
"templateCredsSetupCompleted": true,
"instanceId": "620f0d7e3114cb344761d7d45a21ef2a32096f91d8696e7057756042e1999e2c"
},
"id": "jfppAfyQOMf1B4Wd",
"tags": []
}