Open WebUI: un’interfaccia grafica per Ollama

Open WebUI è un’interfaccia web open-source progettata per interagire con modelli linguistici di grandi dimensioni (LLM) sia locali (es: Ollama) che remoti tramite API compatibili con OpenAI.

La veste grafica di questa applicazione è molto simile a quella che gli utenti sperimentano su sistemi come ChatGPT, Gemini, Claude.ai, ecc. e questo la rende facilmente utilizzabile e comprensibile, allo stesso tempo offre delle API HTTP che permettono ai programmatori di sfruttare le sue funzionalità nelle proprie applicazioni.

Le funzionalità principali di Open WebUI sono:

  • Interazione con modelli linguistici attraverso un’interfaccia web user-friendly e responsive.

  • Supporto delle API Open AI per inviare interrogazioni a tutti i motori di LLM commerciali e non che le supportano.

  • Supporto di modelli locali (es. LLaMA, Mistral, etc.) ricorrendo a un motore come Ollama (direttamente)  o tramite altri motori: LM Studio, LocalAI, ecc (grazie alla compatibilità con le API Open AI).

  • Supporto a Lite LLM (che è un proxy per l’uso di molti LLM commerciali e locali).
  • Interfaccia chat avanzata con: organizzazione delle conversazioni, parametri personalizzabili, condivisione delle chat, ecc.
  • Personalizzazione del layout dell’interfaccia utente.
  • Supporto per RAG (Retrieval Augmented Generation).
  • API HTTP per l’esecuzione di interrogazioni da applicazioni esterne.
  • Model builder per personalizzare i modelli da usare, con proprietà e comportamenti base predefiniti
  • Generazione di immagini: utilizzando le API di servizi commerciali come Open AI o delle componenti locali che però richiedono una potenza di calcolo adeguata.
  • Ricerca sul Web di informazioni aggiornate, usando provider come SearXNG, Google PSE, Brave Search, ecc.
  • Supporto multilingua.
  • Gestione di utenti, gruppi e permessi granulari.

Installazione e configurazione

Proviamo a usare Open WebUI, utilizzando dei container Docker [5][6] , in abbinamento a Ollama (già installato e configurato in un post precedente [4]).

I comandi sono i seguenti:

# Per far partire il serizio ollama se non è attivo. 
ollama serve & // Aprendo l'url http://localhost:11434 deve comparire la scritta: Ollama is running 

# Per controllare se Docker è installato e in esecuzione:
docker --version

# Per creare il container Docker.
docker run -d -p 3000:8080 -e OLLAMA_API_URL=http://host.docker.internal:11434 --name open-webui ghcr.io/open-webui/open-webui:main

Con questo comando creiamo ed eseguiamo un container sul quale girerà Open WebUI (il programma nel container girerà sulla porta 8080, ma sarà esposto all’esterno del container e quindi sul nostro computer sulla porta 3000)  già configurato in modo tale da inviare le interrogazioni al server Ollama che è in esecuzione sul nostro computer.

L’indirizzo http://host.docker.internal:11434 serve a indicare a Docker che Ollama gira sulla stessa macchina su cui gira Docker Desktop.

Ovviamente questo comando è valido solo per fare dei test, in ambienti di produzione è necessario specificare altri parametri, per esempio quelli per garantire la persistenza dei dati.

Quando il container sarà partito allora si potrà accedere all’interfaccia di Open Web UI aprendo questo link in un browser: http://localhost:3000

Il sistema chiederà subito di impostare un account amministratore:

A questo punto il sistema sarà pronto per essere interrogato: l’interrogazione scritta nella maschera di Open WebUI sarà inviata ad Ollama e la sua risposta verrà mostrata nella stessa maschera.

Il modello usato per le interrogazioni di questo esempio è Mistral:7b scaricato e installato sul Ollama nel post precendente [4].

Uso della HTTP API

E’ possibile interrogare Open WebUI utilizzando degli API endpoints [5] che sono protetti da autenticazione.

L’autenticazione può avvenire in due modi:

  1. Tramite una API Key.
  2. Tramite un token JWT (In questo caso si effettua una prima chiamata specificando username e password ottenendo come risposta un token da usare nelle chiamate successive).

Per creare la chiave del metodo 1, bisogna cliccare sul simbolo del profilo utente (in basso a sinistra), poi su Impostazioni–>Account e poi su Crea nuova chiave segreta.

A questo punto si possono effettuare delle chiamate usando la API Key, per esempio:

# Recuperare l'elenco dei modelli disponbili:
curl -X GET "http://localhost:3000/api/models" -H "Authorization: Bearer YOUR_API_KEY" -H "Content-Type: application/json"

# Effettuare una interrogazione:
curl -X POST http://localhost:3000/api/chat/completions -H "Authorization: Bearer YOUR_API_KEY" -H "Content-Type: application/json" -d '{"model": "mistral:7b","messages": [{"role": "user","content": "Why is the sky blue?"}]}'

L’elenco completo è disponibilie sul sito ufficiale di Open Web UI [5].

Possibili post di approfondimento da realizzare

Mi piacerebbe, nelle prossime settimane, approfondire questi argomenti:

    • Realizzazione di un sistema RAG con Open Web UI e Ollama.
    • Quale motore di LLM usare in applicazioni commerciali?
    • Fine-tuning di un modello vs sistemi RAG.
    • Database vettoriali e ChromaDB.
    • Uso della libreria LlamaIndex per sistemi RAG.

Galleria di immagini

Fonti e riferimenti

  1. Open WebUI sito ufficiale.
  2. Le funzionalità di Open WebUI documentazione ufficiale.
  3. Repository di OpenWebUI su GitHub.
  4. Eseguire un modello LLM in locale con Ollama, su questo blog.
  5. API Endpoints di Open WebUI.
  6. Installare e configurare Docker su Windows 10 sul sito Ionos.
  7. Docker Crash Course for Absolute Beginners su TechWorld with Nana.
5 giorni ago

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *