⚡️ ¿Por qué combinar n8n y LangChain? La unión perfecta para rebeldes digitales
¿Estás hasta las narices de copiar y pegar en ChatGPT? ¿Quieres automatizar tus flujos de IA pero no tienes ganas de escribir 500 líneas de Python? Estás en el lugar adecuado, porque hoy vamos a combinar la potencia visual de n8n con el cerebro de LangChain para crear pipelines de IA que funcionen solos mientras tú te tomas una cerveza.
🧰 Herramientas que necesitarás
- n8n: El cerebro orquestador visual (drag & drop) que conectará todo.
- LangChain: Framework para conectar y personalizar modelos de lenguaje.
- Un modelo LLM: OpenAI, OpenRouter, Ollama local o APIs alternativas.
- Base de datos: PostgreSQL para almacenar datos y conversaciones (opcional pero recomendado).
- Un servidor: Puedes usar tu PC, pero idealmente una Raspberry Pi 4 o servidor casero.
1️⃣ Instalación: montando el laboratorio punk
Opción A: Instalación local con Node.js
# Instalar Node.js (si no lo tienes)
# Luego ejecutar:
npx n8n
# La interfaz estará disponible en http://localhost:5678
Opción B: Instalación con Docker (recomendada)(guía punk aquí)
Truco punk #1: Si lo ejecutas en producción, añade --restart always
para que Docker reinicie n8n automáticamente tras reinicios del servidor. La fiabilidad también es punk.
2️⃣ Primera conexión: OpenAI o Ollama
Para comenzar necesitamos conectar n8n con un cerebro IA. Tienes dos opciones:
Opción A: OpenAI (API pagando)
- Accede a tu dashboard de n8n (http://localhost:5678).
- Crea un nuevo workflow haciendo clic en «Workflows» → «+ Workflow».
- Añade un nodo haciendo clic en el botón «+», busca «OpenAI» y selecciónalo.
- Configura tu API key:
- Haz clic en «Add Credential» → «OpenAI API»
- Pega tu API key de OpenAI
- Guarda la credencial
- Configura el nodo OpenAI:
- Operación: «Chat»
- Modelo: «gpt-4o» (o el que prefieras)
- Modo de respuesta: «JSON» (importante para procesamiento posterior)
- Prompt: «Eres un asistente punk. Responde con actitud rebelde.»
Opción B: Ollama (totalmente local y gratis)
- Instala Ollama en tu servidor:
curl -fsSL https://ollama.com/install.sh | sh
- Descarga un modelo (por ejemplo, DeepSeek R1):
ollama pull deepseek-r1
- En n8n, añade un nodo HTTP Request:
- Método: POST
- URL: http://localhost:11434/api/chat
- Body: JSON
{ "model": "deepseek-r1", "messages": [ { "role": "system", "content": "Eres un asistente punk. Responde con actitud rebelde." }, { "role": "user", "content": "{{$json.input}}" } ] }
3️⃣ Integración con LangChain: el poder real comienza aquí
¡Ahora viene lo bueno! LangChain nos permite crear pipelines avanzadas con memoria, herramientas y contexto. Afortunadamente, n8n tiene integración nativa:
Paso 1: Añadir el nodo LangChain
- Añade un nodo haciendo clic en el botón «+».
- Busca «LangChain» y selecciónalo.
- Configura tu modelo:
- Si usas OpenAI, selecciona la credencial que creaste antes.
- Si prefieres Ollama local, configura la URL
http://localhost:11434
y el modelo.
Paso 2: Configurar una cadena LangChain básica
{
"systemMessagePrompt": "Eres un asistente punk experto en automatización. Ayuda a los usuarios a crear flujos de trabajo rebeldes.",
"humanMessagePrompt": "{{$json.pregunta}}",
"memory": {
"type": "buffer",
"memoryKey": "chat_history",
"inputKey": "pregunta",
"outputKey": "respuesta",
"returnMessages": true
}
}
Truco punk #2: La memoria es crucial para tener conversaciones con contexto. LangChain en n8n soporta varios tipos: Buffer, ConversationSummary, Vector store, etc. Elige según tu caso.
4️⃣ Creando tu primer pipeline RAG (Retrieval Augmented Generation)
Ahora vamos a crear un sistema que busca información en tus propios datos antes de responder. Esto es lo que hace que la IA sea realmente útil, porque responde con tu información y no con datos genéricos.
Paso 1: Preparar la base de conocimiento
- Añade un nodo «HTTP Request» para obtener tus documentos o un nodo «Read Binary Files» si están en local.
- Añade un nodo «Text Splitter» para dividir el contenido en fragmentos manejables:
{ "text": "{{$node['HTTP Request'].json.content}}", "chunkSize": 1000, "chunkOverlap": 200 }
Paso 2: Crear embeddings y almacenarlos
- Añade un nodo «LangChain» configurado como «Embeddings»:
{ "operation": "embeddings", "model": "text-embedding-3-small", "texts": "={{$node['Text Splitter'].json.chunks}}" }
- Conecta con una base de vectores (Qdrant, Pinecone o incluso PostgreSQL con pgvector):
{ "operation": "insert", "collection": "mi_base_conocimiento", "vectors": "={{$node['LangChain'].json.embeddings}}", "metadata": "={{$node['Text Splitter'].json.metadata}}" }
Paso 3: Configurar la búsqueda y respuesta
{
"systemMessagePrompt": "Eres un asistente punk. Usa SOLO el contexto proporcionado para responder.",
"humanMessagePrompt": "{{$json.pregunta}}",
"memory": {
"type": "buffer",
"memoryKey": "chat_history"
},
"tools": [
{
"type": "vectorStoreRetriever",
"name": "buscar_en_mi_base",
"description": "Busca información en mis documentos",
"vectorStoreName": "mi_base_conocimiento",
"topK": 3
}
]
}
5️⃣ Creando un agente IA que ejecuta tareas
Esta es la parte más punk de todas: tu pipeline puede tomar decisiones y ejecutar acciones automáticamente.
Agente básico con herramientas
{
"model": "gpt-4o",
"temperature": 0,
"systemMessagePrompt": "Eres un agente automatizado. Tu trabajo es ayudar con tareas de automatización.",
"humanMessagePrompt": "{{$json.instruccion}}",
"agentType": "openai-functions",
"memory": {
"type": "buffer",
"memoryKey": "chat_history"
},
"tools": [
{
"type": "serpApi",
"name": "buscar_en_google",
"description": "Busca información actual en Google"
},
{
"type": "nodeFunction",
"name": "enviar_telegram",
"description": "Envía un mensaje por Telegram",
"operation": "custom",
"functionCode": "async function enviar(mensaje) { // código para enviar a Telegram }"
},
{
"type": "tool",
"name": "verificar_servidor",
"description": "Verifica el estado del servidor",
"returnDirect": false
}
]
}
6️⃣ Ejemplo real: Bot de soporte técnico inteligente
Pipeline completo:
- Trigger: Webhook o integración con Telegram/WhatsApp
- Consulta documentación: Vector search en tu base de conocimiento
- Verificación de acciones: ¿Necesita ejecutar comandos?
- Agente LangChain: Procesa y decide la respuesta
- Ejecución de acciones: Reiniciar servicios, verificar logs, etc.
- Respuesta al usuario: Mensaje con solución o más preguntas
Nodos clave del workflow:
Telegram → LangChain (RAG) → IF Branch → Execute Command → LangChain (Agent) → Telegram
7️⃣ Optimizaciones y solución de problemas
- Problema: Respuestas lentas.
Solución: Usa modelos locales como Ollama o asincronía en n8n. - Problema: Alucinaciones o respuestas incorrectas.
Solución: Mejora tu RAG con metadata y filtrado. - Problema: Error de conexión con Ollama.
Solución: Verifica que esté corriendo en la misma red o ajusta Docker para exponer los puertos correctamente. - Problema: Memoria limitada.
Solución: Usa el nodo «Set» para filtrar solo la información relevante del historial.
8️⃣ Plantillas para copiar y pegar
Workflow RAG completo con memoria
{
"nodes": [
{
"parameters": {
"authentication": "headerAuth",
"url": "http://localhost:11434/api/chat",
"option": {
"raw": {
"language": "json"
}
},
"body": {
"model": "deepseek-r1",
"messages": [
{
"role": "system",
"content": "Eres un asistente punk. Responde con actitud y usa la información provista."
},
{
"role": "user",
"content": "{{$json.pregunta}}"
}
],
"context": "{{$node['Vector Store'].json.results}}"
}
},
"name": "LLM Request",
"type": "n8n-nodes-base.httpRequest",
"position": [960, 300]
},
{
"parameters": {
"authentication": "serviceAccount",
"operation": "query",
"returnAll": true,
"query": "SELECT * FROM chat_history WHERE user_id = {{$json.user_id}} ORDER BY timestamp DESC LIMIT 10"
},
"name": "Get History",
"type": "n8n-nodes-base.postgres",
"position": [500, 300]
}
]
}
🎸 Conclusión: El futuro es automatizar lo aburrido
Con n8n y LangChain, has creado un sistema de IA que no solo responde preguntas, sino que ejecuta acciones, busca en tus datos y mantiene conversaciones con contexto. Y lo mejor: todo configurable con arrastrar y soltar, sin tener que escribir cientos de líneas de código Python.
¿Has creado algún pipeline interesante? ¿Te gustaría ver algún caso de uso específico en futuros artículos? Cuéntanos en los comentarios y ¡rebélate contra el código innecesario!