Skip to content
BotServBotServ
Node-REDAutomatizaciónOllamaIA LocalWorkflows

Node-RED para Automatización con IA

Conecta Node-RED con IA local. Instalación, integración Ollama, Function Calling, flujos RAG y ejemplos prácticos.

S

schutzgeist

9 min read
Node-RED para Automatización con IA

Node-RED para automatización con IA

Qué cubre este artículo sobre Node-RED y automatización con IA

  • Cómo instalar y configurar Node-RED para automatización con IA.
  • Cómo conectar Node-RED con Ollama y utilizar modelos locales en flujos.
  • Cómo implementar Function Calling, RAG y flujos de agentes en Node-RED.
  • Ejemplos prácticos de clasificación de correos, resumen de documentos y notificaciones.
  • Buenas prácticas en seguridad, rendimiento y mantenimiento.

Introducción: Node-RED para automatización con IA explicado de forma clara

Node-RED es una herramienta visual para automatización. Fue desarrollada originalmente por IBM para conectar dispositivos IoT y APIs. Hoy en día se utiliza para todo, desde Smart Home hasta integración empresarial. Con IA local, Node-RED se convierte en una plataforma potente para construir flujos de IA visualmente, sin necesidad de escribir código.

Este artículo está dirigido a usuarios que quieren ejecutar automatización con IA usando modelos locales y Node-RED como plataforma. Deberías entender qué es la IA local y cómo funciona Ollama. Encontrarás conceptos básicos de programación en IRC-Coding.de.

¿Por qué necesito Node-RED para automatización con IA?

Imagina que quieres clasificar automáticamente correos electrónicos, resumir documentos y enviar notificaciones, todo con IA local. Podrías escribir un script en Python, pero rápidamente se vuelve difícil de mantener. Node-RED te permite construir estos flujos visualmente: un nodo para recibir correos, otro para clasificación con IA, otro para ejecutar acciones.

Node-RED es especialmente útil cuando necesitas construir flujos con múltiples pasos, integrar diferentes APIs y que usuarios sin experiencia en programación puedan ajustar la lógica. La interfaz visual hace que los flujos sean comprensibles, y el editor de flujos permite experimentar rápidamente.

Node-RED para automatización con IA brevemente explicado

Node-RED es un editor de flujos basado en navegador donde conectas nodos mediante arrastrar y soltar. Cada nodo hace una cosa específica: recibir correos, enviar solicitudes HTTP, ejecutar JavaScript, llamar a IA. Para automatización con IA, conectas nodos de entrada (correo, webhook, programación) con nodos de IA (Ollama, OpenAI) y nodos de salida (correo, Slack, base de datos).

La idea central es simple: Node-RED es el puente visual entre entrada, IA y salida.

¿Para quién es este artículo?

  • Automatizadores, que quieren integrar IA en flujos existentes.
  • Usuarios que alojan su propia infraestructura, que necesitan IA local para automatización y buscan una interfaz visual.
  • Desarrolladores, que quieren evaluar flujos visuales.
  • Equipos, que desean construir flujos que incluso usuarios sin experiencia en programación puedan entender.

Es útil tener conocimientos previos en IA local, Ollama y programación básica en JavaScript.

Términos importantes sobre Node-RED e IA

  • Node-RED - Editor visual de flujos para automatización. Cuándo es útil: cuando quieres construir flujos visualmente.
  • Ollama - Servidor de modelos local. Cuándo es útil: como backend de IA para Node-RED.
  • Node - Nodo individual en un flujo. Cuándo es útil: realiza una tarea específica, por ejemplo, una solicitud HTTP.
  • Flow - Nodos conectados que forman un flujo de trabajo. Cuándo es útil: el script de automatización completo.
  • Function Calling - Función de IA que devuelve datos estructurados. Cuándo es útil: para toma de decisiones impulsada por IA.
  • RAG - Retrieval-Augmented Generation. Cuándo es útil: para enriquecer modelos con tus propios datos.
  • Docker - Plataforma de contenedores. Cuándo es útil: para ejecutar Node-RED de forma aislada.
  • Inject Node - Nodo que inicia un flujo manualmente o de forma programada. Cuándo es útil: para pruebas y automatización por horario.

Instalación de Node-RED

Con Docker

docker run -d \
  --name nodered \
  -p 1880:1880 \
  -v nodered-data:/data \
  --restart unless-stopped \
  nodered/node-red

Después abre http://localhost:1880 en tu navegador.

Con npm

npm install -g node-red
node-red

Con Proxmox LXC

Si utilizas Proxmox VE, puedes instalar Node-RED en un contenedor LXC:

# En el contenedor LXC
npm install -g node-red
# Configurar como servicio
npm install -g pm2
pm2 start node-red
pm2 startup
pm2 save

Conectar Ollama con Node-RED

Preparar Ollama

Asegúrate de que Ollama está ejecutándose y tiene un modelo cargado:

ollama pull llama3.1
ollama serve

HTTP Request Node en Node-RED

