Saltar a contenido

AI Chatbot (Self-hosted)

En este artículo

Información

El AI Chatbot Self-hosted constituye una solución localizada que amalgama numerosos componentes de código abierto. El núcleo de este sistema es Ollama, un marco arquitectónico diseñado para el lanzamiento y la gestión de modelos de lenguaje de gran escala (LLM) en recursos computacionales locales. Facilita la descarga y el despliegue de LLMs seleccionados. Para una interacción fluida con el modelo desplegado, Open Web UI emplea una interfaz gráfica; esta aplicación web permite a los usuarios enviar consultas textuales y recibir respuestas generadas por los modelos de lenguaje. La integración de estos componentes genera una solución totalmente autónoma y localizada para desplegar modelos de lenguaje de vanguardia con bases de código abierto, manteniendo un control total sobre la integridad de los datos y el rendimiento del sistema.

Funciones clave

  • Interfaz web: Open Web UI proporciona una interfaz web intuitiva que centraliza el control y amplía las capacidades de interacción con modelos de lenguaje de IA locales desde el repositorio de Ollama, simplificando significativamente el uso de modelos para usuarios de diversos niveles de competencia.
  • Integración con numerosos modelos de lenguaje: Ollama otorga acceso a una plétora de modelos de lenguaje gratuitos, poniendo a su disposición capacidades mejoradas de procesamiento del lenguaje natural (NLP). Además, puede integrar sus propios modelos personalizados.
  • Tareas: Los usuarios pueden entablar conversaciones, obtener respuestas a consultas, analizar conjuntos de datos, realizar traducciones y desarrollar sus propios chatbots o aplicaciones impulsadas por IA con la asistencia de LLMs.
  • Código abierto: Ollama es un proyecto de código abierto que permite a los usuarios adaptar y modificar la plataforma según sus requisitos específicos.
  • Web Scraper y búsqueda interna de documentos (RAG): A través de OpenWebUI, puede buscar en varios tipos de documentos como archivos de texto, PDFs, presentaciones de PowerPoint, sitios web y vídeos de YouTube.

Nota

Para obtener más información sobre la configuración principal de Ollama y la documentación de Open Web UI, consulte la Ollama developer documentation و la Open WebUI documentation.

Funciones de despliegue

ID Nombre del Software SO Compatible VM BM VGPU GPU CPU Mín. (Núcleos) RAM Mín. (GB) HDD/SSD Mín. (GB) Dominio Personalizado Activo
117 AI Chatbot Ubuntu 22.04 + + + + 4 16 - No PEDIR

Información

Para obtener información sobre las funcionalidades de implementación de este software, consulte este enlace.

Una vez completado el proceso de instalación, los usuarios deberán acceder a su servidor navegando a través de la URL: https://ollama<Server_ID_from_Invapi>.hostkey.in.

Nota

A menos que se especifique lo contrario, por defecto instalamos la última versión de lanzamiento del software desde el sitio web del desarrollador o los repositorios del sistema operativo.

Primeros pasos tras el despliegue del chatbot de IA

Tras el pago del pedido en el correo electrónico registrado, recibirá una notificación sobre la preparación del servidor para trabajar. Esta incluirá la dirección IP del VPS, así como el login y la contraseña para conectarse al servidor vía SSH. Los clientes de nuestra empresa gestionan el equipo a través del server control panel y APIInvapi.

Atención

¡La contraseña enviada a su correo electrónico es necesaria para la conexión SSH y el inicio de sesión en el OS como usuario root, and no se aplica a la interfaz web del chatbot! Debe configurar un usuario administrador y una contraseña para el chatbot tras la primera conexión a OpenWebUI.

Enlace para acceder a la interfaz web del chatbot: en la etiqueta webpanel. El enlace exacto con el formato https://ollama<Server_ID_from_Invapi>.hostkey.in también se envía por correo electrónico cuando se entrega el servidor.

