Cómo implementar Open WebUI con integración segura de API OpenAI, túnel público y acceso al chat basado en navegador

En este tutorial, creamos una configuración completa de Open WebUI en Colab, de una manera práctica, usando Python. Comenzamos instalando las dependencias requeridas y luego proporcionamos de forma segura nuestra clave API OpenAI a través de una entrada secreta basada en terminal para que las credenciales confidenciales no queden expuestas directamente en el cuaderno. A partir de ahí, configuramos las variables de entorno necesarias para que Open WebUI se comunique con la API de OpenAI, definimos un modelo predeterminado, preparamos un directorio de datos para el almacenamiento en tiempo de ejecución e iniciamos el servidor Open WebUI dentro del entorno Colab. Para que la interfaz sea accesible fuera del portátil, también creamos un túnel público y capturamos una URL que se puede compartir y que nos permite abrir y usar la aplicación directamente en el navegador. A través de este proceso, logramos que Open WebUI se ejecute de un extremo a otro y entendemos cómo las piezas clave de implementación, configuración, acceso y administración del tiempo de ejecución encajan en un flujo de trabajo basado en Colab.

importar sistema operativo importar re importar tiempo importar json importarshutil importar señal importar secretos importar subproceso importar urllib.request de getpass importar getpass de pathlib importar ruta print(“Instalando Open WebUI y paquetes auxiliares…”) subprocess.check_call([
“python”, “-m”, “pip”, “install”, “-q”,
“open-webui”,
“requests”,
“nest_asyncio”
]) print(“\nIngrese su clave API OpenAI de forma segura.”) openai_api_key = getpass(“Clave API OpenAI: “).strip() si no es openai_api_key: aumente ValueError(“La clave API OpenAI no puede estar vacía.”) default_model = input(“Modelo predeterminado para usar dentro de Open WebUI [gpt-4o-mini]: “).strip() si no default_model: default_model = “gpt-4o-mini”

Comenzamos importando todos los módulos de Python necesarios para administrar las operaciones del sistema, proteger la entrada, manejar rutas de archivos, ejecutar subprocesos y acceder a la red. Luego instalamos Open WebUI y los paquetes de soporte necesarios para ejecutar la aplicación sin problemas dentro de Google Colab. Después de eso, ingresamos de forma segura nuestra clave API OpenAI a través de la entrada del terminal y definimos el modelo predeterminado que queremos que use Open WebUI.

os.environ[“ENABLE_OPENAI_API”] = “Verdadero” os.environ[“OPENAI_API_KEY”] = openai_api_key os.environ[“OPENAI_API_BASE_URL”] = “https://api.openai.com/v1” os.environ[“WEBUI_SECRET_KEY”] = secretos.token_hex(32) os.environ[“WEBUI_NAME”] = “Abrir WebUI en Colab” os.environ[“DEFAULT_MODELS”] = default_model data_dir = Ruta(“/content/open-webui-data”) data_dir.mkdir(parents=True, exist_ok=True) os.environ[“DATA_DIR”] = cadena (dir_datos)

Configuramos las variables de entorno que permiten que Open WebUI se conecte correctamente con la API de OpenAI. Almacenamos la clave API, definimos el punto final base de OpenAI, generamos una clave secreta para la interfaz web y asignamos un modelo predeterminado y un nombre de interfaz para la sesión. También creamos un directorio de datos dedicado en el entorno Colab para que Open WebUI tenga una ubicación estructurada para almacenar sus datos en tiempo de ejecución.

cloudflared_path = Ruta(“/content/cloudflared”) si no es cloudflared_path.exists(): print(“\nDescargando cloudflared…”) url = “https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64” urllib.request.urlretrieve(url, cloudflared_path) cloudflared_path.chmod(0o755) print(“\nIniciando el servidor Open WebUI…”) server_log = open(“/content/open-webui-server.log”, “w”) server_proc = subprocess.Popen(
[“open-webui”, “serve”]stdout=server_log, stderr=subproceso.STDOUT, env=os.environ.copy() )

Preparamos el componente del túnel descargando el binario de CloudFlare si aún no está disponible en el entorno de Colab. Una vez que esté listo, iniciamos el servidor Open WebUI y dirigimos su salida a un archivo de registro para que podamos inspeccionar su comportamiento si es necesario. Esta parte del tutorial configura el proceso de aplicación principal que impulsa la interfaz basada en navegador.

local_url = “http://127.0.0.1:8080” listo = Falso para _ en rango(120): intente: solicitudes de importación r = request.get(local_url, timeout=2) si r.status_code < 500: listo = Verdadero descanso excepto Excepción: pase time.sleep(2) si no está listo: server_log.close() con open("/content/open-webui-server.log", "r") como f: registros = f.read()[-4000:] rise RuntimeError( "Open WebUI no se inició correctamente.\n\n" "Registros recientes:\n" f"{logs}" ) print("Open WebUI se está ejecutando localmente en:", local_url) print("\nCreando un túnel público...") Tunnel_proc = subprocess.Popen( [str(cloudflared_path), "tunnel", "--url", local_url, "--no-autoupdate"]stdout=subproceso.PIPE, stderr=subproceso.STDOUT, texto=Verdadero)