Node-RED incluye un nodo HTTP Request que puedes usar para Ollama:

  1. Arrastra un nodo inject al flujo.
  2. Arrastra un nodo function y establece el payload:
    msg.payload = {
      model: "llama3.1",
      messages: [
        { role: "user", content: msg.payload.prompt || "Hola" }
      ],
      stream: false
    };
    msg.headers = { "Content-Type": "application/json" };
    return msg;
  3. Arrastra un nodo http request y configura:
    • Method: POST
    • URL: http://localhost:11434/api/chat
    • Return: parsed JSON
  4. Conecta los nodos: inject → function → http request → debug.

Al hacer clic en el botón Inject, verás la respuesta de Ollama en la ventana de depuración.

Nodos de la comunidad para Ollama

Existen nodos de la comunidad que integran Ollama directamente:

  • node-red-contrib-ollama - Integración directa de Ollama con nodos de chat e incrustaciones.
  • node-red-contrib-openai - Compatible con OpenAI, funciona con Ollama.

Instálalos desde la administración de paleta en Node-RED:

Manage Palette → Install → "node-red-contrib-ollama"

Ejemplo práctico 1: Clasificación de correos con IA

Este ejemplo clasifica correos electrónicos entrantes por categoría, preguntando a Ollama cuál es la categoría más apropiada.

Estructura del flujo

  1. IMAP Node (Correos entrantes)
  2. Function Node (Construir el prompt):
    msg.payload = {
      model: "llama3.1",
      messages: [
        {
          role: "system",
          content: "Eres un clasificador de correos. Responde solo con una de estas categorías: support, sales, billing, spam, other."
        },
        {
          role: "user",
          content: `Asunto: ${msg.topic}\nContenido: ${msg.payload}`
        }
      ],
      stream: false
    };
    msg.headers = { "Content-Type": "application/json" };
    return msg;
  3. HTTP Request Node (Llamar a Ollama)
  4. Switch Node (Ramificar según categoría)
  5. Output Nodes (Mover correo a carpeta, notificar por Slack, etc.)

Ventajas

  • Los correos se clasifican automáticamente sin reglas manuales.
  • Nuevas categorías pueden añadirse ajustando el prompt del sistema.
  • IA local, sin nube, sin preocupaciones de privacidad.

Desventajas

  • Cada correo consume tiempo de inferencia (segundos a minutos).
  • Clasificaciones incorrectas son posibles, especialmente con correos ambiguos.
  • El modelo debe evaluarse regularmente.

Ejemplo práctico 2: Resumen de documentos

Este ejemplo resume documentos PDF que se depositan en una carpeta.

Construcción del flujo

  1. Nodo File (monitorear PDF en la carpeta)
  2. Nodo Function (extraer texto, por ejemplo con pdf-parse):
    const pdf = require('pdf-parse');
    const buffer = msg.payload;
    pdf(buffer).then(data => {
      msg.payload = {
        model: "llama3.1",
        messages: [
          { role: "system", content: "Fasse das Dokument in 5 Sätzen zusammen." },
          { role: "user", content: data.text.substring(0, 4000) }
        ],
        stream: false
      };
      msg.headers = { "Content-Type": "application/json" };
      node.send(msg);
    });
  3. Nodo HTTP Request (llamar a Ollama)
  4. Nodo File (guardar resumen)

Notas

  • Los documentos grandes deben dividirse en fragmentos porque los modelos tienen una longitud de contexto límite.
  • Para mejores resúmenes, usa modelos con contexto amplio, como qwen2.5:32k.
  • Consulta Longitud de contexto para más detalles.

Caso práctico 3: notificaciones con filtro de IA

Este ejemplo filtra notificaciones del sistema y reenvía solo las importantes.

Construcción del flujo

  1. Nodo Webhook (recibir notificación)
  2. Nodo Function (construir prompt):
    msg.payload = {
      model: "llama3.1",
      messages: [
        {
          role: "system",
          content: "Bewerte, ob diese Benachrichtigung wichtig ist. Antworte mit 'wichtig' oder 'unwichtig'."
        },
        { role: "user", content: msg.payload.message }
      ],
      stream: false
    };
    msg.headers = { "Content-Type": "application/json" };
    return msg;
  3. Nodo HTTP Request (llamar a Ollama)
  4. Nodo Switch (reenviar solo si es importante)
  5. Nodo Slack (enviar notificación)

Function Calling en Node-RED

Function Calling te permite obtener datos estructurados de la IA que puedes procesar en Node-RED.

Ejemplo: respuesta estructurada de correo

// Nodo Function
msg.payload = {
  model: "llama3.1",
  messages: [
    {
      role: "system",
      content: "Du bist ein E-Mail-Assistent. Antworte im JSON-Format: {\"category\": \"...\", \"priority\": \"...\", \"response\": \"...\"}"
    },
    { role: "user", content: msg.payload.email }
  ],
  format: "json",
  stream: false
};
msg.headers = { "Content-Type": "application/json" };
return msg;

Después del nodo HTTP Request, puedes procesar la respuesta JSON directamente, por ejemplo ramificando con un nodo Switch según la categoría.