Tras hacer clic en el enlace de la etiqueta webpanel, se abrirá una ventana de inicio de sesión Get started with Open WebUI, donde deberá crear un nombre de administrador, dirección de correo electrónico y contraseña para su chatbot, y luego hacer clic en el botón Create Admin Account:

Atención

Tras registrar al primer usuario, el sistema le asigna automáticamente el rol de administrador. Para garantizar la seguridad y el control del proceso de registro, todas las solicitudes de registro posteriores deben ser aprobadas en OpenWebUI desde la cuenta de administrador.

Pantalla inicial de OpenWebUI

La pantalla inicial presenta una interfaz de chat junto con varios ejemplos de prompts (consultas) para demostrar las capacidades del sistema. Para iniciar la interacción con el chatbot, los usuarios deben seleccionar su modelo de lenguaje preferido de las opciones disponibles. En este caso, se recomienda LLaMA 3, que cuenta con un amplio conocimiento y capacidades para generar respuestas a diversas consultas.

Tras seleccionar un modelo, los usuarios pueden introducir su primera consulta en el campo de entrada y el sistema generará una respuesta basada en el análisis del texto introducido. Prompts de ejemplo presentados en la pantalla inicial muestran la diversidad de temas y tareas que el chatbot puede manejar, ayudando a los usuarios a orientarse con sus capacidades.

Configuración de su espacio de trabajo de OpenWebUI

Para personalizar aún más su experiencia de chat, navegue hasta la sección Workspace. Aquí encontrará varias opciones de personalización:

  • Models - Esta sección le permite ajustar los modelos existentes para sus necesidades específicas. Puede establecer system prompts, parámetros, conectar documentos o bases de conocimiento, definir herramientas (tools), filtros o acciones.
  • Knowledge - Esta sección configura la base de conocimientos (RAG) basada en sus documentos.
  • Prompts - Cree, edite y gestione sus propios prompts (solicitudes de entrada) para una interacción más efectiva con el chatbot en esta sección.
  • Tools - Conecte aquí custom Python scripts, que se proporcionan al LLM durante una solicitud. Las tools permiten que el LLM realice acciones y obtenga contexto adicional como resultado. Las herramientas de la comunidad ya preparadas pueden verse en el sitio web.
  • Functions - Conecte aquí modular operations, que permiten a los usuarios ampliar las capacidades de la IA mediante la incorporación de lógica o acciones específicas directamente en los flujos de trabajo. A diferencia de las tools, que operan como utilidades externas, las functions se ejecutan dentro del entorno OpenWebUI y gestionan tareas como el procesamiento de datos, la visualización y la comunicación interactiva. Los ejemplos de funciones ya preparados pueden verse en el sitio web.

Agregar y eliminar modelos

Ollama ofrece la posibilidad de instalar y utilizar una amplia gama de modelos de lenguaje, no solo el predeterminado. Antes de instalar nuevos modelos, asegúrese de que la configuración de su servidor cumpla con los requisitos del modelo elegido en cuanto a uso de memoria y recursos computacionales.

Instalación de un modelo mediante la interfaz de OpenWebUI

Para instalar modelos a través de la interfaz de OpenWebUI, siga estos pasos:

  1. Seleccione el modelo deseado desde la Ollama library y navegue hasta su página haciendo clic en su nombre. Elija el tipo y tamaño del modelo (si es necesario). Por defecto se ofrecerá la "dimensionalidad" más adecuada. A continuación, haga clic en el icono de los dos cuadrados a la izquierda del comando como ollama run <model_name> para copiar la cadena de instalación al portapapeles.

  2. Haga clic en el nombre del modelo en la esquina superior izquierda de la ventana del chatbot de OpenWebUI y pegue el comando copiado en el campo Search a model.

  3. Haga clic en la cadena Pull "ollama run " from Ollama.com.

  4. Tras una descarga e instalación exitosas, el modelo aparecerá en la lista desplegable y estará disponible para su selección.

Instalación de un modelo mediante línea de comandos

Para instalar nuevos modelos, debe conectarse a su servidor mediante SSH y ejecutar el comando correspondiente como se describe en este artículo.

