Open WebUI. Un ChatGPT bueno, bonito y barato.

TL;DR: He estado optimizando mi uso de herramientas de inteligencia artificial, especialmente utilizando Open WebUI junto con la API de OpenAI, en lugar de depender de la suscripción mensual de ChatGPT. Open WebUI me permite ejecutar modelos de lenguaje en contenedores Docker usando mi propia GPU, pero también puedo usarlo en un servidor más sencillo aprovechando la API de OpenAI. Esto me ha permitido reducir drásticamente mis gastos, pasando de $20 mensuales a solo unos pocos céntimos. Comparto los pasos que seguí para configurar Open WebUI con su API, incluyendo la creación de una clave API y el uso de un contenedor Docker para ejecutar la aplicación.
Supongo que no seré el único que de un tiempo a esta parte ha empezado a utilizar las diferentes herramientas de IA que abundan por todas partes. En mi caso el dúo de herramientas que no me pueden faltar son Supermaven y el archiconocido ChatGPT. Este último solamente tiene un modo de suscripción mensual que si bien no es excesivamente caro, suelo usarlo muy eventualmente y no tengo la sensación de estar aprovechándolo para lo que cuesta.
Recientemente, experimentando con modelos LLM en mi equipo, di con la herramienta Open WebUI, que viene a ser el equivalente a Stable Diffussion WebUI pero para modelos de lenguaje.
¿Qué es Open WebUI exactamente?
Se trata de una herramienta basada en la interfaz de ChatGPT, que permite de una forma fácil levantar una serie de contenedores en Docker para descargar modelos de Ollama y usarlos con tu propia GPU. El frontal está hecho en Svelte ❤️ y está tan conseguido que para alguien no acostumbrado a ChatGPT creo que sería difícil diferenciarlos, además permite la creación de GPTs personalizadas y la creación de diversos espacios de trabajo, una pasada.

Llevaba un tiempo (incluso hice un pequeño desarrollo) buscando algo similar para montar en el servidor de casa y poder usarlo localmente. Pero tenía los siguientes inconvenientes:
- Tendría que tener el PC de sobremesa encendido las 24 horas ya que mi servidor no tiene GPU
- El consumo de GPU es tremendo para las LLMs que mejor resultado dan, con el problema que conlleva en la factura de la luz
Entonces pensé, ¿y qué tal si lo habilito en mi servidor sencillo y el cálculo me lo hacen otros?
Usando Open WebUI con el API de OpenAI
Esta herramienta es compatible el API de OpenAI, lo que en conjunto me da justamente lo que buscaba: Una buena interfaz con toda la potencia de ChatGPT.
Tras hacer una breve consulta de precios de consumo de OpenAI, veo que el millar de tokens de GPT-4o anda sobre los $0.005, teniendo en cuenta que una consulta grande de las que suelo hacer, que incluyen código y texto puede rondar los 4.000 tokens hago números y cada petición / respuesta debería de rondar los 4-5 céntimos de euro. Tras confirmarlo con algunas pruebas, concluyo que podría hacer alrededor de 300 consultas con los 20$ que pago mensualmente. Obviamente es un cálculo muy a mano alzada y depende de muchas otras cosas, pero desde luego a mi ya me saldría rentable, pues seguramente no lo consulte más de 30 o 40 veces al mes, lo que se traduciría en unos pocos euros.
GPT-4o-mini, la gran sorpresa
Viendo la tabla de modelos, me encuentro con este pequeñajo. Resulta que es una versión reducida de GPT-4o. Como es de esperar no tiene la misma potencia que su hermano mayor, pero tras usarlo varios días he podido comprobar que cubre perfectamente mis necesidades. ¿Lo mejor de todo? Que vale $0.000150 por cada millar de tokens.
Como una imagen vale más que mil palabras, ahí va mi consumo de Agosto:

Y no, no es ninguna broma. He pasado de pagar 20$ mensuales a estar a día 14 y llevar nueve céntimos de dólar. Vale, si, hay una semana de vacaciones en esa gráfica y todavía falta medio mes, pero no espero gastar más de un dólar mensual en los meses que le de un uso más intensivo.
Quizás todo esto parezca una sobreingeniería que podría evitar usando el chat gratuito de ChatGPT, pero la gracia de consumir el API es que ésta no tiene límites de uso, no se ralentiza y puedo invitar a gente a mi instancia de Open WebUI, por lo que podemos usarlo varias personas en casa de una forma fácil, cada uno con su cuenta.
Cómo montar el tinglado
En primer lugar, hay que tener una cuenta de OpenAI y acceder a tu perfil. Una vez dentro hay que crear un proyecto si no lo tienes, y posteriormente configurar un método de pago y añadir saldo. En mi caso hice un primer aporte de 5$.
Si se va a usar por varias personas, también es interesante valorar la auto-recarga y los límites mensuales si no quieres llevarte una sorpresa a fin de mes.

Finalmente hay que ir al dashboard y crear una API key. Aconsejo copiarla ya que una vez creada no se puede acceder a su valor.
Ahora toca levantar una instancia de Open WebUI configurada para consumir un API key. Se puede hacer con el siguiente docker-compose.yml
y colocando el API key en su correspondiente variable de entorno.
services:
open-webui:
container_name: open-webui
image: ghcr.io/open-webui/open-webui:main
restart: always
environment:
- OPENAI_API_KEY=TU-API-KEY
ports:
- 8080:8080
volumes:
- open-webui:/app/backend/data
volumes:
open-webui:
Levantado el contenedor, estará accesible en el puerto 8080
y una vez dentro hay que crear un usuario administrativo para poder empezar a gestionar la aplicación. Aconsejo echar un ojo a su documentación.
Para cuando todo esté en marcha, aquí van algunos consejos:
- Si la aplicación va a estar publicada en internet, deshabilitar el registro
- Si la aplicación va a ser usada por más gente, limitar el número de modelos a los que se tienen acceso (hay algunos realmente caros)
- Si la aplicación va a estar detrás de un proxy, aplicarle compatibilidad para websockets aquí una issue al respecto
Por defecto vendrá con todos los modelos habilitados, así que es interesante desactivar los que no se vayan a utilizar

Finalmente sólo queda disfrutar 😁