Consulta Function Calling para más detalles.

RAG en Node-RED

Para RAG necesitas una base de datos vectorial e incrustaciones. Node-RED puede manejar ambas:

  1. Incrustaciones desde Ollama:

    msg.payload = {
      model: "nomic-embed-text",
      prompt: msg.payload.text
    };
    msg.headers = { "Content-Type": "application/json" };
    return msg;

    URL: http://localhost:11434/api/embeddings

  2. Base de datos vectorial: usa node-red-contrib-chroma para ChromaDB o construye HTTP requests a Pinecone, Qdrant o Weaviate.

  3. Flujo RAG: query → incrustación → búsqueda vectorial → construir contexto → chat con Ollama usando contexto.

Consulta RAG local para más detalles.

Consideraciones de seguridad

  • Proteger Node-RED: establece una contraseña modificando settings.js. Por defecto, Node-RED funciona sin autenticación.
  • Sin secretos en el flujo: usa variables de entorno, no API keys hardcodeados.
  • Ollama solo local: no expongas Ollama a internet sin autenticación. Consulta Claves API.
  • Sandbox para nodos Function: los nodos Function pueden ejecutar código JavaScript arbitrario. Restringe el acceso al editor de flujos.
  • Audit Logging: activa el registro en Node-RED para hacer las acciones rastreables. Consulta Audit Logging.

Consejos de rendimiento

  • Modelo pequeño para clasificación: usa un modelo pequeño (como llama3.1:8b) para clasificaciones simples, uno más grande para tareas complejas.
  • Caching: cachea solicitudes recurrentes para ahorrar tiempo de inferencia.
  • Batching: agrupa múltiples solicitudes y envíalas juntas cuando sea posible.
  • Streaming: usa streaming para respuestas largas para reducir latencia.
  • Procesamiento asincrónico: usa colas para absorber picos de carga.

Errores comunes

  • Sin autenticación: Node-RED viene por defecto sin contraseña. Es un riesgo de seguridad.
  • Modelos demasiado grandes: usar un modelo de 70B para una clasificación simple es excesivo y lento.
  • Sin manejo de errores: si Ollama no está disponible, el flujo no debería fallar, sino capturar errores.
  • Ignorar longitud de contexto: los documentos grandes deben dividirse en fragmentos, de lo contrario la inferencia falla.
  • Sin pruebas: los flujos de trabajo deben probarse antes de pasar a producción.

Enlaces y recursos adicionales sobre Node-RED

Puntos clave:

  • Node-RED es un editor de flujos visual para automatización.
  • Con Ollama como backend, puedes usar IA local en flujos de trabajo.
  • Casos prácticos: clasificación de correos, resumen de documentos, filtrado de notificaciones.
  • Function Calling y RAG son implementables en Node-RED.
  • Seguridad: proteger Node-RED, sin secretos en el flujo, Ollama solo local.

FAQ: Node-RED para automatización con IA - Preguntas típicas

¿Qué es Node-RED?

Node-RED es un editor de flujos basado en navegador para automatización. Conectas nodos visualmente para construir flujos de trabajo que integren APIs, dispositivos y servicios.

¿Cómo conecto Node-RED con Ollama?

Usa el nodo HTTP Request y envía POST requests a la API de Ollama (http://localhost:11434/api/chat). Alternativamente, hay nodos de comunidad como node-red-contrib-ollama que integran Ollama directamente.

¿Puedo usar Function Calling en Node-RED?

Sí. Envías el parámetro format: json a Ollama y recibes respuestas JSON estructuradas que puedes procesar en Node-RED.

¿Puedo implementar RAG en Node-RED?

Sí. Usas Ollama para incrustaciones, una base de datos vectorial como ChromaDB para almacenamiento, y construyes un flujo RAG: query, incrustación, búsqueda vectorial, construir contexto, chat con contexto.

¿Cómo protejo Node-RED?

Establece una contraseña en settings.js, usa variables de entorno para secretos, restringe el acceso al editor de flujos y no expongas Ollama a internet sin autenticación.

¿Se puede ejecutar Node-RED en Docker?

Sí. Hay una imagen Docker oficial. Ejecutas Node-RED con docker run y montas un volumen para los datos.

¿Qué modelo debería usar?

Para clasificaciones simples, un modelo pequeño como llama3.1:8b es suficiente. Para tareas complejas como resúmenes o generación de código, usa un modelo más grande como qwen2.5:32b.

¿Cómo mejoro el rendimiento?

Usa modelos pequeños para tareas simples, cachea solicitudes recurrentes, usa streaming para respuestas largas y procesa de forma asincrónica con colas.

¿Es Node-RED gratuito?

Sí. Node-RED es código abierto y gratuito. Solo necesitas hardware para Ollama si usas IA local.

¿Hay alternativas a Node-RED?

Sí. n8n es una alternativa popular con un concepto similar. Ambas se pueden conectar con Ollama. Consulta Fundamentos de automatización para una visión general.

Fuentes y lecturas recomendadas

Volver al blog
Share:

Entradas relacionadas