Eliminar un modelo

Para eliminar modelos desde la interfaz de OpenWebUI, vaya a los ajustes de la interfaz web: User icon in the top right corner >> Settings >> Admin Panel >> Models.

A continuación, haga clic en el botón Manage Models para abrir la ventana de gestión de modelos.

En ella, desde la lista desplegable Delete a model, seleccione el modelo que desea eliminar y haga clic en el icono situado junto al mismo:

Para eliminar un modelo mediante la línea de comandos (como root):

ollama rm <model_name>

Agregar documentos a la base de conocimientos (RAG)

La opción Knowledge le permite crear bases de conocimiento (RAG) y cargar documentos de varios formatos, como PDF, archivos de texto, documentos de Word, presentaciones de PowerPoint y otros. Estos documentos se analizan posteriormente y pueden ser objeto de conversación con el chatbot. Esto es especialmente útil para estudiar y comprender documentos complejos, prepararse para presentaciones o reuniones, analizar datos e informes, revisar trabajos escritos en busca de errores gramaticales, estilo y lógica, trabajar con documentos legales y financieros, así como realizar investigaciones en diversos campos. El chatbot puede ayudarle a comprender el contenido del documento, resumirlo, resaltar puntos clave, responder preguntas, proporcionar información adicional y ofrecer recomendaciones.

Para trabajar con documentos, debe crear al menos una base de conocimiento. Para ello, vaya a la sección Workspace >> Knowledge y haga clic en (Plus) en la esquina superior derecha. Rellene la información sobre el nombre y contenido de la base de conocimiento y créela con el botón Create Knowledge.

Dentro de la sección de la base de conocimiento, a la izquierda hay una lista de archivos subidos a la base de conocimiento, y a la derecha su contenido o el área donde puede arrastrar y soltar archivos para la carga.

Asimismo, al hacer clic en el botón (Plus) junto a la barra de búsqueda Search Collection, puede:

  • Subir archivos a la base de conocimiento (Upload files)
  • Subir un directorio completo de archivos (Upload directory)
  • Sincronizar archivos y su contenido entre la base de conocimiento y el directorio (Sync directory). Esta opción le permite actualizar la base de conocimientos.
  • Añadir contenido a las bases de conocimientos mediante el editor integrado de Open WebUI (Add text content)

Puede eliminar cualquier archivo de la base de conocimientos seleccionándolo y haciendo clic en la cruz que aparece.

Atención

Dependiendo del modelo elegido y la potencia de la GPU en el servidor, la creación de embeddings en los ajustes de los documentos puede tardar desde decenas de segundos hasta decenas de minutos.

Para gestionar los ajustes de los documentos, vaya a User Name >> Settings >> Admin Settings >> Documents.

Aquí puede configurar:

  1. Embedding Model Engine - El motor para la creación de embeddings. Por defecto se utiliza SentenceTransformers, pero puede subir y utilizar modelos de embedding de Ollama para este fin.
  2. Hybrid Search - Búsqueda híbrida. Cuando está habilitada, la calidad de la búsqueda en las bases de conocimiento y documentos mejorará, pero la velocidad de funcionamiento puede disminuir significativamente.
  3. Embeding Models - El modelo para el embedding. Recomendamos establecer este campo con el modelo mejorado sentence-transformers/all-MiniLM-L12-v2 y hacer clic en el botón de subida a su derecha.
  4. Engine - Motor extractor de contenido. Utilice el valor por defecto.
  5. Query Params: Esta sección configura los parámetros que influyen en las consultas a los documentos subidos y la forma en que el chatbot genera las respuestas.
    • Top K - Este ajuste determina el número de mejores resultados de búsqueda que se mostrarán. Por ejemplo, si se establece Top K = 5, se mostrarán 5 de los documentos o fragmentos de texto más relevantes en la respuesta.
    • RAG Template - RAG (Retrieval Augmented Generation) es un método donde el sistema primero extrae partes relevantes del texto de un conjunto de documentos y luego las utiliza para generar una respuesta con la ayuda de un modelo de lenguaje. El RAG Template establece la plantilla para formar una solicitud al modelo de lenguaje cuando se utiliza este método. La capacidad de configurar el RAG Template le permite adaptar el formato de la consulta al modelo de lenguaje para obtener respuestas de mayor calidad en escenarios de uso específicos.
  6. Chunk Params - Esta sección permite configurar los parámetros para dividir (chunking) los documentos subidos. El chunking es la división de documentos grandes en partes más pequeñas para facilitar su procesamiento. Aquí puede establecer el tamaño máximo del fragmento en símbolos: Chunk Size y el número de caracteres que las partes pueden solaparse: Chunk Overlap. Valores recomendados son 1500 y 100, respectivamente.

    En esta sección, también puede habilitar la opción PDF Extract Images (OCR); se trata de una tecnología para reconocer texto en imágenes. Cuando está habilitada, el sistema extraerá imágenes de los archivos PDF y aplicará OCR para reconocer cualquier texto contenido en estas imágenes.

  7. Files - Aquí puede establecer el tamaño máximo de un archivo subido y su número total.

