Dify autoalojado: crear aplicaciones de IA con tu LLM local
Dify es una plataforma de código abierto que te permite construir aplicaciones de IA —chatbots, flujos de trabajo, agentes, asistentes RAG— sin escribir una línea de código, mediante una interfaz visual. Autoalojada y conectada a Ollama, ofrece una capa completa de «sin código» sobre tus modelos locales: tus prompts, documentos y datos nunca abandonan tu máquina. Esta guía cubre el despliegue con Docker Compose, la conexión a un LLM local y la construcción de un primer asistente RAG funcional.
#¿Por qué Dify en lugar de una interfaz de chat?
Open WebUI o LM Studio bastan para conversar con un modelo. Dify va un paso más allá: crear aplicaciones reutilizables. Defines un prompt de sistema, le conectas una base de conocimientos, expones el conjunto mediante una API o un widget de chat integrable y gestionas las versiones de tus iteraciones. Es el equivalente local y de código abierto de OpenAI Assistants o Coze.
La combinación Dify + Ollama ofrece dos ventajas. Primero, la confidencialidad: a diferencia de Dify conectado a GPT-4 o Claude, aquí los documentos indexados y las conversaciones permanecen en tu infraestructura. Después, el costo: no se factura ningún token, puedes iterar con cientos de prompts sin estar pendiente de una factura de API.
- Chatbot
- Un asistente conversacional con prompt de sistema, variables de entrada y memoria de conversación.
- Agente
- Un asistente capaz de llamar a herramientas (búsqueda web, cálculo, API) en bucle hasta resolver la tarea.
- Workflow
- Una cadena visual de nodos (LLM, condición, extracción, HTTP) para procesamientos deterministas.
- Knowledge / RAG
- Indexación de tus documentos para que las aplicaciones respondan basándose en ellos, con citas de fuentes.
#Prerrequisitos
Esta guía te lleva al modelo. El kit te lleva al copiloto que programa en tu editor.
- Espacio en línea de por vida
- PDF + archivos
- Reembolsado 30 j
Dify es una aplicación con varios contenedores (API, worker, frontend, base de datos PostgreSQL, Redis, base de datos vectorial). Se despliega mediante Docker Compose. En cuanto al modelo, se asume que Ollama ya está en ejecución y escucha en su puerto predeterminado.
- Docker + Docker Compose
- Una versión reciente de Docker Engine con el plugin Compose (comando docker compose). En Windows/macOS, basta con Docker Desktop.
- Ollama funcionando
- El daemon de Ollama instalado y accesible en http://localhost:11434. Prueba con ollama list antes de comenzar.
- Un modelo de chat
- Por ejemplo qwen3.5:9b (256k de contexto, multimodal, Apache 2.0), la referencia de 8 GB en 2026. En Q4, ocupa aproximadamente 6,6 GB de VRAM (RTX 3060 de 12 GB es ampliamente suficiente).
- Un modelo de embeddings
- Indispensable para el RAG: nomic-embed-text es la opción por defecto, ligero y eficaz.
- Recursos
- Reserva aproximadamente 8 GB de RAM para el conjunto de servicios de Dify, además de la VRAM/RAM que consumen tus modelos Ollama.
#Instalar Dify con Docker Compose
Dify proporciona un repositorio oficial con una carpeta docker lista para usar. Se clona el repositorio, se copia el archivo de ejemplo de variables de entorno y se pone en marcha el conjunto de servicios.
- 01Clonar el repositorioDescarga la última versión estable del proyecto desde GitHub y luego entra en el directorio docker que contiene el archivo docker-compose.yaml.
- 02Crear el archivo .envCopia .env.example a .env. Los valores predeterminados bastan para un uso local; ahí ajustarás los puertos o los secretos más adelante.
- 03Iniciar la pilaEjecuta docker compose up -d. El primer arranque descarga las imágenes e inicializa la base de datos PostgreSQL; calcula unos minutos.
- 04Crear la cuenta de administradorAbre http://localhost/install en el navegador y introduce el correo electrónico y la contraseña del primer administrador. Esta cuenta será la que gestione el espacio de trabajo.
#Conectar Ollama como proveedor de modelos
Dify solo conoce tus modelos locales si declaras Ollama como proveedor. Esto se hace en los ajustes del modelo, no en un archivo de configuración. Lo principal que debes vigilar es la URL: desde un contenedor Docker, localhost designa el propio contenedor, no tu máquina anfitriona donde se ejecuta Ollama.
- 01Abrir los ajustes de proveedoresHaz clic en tu avatar en la esquina superior derecha → Ajustes → Proveedores de modelos. Busca Ollama en la lista y selecciónalo.
- 02Introducir la URL del servidorEn el campo Base URL, introduce la dirección accesible desde el contenedor (ver el aviso a continuación). El nombre del modelo debe coincidir exactamente con lo que devuelve ollama list, por ejemplo qwen3.5:9b.
- 03Añadir el modelo de chatTipo de modelo: LLM. Introduce el tamaño del contexto (por ejemplo, 8192 o más según el modelo) y confirma. Dify prueba la conexión al guardar.
- 04Agregar el modelo de embeddingsRepite la operación con nomic-embed-text eligiendo el tipo Text Embedding. Sin él, no podrás construir una base de conocimientos.
- 05Definir los modelos por defectoTambién en los ajustes, establece qwen3.5:9b como modelo del sistema por defecto y nomic-embed-text como modelo de embeddings por defecto.
#Construir un primer asistente RAG sin programar
El RAG (Retrieval-Augmented Generation, generación aumentada por recuperación) permite al modelo responder a partir de tus documentos en lugar de basarse únicamente en sus conocimientos de entrenamiento. En Dify, esto se hace mediante una base de conocimientos (Knowledge) que luego se vincula a una aplicación.
- 01Crear una base de conocimientosPestaña Knowledge → Crear. Importa tus archivos (PDF, Markdown, TXT, DOCX). Dify los divide automáticamente en chunks.
- 02Ajustar la división en fragmentos y la indexaciónElige el modo de indexación «alta calidad» que utiliza tu modelo de embeddings nomic-embed-text. Ajusta el tamaño de los chunks si tus documentos son muy estructurados (tablas, código).
- 03Crear la aplicación de chatPestaña Studio → Crear una app → Chatbot. Dale un nombre y una descripción.
- 04Redactar el prompt del sistemaEn el editor, describe el rol del asistente: « Respondes únicamente a partir de los documentos proporcionados. Si la información no está allí, dilo. » Esto limita las alucinaciones.
- 05Adjuntar la base de conocimientosEn el panel Contexto de la app, añade la base creada en el paso 1. Activa las citas de fuentes para que las respuestas muestren los fragmentos utilizados.
- 06Probar y luego publicarUsa el panel de depuración a la derecha para hacer preguntas. Cuando el comportamiento te satisfaga, haz clic en Publicar para obtener una URL de chat y una clave de API.
#Flujos y agentes: hasta dónde va el no-code
Más allá de un simple chatbot, Dify ofrece dos modos más avanzados. El modo Workflow muestra un lienzo visual donde se conectan nodos: entrada del usuario, llamada a LLM, condición (if/else), extracción de parámetros, solicitud HTTP, iteración sobre una lista. Así se construyen pipelines deterministas —por ejemplo: recibir un correo electrónico, clasificarlo, extraer entidades y luego redactar una respuesta tipo.
El modo Agente, en cambio, deja que el modelo decida a qué herramientas llamar y en qué orden, en un bucle, hasta obtener un resultado. Es más potente, pero también más frágil: la calidad depende en gran medida de la capacidad del modelo para razonar y respetar el formato de las llamadas a herramientas. Los modelos locales muy pequeños (2-4B) no se desenvuelven bien; busca un modelo diseñado para el uso de herramientas, como GLM 4.7 Flash (MoE 30B-A3B, MIT, ~19 GB) o Qwen 3.8 27B (~18 GB), si tu VRAM lo permite.
- Lo que hace bien el no-code
- Crear rápidamente un prototipo de chatbot RAG, encadenar unas cuantas etapas con LLM, exponer una API sin tener que escribir un backend, iterar sobre los prompts en equipo.
- Dónde surgen las dificultades en local
- Los agentes exigentes que utilizan varias herramientas requieren un modelo capaz de usarlas de forma fiable y, por tanto, necesitan VRAM. Un Qwen 3.5 9B basta para RAG, pero rara vez para un agente complejo.
- Cuándo pasar al código
- Lógica de negocio detallada, integraciones a medida, control total del pipeline de recuperación: una biblioteca como LangChain toma el control allí donde el lienzo visual muestra sus limitaciones.
#Solución de problemas
- «Connection refused» al añadir el modelo
- Dify no puede conectarse a Ollama. El problema es casi siempre la URL: reemplaza localhost por host.docker.internal (Docker Desktop) o la IP de la puerta de enlace de Docker (Linux), y verifica que Ollama esté escuchando en 0.0.0.0.
- El modelo no aparece
- El nombre indicado no coincide con lo que muestra ollama list. Copia el nombre exacto, incluida la etiqueta (qwen3.5:9b y no qwen3.5).
- Error al indexar los documentos
- El modelo de embeddings no está configurado o no se ha descargado. Ejecuta ollama pull nomic-embed-text y selecciónalo como modelo de embeddings predeterminado.
- Respuestas muy lentas
- El modelo de chat probablemente se esté ejecutando en parte en la CPU. Pasa a una cuantización más ligera (Q4_K_M) o a un modelo más pequeño y comprueba que Ollama esté utilizando la GPU.
- El puerto 80 ya está en uso
- Otro servicio ocupa el puerto. Cambia EXPOSE_NGINX_PORT en el .env (por ejemplo, 8080) y vuelve a ejecutar docker compose up -d.
- Respuestas fuera de tema a pesar del RAG
- Verifica que la base de conocimientos esté bien asociada a la app y que el prompt de sistema obligue al modelo a basarse en el contexto. Ajusta también el tamaño de los chunks.
#Para ir más allá
El valor de Dify depende de la solidez del modelo y de la infraestructura que lo sustentan. Estas guías refuerzan los componentes en los que se apoya.
- Instalar Ollama
- El demonio que sirve tu modelo de chat y tus embeddings en el puerto 11434 — la base de toda la pila Dify local.
- RAG local con ChromaDB y Ollama
- Para entender qué automatiza Dify bajo el capó y volver a tener el control en Python cuando el no-code muestra sus límites.
- n8n + Ollama: automatizar localmente
- Otro enfoque sin código, orientado a la automatización de tareas y complementario de los flujos de trabajo de Dify.
¿Un comentario, un error, una precisión? Avísanos, eso mejora la guía para todos.