Exemple de workflow d'application de chatbot RAG pour les chaînes ouvertes Bitrix24
Ceci est unOtherworkflow d'automatisation du domainecontenant 34 nœuds.Utilise principalement des nœuds comme If, Set, Merge, Filter, Switch. Chatbot RAG pour canaux ouverts de Bitrix24, alimenté par l'IA
- •Point de terminaison HTTP Webhook (généré automatiquement par n8n)
- •Peut nécessiter les informations d'identification d'authentification de l'API cible
- •Informations de connexion au serveur Qdrant
- •Clé API Google Gemini
Nœuds utilisés (34)
Catégorie
{
"id": "TBiW9x7O4ijo4yOX",
"meta": {
"instanceId": "255b605d49a6677a536746e05401de51bb4c62e65036d9acdb9908f6567f0361"
},
"name": "Bitrix24 Open Chanel RAG Chatbot Application Workflow example with Webhook Integration",
"tags": [
{
"id": "2ziILYLz4IbTkFf5",
"name": "Tech demo",
"createdAt": "2025-02-17T08:43:26.445Z",
"updatedAt": "2025-02-17T08:43:26.445Z"
},
{
"id": "BedOB2iRpKR26bcZ",
"name": "Chatbot",
"createdAt": "2025-02-17T08:43:26.436Z",
"updatedAt": "2025-02-17T08:43:26.436Z"
},
{
"id": "DvSHJwHwuObn0cxx",
"name": "Open Channels",
"createdAt": "2025-03-04T07:27:28.499Z",
"updatedAt": "2025-03-04T07:27:28.499Z"
},
{
"id": "YJcjKoBRFN1HXH5e",
"name": "Bitrix24",
"createdAt": "2025-02-17T08:43:26.424Z",
"updatedAt": "2025-02-17T08:43:26.424Z"
}
],
"nodes": [
{
"id": "dbd7b2c0-2b27-4c23-beb7-eec128da0787",
"name": "Gestionnaire Bitrix24",
"type": "n8n-nodes-base.webhook",
"position": [
-1280,
620
],
"webhookId": "bde38660-2604-4e00-afc0-5ebceebb7f0a",
"parameters": {
"path": "bitrix24/openchannel-rag-bothandler.php",
"options": {},
"httpMethod": "POST",
"responseMode": "responseNode"
},
"typeVersion": 1
},
{
"id": "0ead4d82-4d9b-4392-af4c-2c315068b983",
"name": "Identifiants",
"type": "n8n-nodes-base.set",
"position": [
-1040,
620
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "030f8f90-2669-4c20-9eab-c572c4b7c70c",
"name": "CLIENT_ID",
"type": "string",
"value": "local.67c8f9e81cb353.30162021"
},
{
"id": "de9bbb7a-b782-4540-b259-527625db8490",
"name": "CLIENT_SECRET",
"type": "string",
"value": "Db5943DCy4JhYq4oU0yNb21Hx8WimQeThczOYk03uJrVroc8R4"
},
{
"id": "86b7aff7-1e25-4b12-a366-23cf34e5a405",
"name": "application_token",
"type": "string",
"value": "={{ $json.body['auth[application_token]'] }}"
},
{
"id": "69bbcb1f-ba6e-42eb-be8a-ee0707ce997d",
"name": "domain",
"type": "string",
"value": "={{ $json.body['auth[domain]'] }}\n"
},
{
"id": "dc1b0515-f06a-4731-b0dc-912a8d04e56b",
"name": "access_token",
"type": "string",
"value": "={{ $json.body['auth[access_token]'] }}"
},
{
"id": "94fdeed8-9437-417e-9c2a-fa853620a340",
"name": "storageName",
"type": "string",
"value": "Shared drive"
},
{
"id": "8564e421-dfce-437c-a7c3-ac6a180594b8",
"name": "folderName",
"type": "string",
"value": "Open line chat bot documents"
}
]
},
"includeOtherFields": true
},
"typeVersion": 3.4
},
{
"id": "67b225b8-c2c2-4570-81cb-4c533ae75465",
"name": "Valider le jeton",
"type": "n8n-nodes-base.if",
"position": [
-820,
620
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "or",
"conditions": [
{
"id": "da73d0ba-6eeb-405e-89fe-9d041fd2e0cd",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.CLIENT_ID }}",
"rightValue": "={{ $json.application_token }}"
},
{
"id": "4ba90f7b-0299-4097-9ae7-6e4dee428a74",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "1",
"rightValue": "1"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "4fee1441-4e30-4070-b596-15e121ca7320",
"name": "Router l'événement",
"type": "n8n-nodes-base.switch",
"position": [
-620,
520
],
"parameters": {
"rules": {
"values": [
{
"outputKey": "ONIMBOTMESSAGEADD",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.body.event }}",
"rightValue": "ONIMBOTMESSAGEADD"
}
]
},
"renameOutput": true
},
{
"outputKey": "ONIMBOTJOINCHAT",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "e9125f57-129e-4026-86ff-746d40b92b04",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.body.event }}",
"rightValue": "ONIMBOTJOINCHAT"
}
]
},
"renameOutput": true
},
{
"outputKey": "ONAPPINSTALL",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "2db7bed5-fd88-4900-b8d2-e27b49c2fcca",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.body.event }}",
"rightValue": "ONAPPINSTALL"
}
]
},
"renameOutput": true
},
{
"outputKey": "ONIMBOTDELETE",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "b708d339-fd46-470d-b0d5-ff2eb405f5ce",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.body.event }}",
"rightValue": "ONIMBOTDELETE"
}
]
},
"renameOutput": true
}
]
},
"options": {}
},
"typeVersion": 3.2
},
{
"id": "c21f6d64-0543-4958-9f64-501dce37893f",
"name": "Traiter le message",
"type": "n8n-nodes-base.function",
"position": [
-420,
400
],
"parameters": {
"functionCode": "// Process Message Node\nconst items = $input.all();\nconst item = items[0];\n\n// Get message data from the correct path\nconst message = item.json.body['data[PARAMS][MESSAGE]'];\nconst dialogId = item.json.body['data[PARAMS][DIALOG_ID]'];\n\nconst sessionId = item.json.body['data[PARAMS][CHAT_ENTITY_DATA_1]'].split(\"|\")[5];\n\nconst botId = Object.keys(item.json.body)\n .filter(key => key.startsWith(\"data[BOT]\") && key.endsWith(\"[BOT_ID]\"))\n .map(key => $json.body[key])\n .shift() || null;\nconst userId = item.json.body['data[USER][ID]'];\n\n// Get auth data\nconst auth = {\n access_token: item.json.access_token,\n domain: item.json.domain\n};\n\nif (message.toLowerCase() === \"what's hot\") {\n return {\n json: {\n DIALOG_ID: dialogId,\n SESSION_ID: sessionId,\n BOT_ID: botId,\n USER_ID: userId,\n MESSAGE_ORI: message,\n MESSAGE: \"Hi! I am an example-bot.\\nI repeat what you say\",\n AUTH: auth.access_token,\n DOMAIN: auth.domain\n }\n };\n} else {\n return {\n json: {\n DIALOG_ID: dialogId,\n SESSION_ID: sessionId,\n BOT_ID: botId,\n USER_ID: userId,\n MESSAGE_ORI: message,\n MESSAGE: `You said:\\n${message}`,\n AUTH: auth.access_token,\n DOMAIN: auth.domain\n }\n };\n}"
},
"typeVersion": 1
},
{
"id": "06a59835-2999-44b6-81bd-0601e5570113",
"name": "Traiter l'adhésion",
"type": "n8n-nodes-base.function",
"position": [
-420,
780
],
"parameters": {
"functionCode": "// Process Join Node\nconst items = $input.all();\nconst item = items[0];\n\n// Get dialog ID from the correct path\nconst dialogId = item.json.body['data[PARAMS][DIALOG_ID]'];\n\n// Get auth data\nconst auth = {\n access_token: item.json.access_token,\n domain: item.json.domain\n};\n\nconst message = \n 'ITR Menu:\\n' +\n '[send=1]1. find out more about me[/send]\\n' +\n '[send=0]0. wait for operator response[/send]';\n\nreturn {\n json: {\n DIALOG_ID: dialogId,\n MESSAGE: message,\n AUTH: auth.access_token,\n DOMAIN: auth.domain\n }\n};"
},
"typeVersion": 1
},
{
"id": "40accf33-c217-497c-8172-6106eb15800f",
"name": "Traiter l'installation",
"type": "n8n-nodes-base.function",
"position": [
-420,
940
],
"parameters": {
"functionCode": "// Process Install Node\nconst items = $input.all();\nconst item = items[0];\n\n// Get the webhook URL from input\nconst handlerBackUrl = item.json.webhookUrl;\n\n// Get auth data directly from item.json\nconst auth = {\n access_token: item.json.access_token,\n application_token: item.json.application_token,\n domain: item.json.domain\n};\n\nreturn {\n json: {\n handler_back_url: handlerBackUrl,\n CODE: 'OpenChanelExampleBot',\n TYPE: 'O',\n OPENLINE: 'Y',\n EVENT_MESSAGE_ADD: handlerBackUrl,\n EVENT_WELCOME_MESSAGE: handlerBackUrl,\n EVENT_BOT_DELETE: handlerBackUrl,\n PROPERTIES: {\n NAME: 'Open chanel Bot',\n LAST_NAME: 'Example',\n COLOR: 'AQUA',\n EMAIL: 'no@example.com',\n PERSONAL_BIRTHDAY: '2020-07-18',\n WORK_POSITION: 'Report on affairs',\n PERSONAL_GENDER: 'M'\n },\n // Use the auth data from item.json\n AUTH: auth.access_token,\n CLIENT_ID: auth.application_token,\n DOMAIN: auth.domain\n }\n};"
},
"typeVersion": 1
},
{
"id": "22a7c363-ab5a-4adc-9de4-268f3f3739f3",
"name": "Enregistrer le bot",
"type": "n8n-nodes-base.httpRequest",
"position": [
-220,
940
],
"parameters": {
"url": "=https://{{ $json.DOMAIN }}/rest/imbot.register?auth={{$json.AUTH}}",
"method": "POST",
"options": {},
"sendBody": true,
"bodyParameters": {
"parameters": [
{
"name": "CODE",
"value": "OpenChanelExampleBot"
},
{
"name": "TYPE",
"value": "O"
},
{
"name": "EVENT_MESSAGE_ADD",
"value": "={{$json.handler_back_url}}"
},
{
"name": "EVENT_WELCOME_MESSAGE",
"value": "={{$json.handler_back_url}}"
},
{
"name": "EVENT_BOT_DELETE",
"value": "={{$json.handler_back_url}}"
},
{
"name": "PROPERTIES",
"value": "={{ {\n NAME: 'Bot',\n LAST_NAME: 'Example',\n COLOR: 'AQUA',\n EMAIL: 'no@example.com',\n PERSONAL_BIRTHDAY: '2020-07-18',\n WORK_POSITION: 'Report on affairs',\n PERSONAL_GENDER: 'M'\n} }}"
},
{
"name": "CLIENT_ID",
"value": "={{ $json.CLIENT_ID }}"
},
{
"name": "CLIENT_SECRET",
"value": "={{ $json.AUTH }}"
},
{
"name": "OPENLINE",
"value": "Y"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "e728c7eb-b169-4757-b4f4-b99ec4db0184",
"name": "Envoyer un message",
"type": "n8n-nodes-base.httpRequest",
"position": [
740,
420
],
"parameters": {
"url": "=https://{{ $json.data.DOMAIN }}/rest/imbot.message.add?auth={{ $json.data.AUTH }}",
"method": "POST",
"options": {},
"sendBody": true,
"bodyParameters": {
"parameters": [
{
"name": "DIALOG_ID",
"value": "={{ $json.data.DIALOG_ID }}"
},
{
"name": "MESSAGE",
"value": "={{ $json.data.MESSAGE }}"
},
{
"name": "AUTH",
"value": "={{ $json.data.AUTH }}"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "1a1fae0e-d74f-48b9-8ec8-4e926763de28",
"name": "Envoyer le message de bienvenue",
"type": "n8n-nodes-base.httpRequest",
"position": [
-220,
780
],
"parameters": {
"url": "=https://{{$json.DOMAIN}}/rest/imbot.message.add?auth={{$json.AUTH}}",
"method": "POST",
"options": {},
"sendBody": true,
"bodyParameters": {
"parameters": [
{
"name": "DIALOG_ID",
"value": "={{ $json.DIALOG_ID }}"
},
{
"name": "MESSAGE",
"value": "={{ $json.MESSAGE }}"
},
{
"name": "AUTH",
"value": "={{ $json.AUTH }}"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "f377d8eb-2a90-4ca5-8bd8-122c8df2ced3",
"name": "Traiter la suppression",
"type": "n8n-nodes-base.noOp",
"position": [
-420,
1100
],
"parameters": {},
"typeVersion": 1
},
{
"id": "faa4c61e-faf4-4bd7-b096-706d3c5cf366",
"name": "Réponse de succès",
"type": "n8n-nodes-base.respondToWebhook",
"position": [
1200,
700
],
"parameters": {
"options": {
"responseCode": 200
},
"respondWith": "json",
"responseBody": "={\n \"result\": true\n}"
},
"typeVersion": 1.1
},
{
"id": "ade154b4-64d9-4ecd-8a83-328002c98569",
"name": "Réponse d'erreur",
"type": "n8n-nodes-base.respondToWebhook",
"position": [
-820,
780
],
"parameters": {
"options": {
"responseCode": 401
},
"respondWith": "json",
"responseBody": "={{\n \"result\": false,\n \"error\": \"Invalid application token\"\n}}"
},
"typeVersion": 1.1
},
{
"id": "a5866396-3a25-4bbf-81b2-56a8d35fc63b",
"name": "Fusionner les paramètres pour le sous-flux",
"type": "n8n-nodes-base.merge",
"position": [
-180,
1340
],
"parameters": {
"mode": "combine",
"options": {},
"combineBy": "combineAll"
},
"typeVersion": 3
},
{
"id": "feb3e1c0-4556-4d77-9e5e-42eb2c10a5f8",
"name": "Obtenir la liste des stockages disponibles",
"type": "n8n-nodes-base.httpRequest",
"position": [
-860,
2080
],
"parameters": {
"url": "=https://{{ $json.domain }}/rest/disk.storage.getlist.json?auth={{ $json.access_token }}",
"method": "POST",
"options": {},
"jsonBody": "={\n\"filter\": {\n\t\t\t\t\"ENTITY_TYPE\": \"common\",\n\t\t\t\t\"%NAME\": \"{{ $json.storageName }}\"\n }\n}\n",
"sendBody": true,
"specifyBody": "json"
},
"typeVersion": 4.2
},
{
"id": "7bb0412e-57ab-4a63-aec2-5db64b83ef7e",
"name": "Obtenir la liste des fichiers et dossiers",
"type": "n8n-nodes-base.httpRequest",
"position": [
-640,
2080
],
"parameters": {
"url": "=https://{{ $('Execute Workflow Trigger').item.json.domain }}/rest/disk.storage.getchildren.json?auth={{ $('Execute Workflow Trigger').item.json.access_token }}",
"method": "POST",
"options": {},
"jsonBody": "={\n\"id\": {{ $json.result[0].ID }},\n\"filter\": {\n\t\t\t\t\"TYPE\": \"folder\",\n\t\t\t\t\"%NAME\": \"{{ $('Execute Workflow Trigger').item.json.folderName }}\"\n }\n}\n",
"sendBody": true,
"specifyBody": "json"
},
"typeVersion": 4.2
},
{
"id": "5528a3be-375a-4077-a346-2eb77cf9160f",
"name": "Obtenir la liste des fichiers des dossiers",
"type": "n8n-nodes-base.httpRequest",
"position": [
-420,
2080
],
"parameters": {
"url": "=https://{{ $('Execute Workflow Trigger').item.json.domain }}/rest/disk.folder.getchildren.json?auth={{ $('Execute Workflow Trigger').item.json.access_token }}",
"method": "POST",
"options": {},
"sendBody": true,
"bodyParameters": {
"parameters": [
{
"name": "id",
"value": "={{ $json.result[0].ID }}"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "f713eda1-f51e-484d-a98a-f359bc7ce654",
"name": "Télécharger le fichier",
"type": "n8n-nodes-base.httpRequest",
"position": [
280,
2080
],
"parameters": {
"url": "={{ $json.DOWNLOAD_URL }}",
"options": {}
},
"typeVersion": 4.2
},
{
"id": "3b2c67ea-bb6c-49c8-b55f-ffde7d1d8e83",
"name": "Chargeur de données par défaut",
"type": "@n8n/n8n-nodes-langchain.documentDefaultDataLoader",
"position": [
700,
2280
],
"parameters": {
"loader": "pdfLoader",
"options": {
"splitPages": true
},
"dataType": "binary"
},
"typeVersion": 1
},
{
"id": "0b5c2963-3692-469d-a1ce-66fe598dc25f",
"name": "Séparateur de texte récursif par caractère",
"type": "@n8n/n8n-nodes-langchain.textSplitterRecursiveCharacterTextSplitter",
"position": [
840,
2460
],
"parameters": {
"options": {},
"chunkOverlap": 100
},
"typeVersion": 1
},
{
"id": "52bfdf6b-0fb1-4e85-b31d-ec6c9ef912d8",
"name": "Séparer les fichiers et dossiers du dossier",
"type": "n8n-nodes-base.splitOut",
"position": [
-180,
2080
],
"parameters": {
"options": {},
"fieldToSplitOut": "result"
},
"typeVersion": 1
},
{
"id": "fd53fca7-d11d-4254-be56-9a62b6f0fadf",
"name": "Filtrer les fichiers",
"type": "n8n-nodes-base.filter",
"position": [
40,
2080
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "6e68a8be-c155-41c7-ace4-bf76bfd362fc",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.TYPE }}",
"rightValue": "file"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "748a65d3-dceb-4787-a068-b364371b392b",
"name": "Déplacer les fichiers vers le dossier de stockage Vector",
"type": "n8n-nodes-base.httpRequest",
"position": [
520,
1860
],
"parameters": {
"url": "=https://{{ $('Execute Workflow Trigger').item.json.domain }}/rest/disk.file.moveto.json?auth={{ $('Execute Workflow Trigger').item.json.access_token }}",
"method": "POST",
"options": {},
"sendBody": true,
"bodyParameters": {
"parameters": [
{
"name": "id",
"value": "={{ $json.ID }}"
},
{
"name": "targetFolderId",
"value": "={{ $('Get a list of Folders files').item.json.result[0].ID }}"
}
]
}
},
"executeOnce": false,
"typeVersion": 4.2
},
{
"id": "47f3aec5-c3cb-4d3e-97bc-8b708ccc0db5",
"name": "Déclencher le flux de travail",
"type": "n8n-nodes-base.executeWorkflowTrigger",
"position": [
-1080,
2080
],
"parameters": {},
"typeVersion": 1
},
{
"id": "9d3eb788-96cf-4c01-af5f-2beb1f6fa7b8",
"name": "Note autocollante",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1160,
1780
],
"parameters": {
"width": 2168.7691983135305,
"height": 818.1434255918864,
"content": "Subworkflow for Register Bot\nHere are files vector stored for Open line chanel bot\nAfter files are stored they are moved to subfolder"
},
"typeVersion": 1
},
{
"id": "91c26264-a61d-426c-a044-e2b287e54de0",
"name": "Magasin de vecteurs Qdrant",
"type": "@n8n/n8n-nodes-langchain.vectorStoreQdrant",
"position": [
580,
2080
],
"parameters": {
"mode": "insert",
"options": {
"collectionConfig": ""
},
"qdrantCollection": {
"__rl": true,
"mode": "list",
"value": "bitrix-docs",
"cachedResultName": "bitrix-docs"
}
},
"typeVersion": 1
},
{
"id": "0dd69952-402e-4d9e-a44f-7cf96ab4055e",
"name": "Embeddings Ollama",
"type": "@n8n/n8n-nodes-langchain.embeddingsOllama",
"position": [
500,
2280
],
"parameters": {
"model": "nomic-embed-text:latest"
},
"typeVersion": 1
},
{
"id": "fcfbfe53-da04-48f2-9a62-204a8f1f06a8",
"name": "Retriever de magasin de vecteurs",
"type": "@n8n/n8n-nodes-langchain.retrieverVectorStore",
"position": [
140,
240
],
"parameters": {
"topK": 10
},
"typeVersion": 1
},
{
"id": "22d3be40-b74a-453f-8f52-8974b1527d49",
"name": "Chaîne de questions et réponses",
"type": "@n8n/n8n-nodes-langchain.chainRetrievalQa",
"position": [
0,
0
],
"parameters": {
"text": "={{ $json.MESSAGE_ORI }}",
"options": {
"systemPromptTemplate": "=Use the following pieces of context to answer the user's question.\nIf you don't know the answer, just say that you don't know, don't try to make up an answer.\n\n----------------\n{context}\n\nYour response must contain **only** the following key-value pairs:\n- `\"DIALOG_ID\"`: **Use exactly** this value from the input: `{{ $json.DIALOG_ID }}`\n- `\"AUTH\"`: **Use exactly** this value from the input: `{{ $json.AUTH }}`\n- `\"DOMAIN\"`: **Use exactly** this value from the input: `{{ $json.DOMAIN }}`\n- `\"MESSAGE\"`: **Your AI-generated response**, based on the conversation history and the user's input.\n\n**Do not modify** the values of `\"DIALOG_ID\"`, `\"AUTH\"`, or `\"DOMAIN\"`. They must remain exactly as received from the input. \nThe `\"MESSAGE\"` field must contain a relevant and clear response.\n\nIf the user asks **\"find out more about me\"**, respond with: \n*\"I am a Retrieval-Augmented Generation (RAG) system that answers questions based on uploaded documents and provided context.\"*"
},
"promptType": "define"
},
"typeVersion": 1.4
},
{
"id": "fb19f0b5-72cb-4ccd-ac0e-75ea3a32c9cc",
"name": "Préparer les paramètres de sortie",
"type": "n8n-nodes-base.set",
"position": [
440,
60
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "ef09b5f8-2111-4731-8317-e338885a10c3",
"name": "data",
"type": "object",
"value": "={{ $json.response.text.removeMarkdown().replace(/`+$/, '')}}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "52429ac1-d738-49d7-81a8-725df6587312",
"name": "Embeddings Ollama1",
"type": "@n8n/n8n-nodes-langchain.embeddingsOllama",
"position": [
360,
600
],
"parameters": {
"model": "nomic-embed-text:latest"
},
"typeVersion": 1
},
{
"id": "bade110b-d252-4633-9ecf-44a42772b8d5",
"name": "Google Gemini Modèle de chat",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
-60,
300
],
"parameters": {
"options": {},
"modelName": "models/gemini-2.0-flash"
},
"typeVersion": 1
},
{
"id": "41eb5179-6195-485b-848b-46bb997de38e",
"name": "Magasin de vecteurs Qdrant1",
"type": "@n8n/n8n-nodes-langchain.vectorStoreQdrant",
"position": [
160,
420
],
"parameters": {
"options": {},
"qdrantCollection": {
"__rl": true,
"mode": "list",
"value": "bitrix-docs",
"cachedResultName": "bitrix-docs"
}
},
"typeVersion": 1
},
{
"id": "484cbc38-4c6f-4d3d-9409-b04df2c7e102",
"name": "Exécuter le sous-flux",
"type": "n8n-nodes-base.executeWorkflow",
"position": [
200,
1340
],
"parameters": {
"options": {},
"workflowId": {
"__rl": true,
"mode": "id",
"value": "={{ $workflow.id }}"
}
},
"typeVersion": 1.1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "e3e24337-997c-4ce2-b8c1-3e6f8b9eb85c",
"connections": {
"0ead4d82-4d9b-4392-af4c-2c315068b983": {
"main": [
[
{
"node": "67b225b8-c2c2-4570-81cb-4c533ae75465",
"type": "main",
"index": 0
},
{
"node": "a5866396-3a25-4bbf-81b2-56a8d35fc63b",
"type": "main",
"index": 1
}
]
]
},
"4fee1441-4e30-4070-b596-15e121ca7320": {
"main": [
[
{
"node": "c21f6d64-0543-4958-9f64-501dce37893f",
"type": "main",
"index": 0
}
],
[
{
"node": "06a59835-2999-44b6-81bd-0601e5570113",
"type": "main",
"index": 0
}
],
[
{
"node": "40accf33-c217-497c-8172-6106eb15800f",
"type": "main",
"index": 0
}
],
[
{
"node": "f377d8eb-2a90-4ca5-8bd8-122c8df2ced3",
"type": "main",
"index": 0
}
]
]
},
"06a59835-2999-44b6-81bd-0601e5570113": {
"main": [
[
{
"node": "1a1fae0e-d74f-48b9-8ec8-4e926763de28",
"type": "main",
"index": 0
}
]
]
},
"22a7c363-ab5a-4adc-9de4-268f3f3739f3": {
"main": [
[
{
"node": "faa4c61e-faf4-4bd7-b096-706d3c5cf366",
"type": "main",
"index": 0
},
{
"node": "a5866396-3a25-4bbf-81b2-56a8d35fc63b",
"type": "main",
"index": 0
}
]
]
},
"e728c7eb-b169-4757-b4f4-b99ec4db0184": {
"main": [
[
{
"node": "faa4c61e-faf4-4bd7-b096-706d3c5cf366",
"type": "main",
"index": 0
}
]
]
},
"f713eda1-f51e-484d-a98a-f359bc7ce654": {
"main": [
[
{
"node": "748a65d3-dceb-4787-a068-b364371b392b",
"type": "main",
"index": 0
},
{
"node": "91c26264-a61d-426c-a044-e2b287e54de0",
"type": "main",
"index": 0
}
]
]
},
"f377d8eb-2a90-4ca5-8bd8-122c8df2ced3": {
"main": [
[
{
"node": "faa4c61e-faf4-4bd7-b096-706d3c5cf366",
"type": "main",
"index": 0
}
]
]
},
"67b225b8-c2c2-4570-81cb-4c533ae75465": {
"main": [
[
{
"node": "4fee1441-4e30-4070-b596-15e121ca7320",
"type": "main",
"index": 0
}
],
[
{
"node": "ade154b4-64d9-4ecd-8a83-328002c98569",
"type": "main",
"index": 0
}
]
]
},
"40accf33-c217-497c-8172-6106eb15800f": {
"main": [
[
{
"node": "22a7c363-ab5a-4adc-9de4-268f3f3739f3",
"type": "main",
"index": 0
}
]
]
},
"c21f6d64-0543-4958-9f64-501dce37893f": {
"main": [
[
{
"node": "22d3be40-b74a-453f-8f52-8974b1527d49",
"type": "main",
"index": 0
}
]
]
},
"dbd7b2c0-2b27-4c23-beb7-eec128da0787": {
"main": [
[
{
"node": "0ead4d82-4d9b-4392-af4c-2c315068b983",
"type": "main",
"index": 0
}
]
]
},
"fd53fca7-d11d-4254-be56-9a62b6f0fadf": {
"main": [
[
{
"node": "f713eda1-f51e-484d-a98a-f359bc7ce654",
"type": "main",
"index": 0
}
]
]
},
"0dd69952-402e-4d9e-a44f-7cf96ab4055e": {
"ai_embedding": [
[
{
"node": "91c26264-a61d-426c-a044-e2b287e54de0",
"type": "ai_embedding",
"index": 0
}
]
]
},
"1a1fae0e-d74f-48b9-8ec8-4e926763de28": {
"main": [
[
{
"node": "faa4c61e-faf4-4bd7-b096-706d3c5cf366",
"type": "main",
"index": 0
}
]
]
},
"52429ac1-d738-49d7-81a8-725df6587312": {
"ai_embedding": [
[
{
"node": "41eb5179-6195-485b-848b-46bb997de38e",
"type": "ai_embedding",
"index": 0
}
]
]
},
"3b2c67ea-bb6c-49c8-b55f-ffde7d1d8e83": {
"ai_document": [
[
{
"node": "91c26264-a61d-426c-a044-e2b287e54de0",
"type": "ai_document",
"index": 0
}
]
]
},
"484cbc38-4c6f-4d3d-9409-b04df2c7e102": {
"main": [
[
{
"node": "faa4c61e-faf4-4bd7-b096-706d3c5cf366",
"type": "main",
"index": 0
}
]
]
},
"41eb5179-6195-485b-848b-46bb997de38e": {
"ai_vectorStore": [
[
{
"node": "fcfbfe53-da04-48f2-9a62-204a8f1f06a8",
"type": "ai_vectorStore",
"index": 0
}
]
]
},
"fcfbfe53-da04-48f2-9a62-204a8f1f06a8": {
"ai_retriever": [
[
{
"node": "22d3be40-b74a-453f-8f52-8974b1527d49",
"type": "ai_retriever",
"index": 0
}
]
]
},
"47f3aec5-c3cb-4d3e-97bc-8b708ccc0db5": {
"main": [
[
{
"node": "feb3e1c0-4556-4d77-9e5e-42eb2c10a5f8",
"type": "main",
"index": 0
}
]
]
},
"bade110b-d252-4633-9ecf-44a42772b8d5": {
"ai_languageModel": [
[
{
"node": "22d3be40-b74a-453f-8f52-8974b1527d49",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"fb19f0b5-72cb-4ccd-ac0e-75ea3a32c9cc": {
"main": [
[
{
"node": "e728c7eb-b169-4757-b4f4-b99ec4db0184",
"type": "main",
"index": 0
}
]
]
},
"22d3be40-b74a-453f-8f52-8974b1527d49": {
"main": [
[
{
"node": "fb19f0b5-72cb-4ccd-ac0e-75ea3a32c9cc",
"type": "main",
"index": 0
}
]
]
},
"5528a3be-375a-4077-a346-2eb77cf9160f": {
"main": [
[
{
"node": "52bfdf6b-0fb1-4e85-b31d-ec6c9ef912d8",
"type": "main",
"index": 0
}
]
]
},
"feb3e1c0-4556-4d77-9e5e-42eb2c10a5f8": {
"main": [
[
{
"node": "7bb0412e-57ab-4a63-aec2-5db64b83ef7e",
"type": "main",
"index": 0
}
]
]
},
"a5866396-3a25-4bbf-81b2-56a8d35fc63b": {
"main": [
[
{
"node": "484cbc38-4c6f-4d3d-9409-b04df2c7e102",
"type": "main",
"index": 0
}
]
]
},
"0b5c2963-3692-469d-a1ce-66fe598dc25f": {
"ai_textSplitter": [
[
{
"node": "3b2c67ea-bb6c-49c8-b55f-ffde7d1d8e83",
"type": "ai_textSplitter",
"index": 0
}
]
]
},
"52bfdf6b-0fb1-4e85-b31d-ec6c9ef912d8": {
"main": [
[
{
"node": "fd53fca7-d11d-4254-be56-9a62b6f0fadf",
"type": "main",
"index": 0
}
]
]
},
"7bb0412e-57ab-4a63-aec2-5db64b83ef7e": {
"main": [
[
{
"node": "5528a3be-375a-4077-a346-2eb77cf9160f",
"type": "main",
"index": 0
}
]
]
}
}
}Comment utiliser ce workflow ?
Copiez le code de configuration JSON ci-dessus, créez un nouveau workflow dans votre instance n8n et sélectionnez "Importer depuis le JSON", collez la configuration et modifiez les paramètres d'authentification selon vos besoins.
Dans quelles scénarios ce workflow est-il adapté ?
Avancé - Autres
Est-ce payant ?
Ce workflow est entièrement gratuit et peut être utilisé directement. Veuillez noter que les services tiers utilisés dans le workflow (comme l'API OpenAI) peuvent nécessiter un paiement de votre part.
Workflows recommandés
Ferenc Erb
@fefehunWith 30+ years in IT and 20+ years in leadership, I specialize in no-code automation with n8n, optimizing workflows and integrating systems efficiently. As an Agile Coach and Project Manager, I’ve led teams, managed R&D, and driven IT transformations. Skilled in n8n, Java, Node.js, and cloud solutions, I help businesses streamline operations. Let’s connect if you need an n8n expert for automation!
Partager ce workflow