Los botones situados debajo de Reset Upload Directory y Reset Vector Storage/Knowledge limpian el directorio de archivos de documentos subidos y restablecen el almacenamiento vectorial guardado/base de conocimientos (todo). Utilícelos solo cuando sea absolutamente necesario, y elimine los archivos y las bases de conocimientos a través de Workspace.

Tras subir los documentos, puede trabajar con ellos en modo chat. Para ello, inicie un mensaje en la línea de chat con el símbolo # y seleccione el documento o base de conocimientos deseada de la lista desplegable. Posteriormente, la respuesta a la solicitud se formará basándose en los datos del documento seleccionado. Esta función le permite recibir respuestas contextuales basadas en la información subida y puede ser útil para diversas tareas como buscar información, analizar datos y tomar decisiones basadas en documentos:

Nota

Puede utilizar el símbolo # para añadir sitios web o vídeos de YouTube a su consulta, permitiendo que el LLM también los busque.

Consejos para trabajar con RAG en OpenWebUI

  • Cualquier manipulación con el Embedding Model requerirá eliminar y volver a subir los documentos a la base de datos vectorial. Cambiar los parámetros de RAG no requiere esto.
  • Al añadir o eliminar documentos, asegúrese de actualizar el modelo personalizado (si existe) y la colección de documentos. De lo contrario, es posible que la búsqueda no funcione correctamente.
  • OpenWebUI reconoce formatos pdf, csv, rst, xml, md, epub, doc, docx, xls, xlsx, ppt, pptx, txt, pero se recomienda subir los documentos en texto plano.
  • El uso de la búsqueda híbrida mejora los resultados pero consume muchos recursos, y el tiempo de respuesta puede tardar entre 20 y 40 segundos incluso con una GPU potente.

Actualización del chatbot

Cuando haya nuevos modelos disponibles, o para corregir errores e incrementar la funcionalidad del chatbot de IA, debe actualizar dos de sus componentes: Ollama y Open Web UI.

Actualización de Ollama

  1. Para actualizar Ollama, inicie sesión en el servidor vía SSH como root y ejecute el siguiente comando:
curl -fsSL https://ollama.com/install.sh | sh
  1. Abra un navegador y compruebe la disponibilidad de Ollama a través de la API introduciendo la dirección <server IP>:11434.

Debería recibir el mensaje Ollama is running.

  1. Si no tiene acceso a la API, es posible que deba añadir las siguientes líneas al archivo de servicio /etc/systemd/system/ollama.service en la sección [Service]:
Environment="OLLAMA_HOST=0.0.0.0" 
Environment="OLLAMA_ORIGINS=*"

y reiniciar el servicio con los siguientes comandos:

systemctl daemon-reload
service ollama restart
También es posible que deba reiniciar OpenWebUI:

```bash
docker stop open-webui
docker rm open-webui
docker run -d -p 8080:8080 --gpus all --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui -e ENV='dev' --restart always ghcr.io/open-webui/open-webui:cuda
```