Comprobamos repetidamente si el servidor Open WebUI se ha iniciado correctamente en el puerto local de Colab. Si el servidor no se inicia correctamente, leemos los registros recientes y generamos un error claro para que podamos entender qué salió mal. Una vez que se confirma que el servidor se está ejecutando, creamos un túnel público para que la interfaz local sea accesible desde fuera de Colab.

public_url = Ninguno start_time = time.time() mientras que time.time() – start_time < 90: línea = Tunnel_proc.stdout.readline() si no es línea: time.sleep(1) continuar coincidencia = re.search(r"https://[-a-zA-Z0-9]+\.trycloudflare\.com", línea) si coincide: public_url = match.group(0) romper si no public_url: con open("/content/open-webui-server.log", "r") como f: server_logs = f.read()[-3000:] rise RuntimeError( "El túnel se inició pero no se capturó ninguna URL pública.\n\n" "Abrir registros del servidor WebUI:\n" f"{server_logs}" ) print("\n" + "=" * 80) print("Abrir WebUI está listo.") print("URL pública:", public_url) print("URL local :", local_url) print("=" * 80) print("\nQué hacer next:") print("1. Abra la URL pública.") print("2. Cree su cuenta de administrador la primera vez que la abra.") print("3. Vaya al selector de modelo y elija:", default_model) print("4. Comience a chatear con OpenAI a través de Open WebUI.") print("\nNotas útiles:") print("- Su clave API de OpenAI se pasó a través de variables de entorno.") print("- Los datos persisten solo durante el tiempo de ejecución actual de Colab a menos que monte Drive.") print("- Si el túnel se detiene, vuelva a ejecutar la celda.") def tail_open_webui_logs(lines=80): log_path = "/content/open-webui-server.log" if not os.path.exists(log_path): print("No se encontró ningún registro del servidor.") return with open(log_path, "r") as f: content = f.readlines() print("".join(content[-lines:])) def stop_open_webui(): global server_proc, Tunnel_proc, server_log para proc en [tunnel_proc, server_proc]: intente: si proc y proc.poll() es Ninguno: proc.terminate() excepto Excepción: pase intente: server_log.close() excepto Excepción: pase print("Se detuvo la apertura de WebUI y el túnel.") print("\nAyudantes disponibles:") print("- tail_open_webui_logs()") print("- stop_open_webui()")

Capturamos la URL del túnel público e imprimimos los detalles de acceso finales para que podamos abrir Open WebUI directamente en el navegador. También mostramos los siguientes pasos para usar la interfaz, incluida la creación de una cuenta de administrador y la selección del modelo configurado. Además, definimos funciones auxiliares para verificar registros y detener los procesos en ejecución, lo que nos facilita la administración y reutilización de la configuración general.

En conclusión, creamos una implementación de Open WebUI completamente funcional en Colab y la conectamos a OpenAI de manera segura y estructurada. Instalamos la aplicación y sus paquetes de soporte, proporcionamos detalles de autenticación a través de entrada protegida, configuramos la conexión de backend a la API de OpenAI e iniciamos el servidor web local que alimenta la interfaz. Luego expusimos ese servidor a través de un túnel público, haciendo que la aplicación se pudiera utilizar a través de un navegador sin necesidad de instalación local en nuestra máquina. Además, incluimos funciones auxiliares para ver registros y detener los servicios en ejecución, lo que hace que la configuración sea más fácil de administrar y solucionar problemas durante la experimentación. En general, establecimos un flujo de trabajo práctico y reutilizable que nos ayuda a implementar rápidamente Open WebUI en Colab, probar interfaces de chat impulsadas por OpenAI y reutilizar la misma base para futuros prototipos, demostraciones y proyectos de IA basados ​​en interfaces.

Consulte los códigos completos aquí. Además, no dude en seguirnos en Twitter y no olvide unirse a nuestro SubReddit de más de 120.000 ML y suscribirse a nuestro boletín. ¡Esperar! estas en telegrama? Ahora también puedes unirte a nosotros en Telegram.

¿Necesita asociarse con nosotros para promocionar su repositorio de GitHub O su página principal de Hugging O su lanzamiento de producto O seminario web, etc.? Conéctate con nosotros

Michal Sutter es un profesional de la ciencia de datos con una Maestría en Ciencias de Datos de la Universidad de Padua. Con una base sólida en análisis estadístico, aprendizaje automático e ingeniería de datos, Michal se destaca en transformar conjuntos de datos complejos en conocimientos prácticos.