Saltar al contenido principal
aviso

Este tutorial es una contribución de la comunidad y no es respaldado por el equipo de Open WebUI. Solo sirve como una demostración de cómo personalizar Open WebUI para su caso de uso específico. ¿Quieres contribuir? Consulta el tutorial de contribución.

[!WARNING] Esta documentación se creó basada en la versión actual (0.5.16) y se está actualizando constantemente.

Integración con Jupyter Notebook

A partir de v0.5.11, Open-WebUI lanzó una nueva función llamada Soporte para Jupyter Notebook en el Intérprete de Código. Esta función permite integrar Open-WebUI con Jupyter. Ya ha habido varias mejoras a esta función en las versiones posteriores, así que revisa cuidadosamente las notas de la versión.

Este tutorial le guía a través de lo básico para configurar la conexión entre ambos servicios.

¿Qué son los Jupyter Notebooks?​

Jupyter Notebook es una aplicación web de código abierto que permite a los usuarios crear y compartir documentos que contienen código en vivo, ecuaciones, visualizaciones y texto narrativo. Es particularmente popular en la ciencia de datos, el cálculo científico y la educación porque permite a los usuarios combinar código ejecutable (en lenguajes como Python, R o Julia) con texto explicativo, imágenes y visualizaciones interactivas, todo en un solo documento. Los Jupyter Notebooks son especialmente útiles para el análisis y la exploración de datos porque permiten ejecutar código en pequeños segmentos manejables mientras se documentan el proceso de pensamiento y los hallazgos. Este formato facilita la experimentación, depuración del código y la creación de reportes comprensivos y compartibles que demuestran tanto el proceso de análisis como los resultados.

Consulta el sitio web de Jupyter para más información en: Proyecto Jupyter

Paso 0: Resumen de Configuración​

Aquí está la configuración objetivo que vamos a configurar a través de este tutorial.

Configuración de Ejecución de Código

Paso 1: Iniciar OUI y Jupyter

Para lograr esto, utilicé docker-compose para iniciar un stack que incluye ambos servicios, junto con mis LLMs, pero esto también debería funcionar si se ejecutan cada contenedor de Docker por separado.

docker-compose.yml
version: "3.8"

services:
open-webui:
image: ghcr.io/open-webui/open-webui:latest
container_name: open-webui
ports:
- "3000:8080"
volumes:
- open-webui:/app/backend/data

jupyter:
image: jupyter/minimal-notebook:latest
container_name: jupyter-notebook
ports:
- "8888:8888"
volumes:
- jupyter_data:/home/jovyan/work
environment:
- JUPYTER_ENABLE_LAB=yes
- JUPYTER_TOKEN=123456

volumes:
open-webui:
jupyter_data:

Puedes iniciar el stack anterior ejecutando el siguiente comando en el directorio donde se guarda el archivo docker-compose:

Ejecutar docker-compose
docker-compose up -d

Ahora deberías poder acceder a ambos servicios en las siguientes URLs:

ServicioURL
Open-WebUIhttp://localhost:3000
Jupyterhttp://localhost:8888

Al acceder al servicio de Jupyter, necesitarás el JUPYTER_TOKEN definido anteriormente. Para este tutorial, he elegido un valor de token ficticio de 123456.

Configuración de Ejecución de Código

Paso 2: Configurar la Ejecución de Código para Jupyter

Ahora que tenemos Open-WebUI y Jupyter en ejecución, necesitamos configurar la Ejecución de Código de Open-WebUI para usar Jupyter en Panel de Administración -> Configuración -> Ejecución de Código. Dado que Open-WebUI está lanzando y mejorando constantemente esta función, recomiendo siempre revisar las configuraciones posibles en el archivo configs.py para lo último y lo mejor. A partir de la v0.5.16, esto incluye lo siguiente:

Variable de Entorno Open-WebUIValor
ENABLE_CODE_INTERPRETERTrue
CODE_EXECUTION_ENGINEjupyter
CODE_EXECUTION_JUPYTER_URLhttp://host.docker.internal:8888
CODE_EXECUTION_JUPYTER_AUTHtoken
CODE_EXECUTION_JUPYTER_AUTH_TOKEN123456
CODE_EXECUTION_JUPYTER_TIMEOUT60
CODE_INTERPRETER_ENGINEjupyter
CODE_INTERPRETER_JUPYTER_URLhttp://host.docker.internal:8888
CODE_INTERPRETER_JUPYTER_AUTHtoken
CODE_INTERPRETER_JUPYTER_AUTH_TOKEN123456
CODE_INTERPRETER_JUPYTER_TIMEOUT60

Paso 3: Probar la Conexión​

Para comenzar, confirmemos lo que hay en nuestro directorio de Jupyter. Como puedes ver en la imagen a continuación, solo tenemos una carpeta vacía work.

Configuración de Ejecución de Código

Crear un archivo CSV​

Ejecutemos nuestro primer comando. Asegúrate de haber seleccionado el botón Ejecución de Código.

Comando: Crea dos archivos CSV usando datos ficticios. El primer CSV debe ser creado usando python básico y el segundo CSV debe ser creado usando la biblioteca pandas. Nombra los archivos CSV como data1.csv y data2.csv

Configuración de Ejecución de Código

Podemos ver que los CSVs fueron creados y ahora son accesibles dentro de Jupyter.

Configuración de Ejecución de Código

Crear una Visualización​

Ejecutemos nuestro segundo comando. Nuevamente, asegúrate de haber seleccionado el botón Ejecución de Código.

Comando: Crea varias visualizaciones en python usando matplotlib y seaborn y guárdalas en jupyter

Configuración de Ejecución de Código

Podemos ver que las visualizaciones fueron creadas y ahora son accesibles dentro de Jupyter.

Configuración de Ejecución de Código

Crear un Notebook​

Ejecutemos juntos nuestro último comando. En este comando, crearemos un notebook completamente nuevo utilizando solo un comando.

Comando: Escribe código python para leer y escribir archivos json y guárdalo en mi notebook llamado notebook.ipynb

Configuración de Ejecución de Código

Podemos ver que las visualizaciones fueron creadas y ahora son accesibles dentro de Jupyter.

Configuración de Ejecución de Código

Nota sobre el flujo de trabajo​

Durante las pruebas de esta función, noté varias veces que Open-WebUI no guardaba automáticamente el código o los resultados generados en mi instancia de Jupyter. Para forzar la salida del archivo/elemento que creé, seguía este flujo de trabajo de dos pasos, que primero crea el artefacto de código que quiero y luego pide que lo guarde en mi instancia de Jupyter.

Configuración de Ejecución de Código

¿Cómo estás usando esta función?​

¿Estás utilizando la función de Ejecución de Código y/o Jupyter? Si es así, por favor contáctame. Me encantaría saber cómo estás utilizándolo para seguir agregando ejemplos a este tutorial de otras formas increíbles en que puedes usar esta función.