Actualización de Open Web UI

Para actualizar Open Web UI, inicie sesión en el servidor vía SSH como root y ejecute el siguiente comando:

docker run --rm --gpus all --volume /var/run/docker.sock:/var/run/docker.sock nickfedor/watchtower --run-once open-webui

Si la actualización a través de Watchtower no funciona, ejecute los siguientes comandos:

#!/bin/bash
docker stop open-webui
docker rm open-webui
docker pull ghcr.io/open-webui/open-webui:main
docker run -d -p 8080:8080 --gpus all --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui -e ENV='dev' --restart always ghcr.io/open-webui/open-webui:cuda
docker restart open-webui

Atención

Si desea acceder a la documentación de la API integrada para el endpoint de Open Web UI, debe ejecutar el contenedor con la variable de entorno ENV=dev configurada:

docker run -d -p 8080:8080 --gpus all --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui -e ENV='dev' --restart always ghcr.io/open-webui/open-webui:cuda

Restablecimiento de la contraseña de administrador en OpenWebUI

Restablecimiento de la contraseña de administrador en OpenWebUI

Primero, debe crear un hash bcrypt de su nueva contraseña. Ejecute el siguiente comando en su máquina local, sustituyendo your-new-password por la contraseña que desee utilizar:

htpasswd -bnBC 10 "" your-new-password | tr -d ':\n'

Nota

La salida incluirá un hash bcrypt con caracteres especiales que deben manejarse con cuidado. Cualquier carácter $ en el hash deberá ser escapado tres veces (sustituyéndolo por \\\) para poder utilizarse correctamente en el siguiente paso.

A continuación, actualizará la contraseña en su despliegue de Docker. Sustituya HASH en el siguiente comando por el hash bcrypt generado anteriormente, asegurándose de escapar tres veces cualquier carácter $. También sustituya [email protected] por la dirección de correo electrónico vinculada a su cuenta de administrador.

Atención

El siguiente comando puede no funcionar en algunos casos. Si no funciona, intente restablecer completamente los ajustes de OpenWebUI.

docker run --rm -v open-webui:/data alpine/socat EXEC:"bash -c 'apk add sqlite && echo UPDATE auth SET password='\''HASH'\'' WHERE email='\''[email protected]'\''; | sqlite3 /data/webui.db'", STDIO

Restablecimiento completo de los ajustes en OpenWebUI

Para realizar un restablecimiento completo de los ajustes, debe eliminar la base de datos de OpenWebUI. Para ello, inicie sesión en su servidor vía SSH como root y ejecute los siguientes comandos:

cp /var/lib/docker/volumes/open-webui/_data/webui.db /var/lib/docker/volumes/open-webui/_data/webui.db.bak
rm /var/lib/docker/volumes/open-webui/_data/webui.db
docker restart open-webui

Nota

Es posible que deba reiniciar completamente OpenWebUI con los siguientes comandos:

docker stop open-webui
docker rm open-webui
docker run -d -p 8080:8080 --gpus all --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui -e ENV='dev' --restart always ghcr.io/open-webui/open-webui:cuda

Esto creará una copia de seguridad de la base de datos en el archivo webui.db.bak, restablecerá los ajustes y reiniciará el contenedor Docker de OpenWebUI.

Después, inicie sesión en la interfaz web y configure la cuenta de administrador como si fuera su primera conexión.

A continuación, debe restaurar la conexión a Ollama. Para ello, inicie sesión como administrador en OpenWebUi, luego seleccione Username >> Settings >> Admin Settings >> Connections en la sección del menú. Después haga clic en el icono (Configure)

Después de eso, cambie:

y pulse el botón Save

Artículos prácticos y consejos

Puede encontrar más información útil en nuestros artículos del blog:

Tutorial en vídeo

Pedir un servidor con chatbot de IA mediante la API

Para instalar este software utilizando la API, siga estas instrucciones.

question_mark
Is there anything I can help you with?
question_mark
AI Assistant ×