Skip to content
BotServBotServ
Open WebUIPipelinesAutomatizaciónWebhooksTools

Open WebUI para Automatización

Automatiza con Open WebUI: Pipelines, Webhooks, integración de herramientas y flujos de trabajo prácticos.

S

schutzgeist

6 min read
Open WebUI para Automatización

Open WebUI para automatización

Qué cubre este artículo sobre Open WebUI para automatización

  • Cómo usar Open WebUI no solo como interfaz de chat, sino como plataforma de automatización.
  • Cómo funcionan pipelines, herramientas y webhooks.
  • Cómo conectar Open WebUI con n8n y otros sistemas.
  • Ejemplos prácticos para procesamiento de documentos, búsqueda y notificaciones.
  • Mejores prácticas de integración y seguridad.

Introducción: Open WebUI para automatización explicado

Open WebUI es conocida como interfaz de chat para Ollama. Pero puede hacer mucho más: pipelines para lógica personalizada, herramientas para acciones externas, webhooks para procesar eventos, RAG para documentos. De esta manera, Open WebUI se convierte en una plataforma de automatización, no solo en un cliente de chat.

Este artículo está dirigido a usuarios que quieren aprovechar Open WebUI para automatización. Encontrarás los conceptos básicos en Open WebUI y Ollama.

¿Por qué necesito Open WebUI para automatización?

Imagina que quieres que un chat impulsado por IA no solo responda preguntas, sino que ejecute acciones: procesar documentos, llamar APIs, generar reportes. Open WebUI puede hacerlo mediante pipelines que integran lógica Python personalizada en el chat.

Open WebUI para automatización en pocas palabras

Open WebUI ofrece pipelines (código Python que se ejecuta con cada mensaje), herramientas (funciones que el modelo puede invocar) y webhooks (endpoints HTTP para eventos externos). Con esto automatizas flujos de trabajo directamente desde el chat.

La idea central es utilizar el chat como interfaz de automatización.

Para quién es este artículo

  • Usuarios de Open WebUI que buscan más allá del chat.
  • Self-hosters que quieren ejecutar automatización con IA de forma local.
  • Desarrolladores que construyen pipelines y herramientas.
  • Equipos que usan asistentes de IA en sus flujos de trabajo.

Tener experiencia previa con Open WebUI y Python es útil.

Términos clave

  • Open WebUI - Interfaz de chat para Ollama. Cuándo es útil: la plataforma.
  • Pipelines - Código Python en Open WebUI. Cuándo es útil: lógica personalizada.
  • Herramientas - Funciones que el modelo puede llamar. Cuándo es útil: acciones externas.
  • Webhooks - Endpoints HTTP. Cuándo es útil: eventos externos.
  • RAG - Generación aumentada por recuperación. Cuándo es útil: documentos.
  • Ollama - Servidor de modelos. Cuándo es útil: el backend.
  • n8n - Herramienta de flujos de trabajo. Cuándo es útil: orquestación.

Pipelines: lógica personalizada en el chat

Los pipelines son funciones Python que se ejecutan con cada mensaje. Pueden filtrar, modificar mensajes o llamar a sistemas externos.

Pipeline simple

# pipelines/filter.py
class Pipeline:
    def __init__(self):
        self.name = "Automatisierungs-Pipeline"

    async def on_message(self, message, user):
        """Wird bei jeder Nachricht aufgerufen"""
        # Nachricht analysieren
        if "bericht" in message.lower():
            # Bericht-Workflow auslösen
            await self.trigger_workflow("bericht", message)
        return message

    async def trigger_workflow(self, typ, data):
        """Externen Workflow auslösen"""
        import aiohttp
        async with aiohttp.ClientSession() as session:
            await session.post(
                "http://n8n:5678/webhook/bericht",
                json={"typ": typ, "data": data}
            )

Instalar un pipeline

# En Open WebUI:
# Admin Panel → Pipelines → Upload
# Datei: filter.py hochladen

# O mediante API:
curl -X POST http://open-webui:8080/pipelines/upload \
  -H "Authorization: Bearer ..." \
  -F "file=@filter.py"

Herramientas: funciones que el modelo puede llamar

Las herramientas son funciones Python que el modelo puede invocar (function calling).

# tools/web_search.py
def web_search(query: str) -> str:
    """Sucht im Web nach Informationen."""
    import requests
    response = requests.get(
        "https://api.duckduckgo.com/",
        params={"q": query, "format": "json"}
    )
    return response.json().get("AbstractText", "Kein Ergebnis")

def get_weather(city: str) -> str:
    """Gibt das Wetter für eine Stadt zurück."""
    import requests
    response = requests.get(
        f"https://wttr.in/{city}?format=3"
    )
    return response.text

Activar una herramienta en Open WebUI

  1. Admin Panel → Tools → New Tool
  2. Inserta el código Python
  3. Guarda
  4. En el chat: selecciona la herramienta

El modelo ahora puede invocar web_search() y get_weather().

Webhooks: recibir eventos externos

Open WebUI puede recibir webhooks y generar mensajes:

# Webhook-Endpoint in Open WebUI
# POST /api/v1/webhook

# Beispiel: n8n sendet Benachrichtigung
curl -X POST http://open-webui:8080/api/v1/webhook \
  -H "Content-Type: application/json" \
  -d '{
    "message": "Neues Dokument wurde hochgeladen",
    "chat_id": "abc123"
  }'

Ejemplo práctico 1: procesar documentos

# Pipeline: procesar documentos automáticamente
class Pipeline:
    async def on_file_upload(self, file, user):
        """Al subir un archivo"""
        if file.name.endswith(".pdf"):
            # Procesar PDF
            text = extract_pdf(file)
            summary = await self.summarize(text)
            # Publicar como mensaje
            return f"Zusammenfassung von {file.name}:\n\n{summary}"
        return None

    async def summarize(self, text):
        import aiohttp
        async with aiohttp.ClientSession() as s:
            async with s.post(
                "http://ollama:11434/api/chat",
                json={
                    "model": "llama3.1",
                    "messages": [
                        {"role": "user", "content": f"Fasse zusammen:\n{text[:4000]}"}
                    ]
                }
            ) as r:
                data = await r.json()
                return data["message"]["content"]

Ejemplo práctico 2: chat hacia flujo de trabajo n8n

# Herramienta: invocar flujo de trabajo n8n
def trigger_n8n_workflow(workflow_name: str, data: str) -> str:
    """Löst einen n8n Workflow aus."""
    import requests
    response = requests.post(
        f"http://n8n:5678/webhook/{workflow_name}",
        json={"input": data}
    )
    return response.text

# El usuario escribe en el chat:
# "Crea un reporte sobre IA local"
# → El modelo invoca trigger_n8n_workflow("bericht", "lokale KI")
# → n8n ejecuta el flujo de trabajo
# → El resultado regresa

Ejemplo práctico 3: respuestas automáticas con contexto

# Pipeline: agregar contexto de otros sistemas
class Pipeline:
    async def on_message(self, message, user):
        """Con cada mensaje, enriquecer contexto"""
        # Obtener documentos recientes de Nextcloud
        docs = await self.get_recent_documents()

        # Agregar contexto al mensaje
        enriched = f"{message}\n\nRelevante Dokumente:\n{docs}"
        return enriched

Integración de Open WebUI con n8n

Open WebUI Chat
    │
    ▼ (Tool o Pipeline)
HTTP Request → n8n Webhook
    │
    ▼
n8n Workflow:
  ├─ Daten verarbeiten
  ├─ Ollama für KI
  ├─ Datenbank abfragen
  └─ Ergebnis zurückgeben
    │
    ▼
Antwort in Open WebUI Chat

Consideraciones de seguridad

  • Revisa las pipelines: Las pipelines tienen acceso total. Sube solo código de confianza.
  • Asegura las herramientas: Las herramientas pueden ejecutar cualquier acción. Limita permisos. Consulta Permisos de herramientas.
  • Autenticación: Protege Open WebUI con contraseña. Consulta Autenticación.
  • Audit Logging: Registra llamadas de pipelines y herramientas. Consulta Audit Logging.

Errores comunes

  • Pipelines bloqueantes: Las pipelines lentas ralentizan el chat. Usa operaciones asincrónicas.
  • Descripciones de herramientas: El modelo utiliza el docstring como descripción. Sé preciso.
  • Longitud del contexto: Demasiado contexto sobrecarga el modelo. Trunca si es necesario.
  • Sin manejo de errores: Si una herramienta falla, el chat no debería colapsar.
  • Demasiadas herramientas: Más de 5-7 herramientas confunden al modelo.

Enlaces relacionados

Key Takeaways:

  • Open WebUI es más que chat: pipelines, herramientas, webhooks.
  • Pipelines: código Python que se ejecuta en cada mensaje.
  • Herramientas: funciones que el modelo puede invocar.
  • Integración con n8n y otros sistemas vía HTTP.
  • Seguridad: revisa pipelines, asegura herramientas, activa autenticación.

Preguntas frecuentes

¿Qué son las pipelines en Open WebUI?

Las pipelines son funciones Python que se ejecutan en cada mensaje o carga de archivo. Pueden filtrar mensajes, agregar contexto o invocar sistemas externos.

¿Qué son las herramientas en Open WebUI?

Las herramientas son funciones Python que el modelo puede invocar. Por ejemplo, web_search(), get_weather() o trigger_workflow(). El modelo decide cuándo usarlas.

¿Cómo conecto Open WebUI con n8n?

A través de herramientas o pipelines que envían solicitudes HTTP a webhooks de n8n. n8n ejecuta el flujo de trabajo y devuelve el resultado.

¿Puedo usar RAG en Open WebUI?

Sí, Open WebUI tiene RAG integrado. Carga documentos, se indexan automáticamente y se usan como contexto para responder.

¿Son seguras las pipelines?

Las pipelines se ejecutan con todos los permisos. Sube solo código de confianza. Para producción: revisa el código, usa sandbox y aplica permisos mínimos.

¿Las pipelines ralentizan el chat?

Sí, si se ejecutan de forma sincrónica. Usa async/await y mantén las pipelines rápidas. Las llamadas externas deben tener tiempos de espera.

¿Open WebUI o n8n para automatización?

Open WebUI para automatización basada en chat (el usuario escribe, la IA actúa). n8n para flujos sistemáticos (disparador → pasos → acción). Ambos pueden combinarse.

¿Cómo funcionan los webhooks?

Los sistemas externos envían POST HTTP a Open WebUI. Open WebUI genera un mensaje o desencadena una acción. Útil para notificaciones y eventos.

Fuentes y lecturas adicionales

Volver al blog
Share:

Entradas relacionadas