Selector de modelos dinámico de conformidad GDPR con Requesty
Este es unEngineering, AI Chatbotflujo de automatización del dominio deautomatización que contiene 20 nodos.Utiliza principalmente nodos como N8n, Set, Code, Merge, SplitOut. Selector dinámico de modelos de IA para cumplimiento de GDPR mediante Requesty y Google Sheets
- •Pueden requerirse credenciales de autenticación para la API de destino
- •Credenciales de API de Google Sheets
- •Clave de API de OpenAI
Nodos utilizados (20)
Categoría
{
"id": "xUuPJFkQw5aJ9Bfg",
"meta": {
"instanceId": "7f03117cd0731766b3ae8ea65a9638f11161d03d7cfb20d1531642698c9d0de3"
},
"name": "Dynamic GDPR-Compliant Model Selector with Requesty",
"tags": [],
"nodes": [
{
"id": "fb6de8aa-2c8f-488e-8002-7aeb96861b3d",
"name": "Inicializar Flujo de Trabajo",
"type": "n8n-nodes-base.manualTrigger",
"position": [
-180,
-1140
],
"parameters": {},
"typeVersion": 1
},
{
"id": "5f73d2cb-368a-4ca6-af4a-7e97176b35c0",
"name": "Obtener Modelos Disponibles",
"type": "n8n-nodes-base.httpRequest",
"position": [
40,
-1040
],
"parameters": {
"url": "https://router.requesty.ai/v1/models?provider=coding",
"options": {}
},
"typeVersion": 4.2
},
{
"id": "63d190c6-ac9d-41e7-8e36-a1a045c5cc13",
"name": "Dividir Datos del Modelo",
"type": "n8n-nodes-base.splitOut",
"position": [
260,
-1040
],
"parameters": {
"include": "allOtherFields",
"options": {},
"fieldToSplitOut": "data"
},
"typeVersion": 1
},
{
"id": "f95eb1c6-b6d7-492d-822c-02bc000c6749",
"name": "Extraer IDs de Modelo",
"type": "n8n-nodes-base.set",
"position": [
480,
-1040
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "be11b412-dfb1-47fd-be24-e8dead708405",
"name": "id",
"type": "string",
"value": "={{ $json.data.id }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "b9595c92-7e9a-4688-aa12-bf558af42481",
"name": "Obtener Flujo de Trabajo Actual",
"type": "n8n-nodes-base.n8n",
"position": [
480,
-1240
],
"parameters": {
"operation": "get",
"workflowId": {
"__rl": true,
"mode": "id",
"value": "={{ $workflow.id }}"
},
"requestOptions": {}
},
"executeOnce": true,
"typeVersion": 1
},
{
"id": "d8b903d3-53ec-47fd-9dfa-bdb131dae3bf",
"name": "Combinar Datos",
"type": "n8n-nodes-base.merge",
"position": [
700,
-1140
],
"parameters": {},
"typeVersion": 3.2
},
{
"id": "bc7dde1f-0afd-47c9-a851-ded2ceb37dbf",
"name": "Actualizar Opciones del Menú Desplegable",
"type": "n8n-nodes-base.code",
"position": [
920,
-1140
],
"parameters": {
"jsCode": "// n8n Code Node - Update Form Dropdown Options\n// First item = Workflow JSON, From second item = New Model IDs\n\ntry {\n // Get all input items\n const allInputs = $input.all();\n \n // First item is the workflow\n const workflowData = allInputs[0]?.json;\n \n // From second item onwards are the new model IDs\n const newOptions = [];\n \n // Iterate through all items from index 1\n for (let i = 1; i < allInputs.length; i++) {\n const item = allInputs[i];\n \n // Extract ID from the json object\n if (item?.json?.id) {\n newOptions.push(item.json.id);\n }\n }\n \n // Fallback if no IDs found\n if (newOptions.length === 0) {\n newOptions.push('No models available');\n }\n \n // Copy and modify workflow\n const result = JSON.parse(JSON.stringify(workflowData));\n \n // Go through workflow nodes\n if (result.nodes) {\n result.nodes.forEach(node => {\n if (node.type === 'n8n-nodes-base.formTrigger' && \n node.parameters?.formFields?.values) {\n \n node.parameters.formFields.values.forEach(field => {\n if (field.fieldType === 'dropdown' && field.fieldOptions) {\n // Set new dropdown options\n field.fieldOptions.values = newOptions.map(option => ({ option }));\n }\n });\n }\n });\n }\n \n return result;\n \n} catch (error) {\n // Error handling with debug info\n return {\n error: error.message,\n totalInputs: $input.all().length,\n sampleIds: $input.all().slice(1, 4).map(item => item?.json?.id),\n fallback: $input.first()?.json\n };\n}"
},
"typeVersion": 2
},
{
"id": "f672fce1-7081-4fd1-a898-dddabe38f853",
"name": "Actualizar Flujo de Trabajo",
"type": "n8n-nodes-base.n8n",
"position": [
1140,
-1140
],
"parameters": {
"operation": "update",
"workflowId": {
"__rl": true,
"mode": "id",
"value": "={{ $json.id }}"
},
"requestOptions": {},
"workflowObject": "={{ JSON.stringify($json) }}"
},
"typeVersion": 1
},
{
"id": "6e12465c-2848-40fc-a1f8-ae2585d5882d",
"name": "Formulario de Selección de Modelo",
"type": "n8n-nodes-base.formTrigger",
"position": [
-180,
-780
],
"webhookId": "a9562558-7962-4a3a-8b3f-82e5ba5bef1a",
"parameters": {
"options": {},
"formTitle": "Select AI Model",
"formFields": {
"values": [
{
"fieldType": "dropdown",
"fieldLabel": "AI Language Model",
"fieldOptions": {
"values": [
{}
]
}
}
]
}
},
"typeVersion": 2.2
},
{
"id": "fa81a3f1-0f28-4049-b6b2-f6f486e67e0d",
"name": "Establecer Modelo Seleccionado",
"type": "n8n-nodes-base.set",
"position": [
40,
-780
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "a132682c-fbbb-4abc-bdde-be93bf0cb992",
"name": "model",
"type": "string",
"value": "={{ $json.fieldName }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "0196af9b-aa3d-45bd-a6f1-92f96486ced9",
"name": "Interfaz de Chat",
"type": "@n8n/n8n-nodes-langchain.chatTrigger",
"position": [
-180,
-520
],
"webhookId": "47d7c77b-1904-4d17-ba39-a1d5b85069be",
"parameters": {
"options": {}
},
"typeVersion": 1.1
},
{
"id": "6191c42f-ece1-421d-b9cf-c9ab213f2f36",
"name": "Solicitud AI API",
"type": "n8n-nodes-base.httpRequest",
"position": [
480,
-520
],
"parameters": {
"url": "https://router.requesty.ai/v1/chat/completions",
"method": "POST",
"options": {
"response": {
"response": {
"responseFormat": "json"
}
}
},
"jsonBody": "={\n \"model\": \"{{ $json.model }}\",\n \"messages\": [\n { \"role\": \"system\", \"content\": \"You are a helpful assistant.\" },\n { \"role\": \"user\", \"content\": \"{{ $('Chat Interface').item.json.chatInput }}\" }\n ],\n \"max_tokens\": 200,\n \"temperature\": 0.7\n}",
"sendBody": true,
"sendHeaders": true,
"specifyBody": "json",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"headerParameters": {
"parameters": [
{
"name": "Content-Type",
"value": "application/json"
},
{
"name": "Authorization",
"value": "Bearer {{ $credentials.requestyApi.apiKey }}"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "ebcd8d4f-4d15-4755-971e-14a932adda23",
"name": "Extraer Respuesta",
"type": "n8n-nodes-base.set",
"position": [
700,
-520
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "f1ec57e7-d781-406f-b6ea-68906c679a2e",
"name": "content",
"type": "string",
"value": "={{ $json.choices[0].message.content }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "0ced2b03-0d09-474a-be65-2f49ddcf95fa",
"name": "Obtener Modelo Actual",
"type": "n8n-nodes-base.set",
"position": [
260,
-520
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "6470970a-10ce-4bc4-8fd0-de4c4e309e2d",
"name": "model",
"type": "string",
"value": "={{ $json.model }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "7379d69a-9066-48be-a163-fea478bb2cef",
"name": "Guardar Selección de Modelo",
"type": "n8n-nodes-base.googleSheets",
"position": [
480,
-780
],
"parameters": {
"columns": {
"value": {},
"schema": [],
"mappingMode": "autoMapInputData",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "appendOrUpdate",
"sheetName": {
"__rl": true,
"mode": "name",
"value": "Current_Model"
},
"documentId": {
"__rl": true,
"mode": "id",
"value": "YOUR_GOOGLE_SHEET_ID"
}
},
"typeVersion": 4.6
},
{
"id": "b8a03a91-5839-46e4-891c-e9793738f3dc",
"name": "Limpiar Selección Anterior",
"type": "n8n-nodes-base.googleSheets",
"position": [
260,
-780
],
"parameters": {
"operation": "clear",
"sheetName": {
"__rl": true,
"mode": "name",
"value": "Current_Model"
},
"documentId": {
"__rl": true,
"mode": "id",
"value": "YOUR_GOOGLE_SHEET_ID"
}
},
"typeVersion": 4.6
},
{
"id": "58bc8a11-7f9e-452a-ad0f-d05f3c56eda9",
"name": "Leer Modelo Actual",
"type": "n8n-nodes-base.googleSheets",
"position": [
40,
-520
],
"parameters": {
"options": {},
"sheetName": {
"__rl": true,
"mode": "name",
"value": "Current_Model"
},
"documentId": {
"__rl": true,
"mode": "id",
"value": "YOUR_GOOGLE_SHEET_ID"
}
},
"typeVersion": 4.6
},
{
"id": "9bcf3d2d-f320-44af-8c02-62b50a41a299",
"name": "Agente de IA (Opcional)",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
40,
-240
],
"parameters": {
"options": {}
},
"typeVersion": 2
},
{
"id": "32c0a603-b40e-4830-ab8d-592bcd3d9c58",
"name": "Modelo de Chat OpenAI",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
40,
20
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "openai/gpt-4o-mini",
"cachedResultName": "openai/gpt-4o-mini"
},
"options": {}
},
"typeVersion": 1.2
},
{
"id": "fb9667d4-2b39-4ba5-b67a-d3671f814124",
"name": "Formatear Respuesta",
"type": "n8n-nodes-base.code",
"position": [
920,
-520
],
"parameters": {
"jsCode": "return [{\n json: {\n text: $json.content\n }\n}];\n"
},
"typeVersion": 2
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "e65bf989-9806-4cc5-9f6d-e4fafa7883c7",
"connections": {
"d8b903d3-53ec-47fd-9dfa-bdb131dae3bf": {
"main": [
[
{
"node": "bc7dde1f-0afd-47c9-a851-ded2ceb37dbf",
"type": "main",
"index": 0
}
]
]
},
"6191c42f-ece1-421d-b9cf-c9ab213f2f36": {
"main": [
[
{
"node": "ebcd8d4f-4d15-4755-971e-14a932adda23",
"type": "main",
"index": 0
}
]
]
},
"0196af9b-aa3d-45bd-a6f1-92f96486ced9": {
"main": [
[
{
"node": "58bc8a11-7f9e-452a-ad0f-d05f3c56eda9",
"type": "main",
"index": 0
}
]
]
},
"ebcd8d4f-4d15-4755-971e-14a932adda23": {
"main": [
[
{
"node": "fb9667d4-2b39-4ba5-b67a-d3671f814124",
"type": "main",
"index": 0
}
]
]
},
"63d190c6-ac9d-41e7-8e36-a1a045c5cc13": {
"main": [
[
{
"node": "f95eb1c6-b6d7-492d-822c-02bc000c6749",
"type": "main",
"index": 0
}
]
]
},
"f95eb1c6-b6d7-492d-822c-02bc000c6749": {
"main": [
[
{
"node": "d8b903d3-53ec-47fd-9dfa-bdb131dae3bf",
"type": "main",
"index": 1
}
]
]
},
"0ced2b03-0d09-474a-be65-2f49ddcf95fa": {
"main": [
[
{
"node": "6191c42f-ece1-421d-b9cf-c9ab213f2f36",
"type": "main",
"index": 0
}
]
]
},
"32c0a603-b40e-4830-ab8d-592bcd3d9c58": {
"ai_languageModel": [
[
{
"node": "9bcf3d2d-f320-44af-8c02-62b50a41a299",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"58bc8a11-7f9e-452a-ad0f-d05f3c56eda9": {
"main": [
[
{
"node": "0ced2b03-0d09-474a-be65-2f49ddcf95fa",
"type": "main",
"index": 0
}
]
]
},
"fa81a3f1-0f28-4049-b6b2-f6f486e67e0d": {
"main": [
[
{
"node": "b8a03a91-5839-46e4-891c-e9793738f3dc",
"type": "main",
"index": 0
}
]
]
},
"fb6de8aa-2c8f-488e-8002-7aeb96861b3d": {
"main": [
[
{
"node": "b9595c92-7e9a-4688-aa12-bf558af42481",
"type": "main",
"index": 0
},
{
"node": "5f73d2cb-368a-4ca6-af4a-7e97176b35c0",
"type": "main",
"index": 0
}
]
]
},
"b9595c92-7e9a-4688-aa12-bf558af42481": {
"main": [
[
{
"node": "d8b903d3-53ec-47fd-9dfa-bdb131dae3bf",
"type": "main",
"index": 0
}
]
]
},
"6e12465c-2848-40fc-a1f8-ae2585d5882d": {
"main": [
[
{
"node": "fa81a3f1-0f28-4049-b6b2-f6f486e67e0d",
"type": "main",
"index": 0
}
]
]
},
"5f73d2cb-368a-4ca6-af4a-7e97176b35c0": {
"main": [
[
{
"node": "63d190c6-ac9d-41e7-8e36-a1a045c5cc13",
"type": "main",
"index": 0
}
]
]
},
"bc7dde1f-0afd-47c9-a851-ded2ceb37dbf": {
"main": [
[
{
"node": "f672fce1-7081-4fd1-a898-dddabe38f853",
"type": "main",
"index": 0
}
]
]
},
"b8a03a91-5839-46e4-891c-e9793738f3dc": {
"main": [
[
{
"node": "7379d69a-9066-48be-a163-fea478bb2cef",
"type": "main",
"index": 0
}
]
]
}
}
}¿Cómo usar este flujo de trabajo?
Copie el código de configuración JSON de arriba, cree un nuevo flujo de trabajo en su instancia de n8n y seleccione "Importar desde JSON", pegue la configuración y luego modifique la configuración de credenciales según sea necesario.
¿En qué escenarios es adecuado este flujo de trabajo?
Avanzado - Ingeniería, Chatbot de IA
¿Es de pago?
Este flujo de trabajo es completamente gratuito, puede importarlo y usarlo directamente. Sin embargo, tenga en cuenta que los servicios de terceros utilizados en el flujo de trabajo (como la API de OpenAI) pueden requerir un pago por su cuenta.
Flujos de trabajo relacionados recomendados
Stefan
@stefanCompartir este flujo de trabajo