Ollama + Open-webui per un’AI accessibile in locale

Siete un privato od una piccola azienda e volete capire se è possibile avere una vostra AI personale, scollegata dal web, con capacità di ricerca online e di analisi di documenti/file, ed accessibile solo dagli utenti della vostra LAN?
Se così fosse possiamo supporre che abbiate già visto che le soluzioni sono tante, spesso incompatibili tra di loro e con approcci completamente diversi, ed è difficile capire la soluzione migliore per il nostro specifico problema. Oggi vedremo uno degli approcci più diffusi, personalizzabili e ottimizzabili, in una versione leggermente variata rispetto a quella standard.
Di base questo tutorial è specifico per Windows 10/11 sia perchè in Italia resta ancora il sistema più diffuso, sia perchè buona parte degli utenti che può avere bisogno di un aiuto utilizza questo sistema, ma per chi utilizza Linux o mac il procedimento non è molto diverso.
Prima ancora di cominciare diamo per scontato che sul vostro sistema sia presente e funzionante CUDA per le schede video NVIDIA e Rocm (HIP SDK) per le schede AMD, altrimenti, nonostante il tutto funzionerebbe lo stesso, la velocità di elaborazione sarebbe decisamente peggiore, DECISAMENTE.


Cosa installeremo e di cosa avremo bisogno quindi?

  • Python 3.11+ possibilmente in virtual environment ( vedi sezione “IMPORTANTE!!” più in basso
  • OLLAMA è un insieme di tools che danno accesso a tutto quello che serve per usare ed interagire con gli LLM
  • Open-WebUI interfaccia grafica che elimina la necessità di lavorare da riga di comando, espandibile e customizzabile

Questa è la schermata che otterrete alla fine del tutorial, come avrete modo di vedere c’è la possibilità di utilizzare un gran numero di modelli diversi, di aggiungere funzionalità nuove e veri e propri script in python che la vostra AI potrà utilizzare per essere sempre più utile e mirata alle vostre esigenze.

PRECISAZIONE!

Tra i vari metodi di installazione del tutto c’è la possibilità di installare Docker e lanciare un contenitore con già sia Ollama che Open-WebUI predisposti, il comando è il seguente:

docker run -d -p 3000:8080 --gpus=all -v ollama:/root/.ollama -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:ollama


Questa soluzione sarebbe la più immediata, ma per un motivo o per un altro potreste aver bisogno di non usare Docker e preferire un’installazione più diretta, che è leggermente più lunga ma non molto più complessa. Andiamo a vedere nel concreto.

INSTALLAZIONE

Innanzitutto come prima cosa va installato Ollama, fino a qualche tempo fa questa operazione su Windows avrebbe richiesto più passaggi ma è stato ormai reso disponibile l’installer dal sito ufficiale e consigliamo di usare quello, basta scaricarlo ed eseguirlo e se tutto va bene dovreste avere Ollama operativo all’indirizzo 127.0.0.1:11434/ , andateci per confermare che sia correttamente accessibile.

IMPORTANTE!!

Se ci tenete alla vostra sanità mentale scaricate Python 3.11 da QUI, installatelo, e poi PER L’AMOR DEL CIELO non installate altro, non lanciate il comando pip install, non fate nulla!
Se c’è una cosa che imparerete, e che vi farà piangere se non risolvete subito, è che l’universo delle AI e del machine learning in generale si basa su equilibri e dipendenze ben specifici, e spesso vi servirà una specifica versione di alcune librerie per far funzionare le vostre applicazioni, versione che potenzialmente corromperebbe tutte le altre vostre applicazioni che necessitavano di un’altra.
Ed è qui che entrano in gioco i Virtual Environment, per farla semplice possiamo immaginarli come delle piccole macchine virtuali completamente slegate tra loro che vi permetteranno ad esempio di avere sulla vostra macchina sia python 3.10 che python 3.11 ed utilizzare quello giusto all’occorrenza, game changing!
Lo so, lo so, potreste aver letto in giro al riguardo, esservi persi tra righe e righe di codice per usare venv o virtualenv nel modo corretto e magari vi siete anche affranti al solo pensiero, ma non preoccupatevi, ANACONDA arriva a salvarvi.
Il setup anche stavolta è immediato, scaricate l’installer ed attendete.

Una volta installato, potrete lanciare Anaconda Navigator per avere accesso ad una UI da cui gestire e creare tutti i virtual environment che volete, in modo semplice ed intuitivo.In questo modo il vostro sistema resterà sempre “pulito” ed eviterete moltissimi futuri problemi

Una volta creato il votro ambiente virtuale con Python 3.11 potete premere sul tasto play e lanciare da terminale, dovrebbe aprirsi una finestra di command prompt che potrebbe sembrarvi uguale alla “standard” ma che in realtà è agganciata al virtualenv ed installerà lì qualsiasi cosa. Procediamo quindi con l’installazione di Open-WEbUI inserendo il comando:

pip install open-webui

Potrebbe volerci un po’ di tempo in quanto verranno installate anche tutte le dipendenze necessarie, armatevi di pazienza ed aspettate che finisca.

A questo punto dovreste poter lanciare l’ui con il comando open-webui serve ed averla accessibile all’indirizzo http://localhost:8080/.

Vi verrà richiesto di inserire i vostri dati, fate attenzione perchè il primo utente che verrà registrato sarà automaticamente l’Admin.

Fatto questo vi troverete davanti alla schermata principale e potrete essere contenti, il grosso è fatto!
Al momento la vostra UI non è ancora accessibile nella LAN quindi se volete usarla subito potrete per ora farlo solo dal pc dove è installato il tutto.
Qualora invece steste riscontrando problemi ad accedere è probabile che stiate avendo un problema di comunicazione tra Ollama e l’UI, andate alla fine del tutorial per un paio di consigli specifici.

Aprire l’accesso alla LAN

Ora che è tutto funzionante siamo pronti per la fase finale, dare modo agli utenti della nostra rete di accedere.
Per farlo dobbiamo sapere l’indirizzo IP locale del notro server, qualora aveste difficoltà a reperirlo vi basterà digitare ipconfig da un qualsiasi terminale di comando (no, non da quello dove avete lanciato il server di open-webui altrimenti chiudete tutto 🙂 ).
Avendo il vostro indirizzo a portata di mano, sempre da un qualsiasi terminale digitate questi comandi per abilitare l’accesso alla LAN, digitateli singolarmente e date Invio ad ognuno dei due, nel secondo sostituite “YOUR-IP” con l’indirizo che avete segnato prima:

setx OLLAMA_HOST 0.0.0.0
setx OLLAMA_BASE_URL http://YOUR-IP:11434

Ora dovrete aprire una finestra di Windows Powershell con i permessi da Admin e all’interno di essa digitare il comando:

netsh interface portproxy add v4tov4 listenport=8080 listenaddress=0.0.0.0 connectport=8080 connectaddress=localhost

Ok, ce l’abbiamo fatta, se tutto è andato per il verso giusto ora ogni utente connesso alla vostra LAN dovrebbe essere in grado di accedere all’UI all’indirizzo YOUR-IP:8080!

Conclusioni e possibili upgrade

Uno dei limiti attuali di questo sistema è che non è predisposto per l’esecuzione in parallelo, questo significa che se più utenti provano ad utilizzarlo contemporaneamente si potrebbero avere dei rallentamenti o, in casi estremi di congestione, anche dei crash. Volendo migliorare le prestazioni si può abilitare la possibilità di gestire carichi di lavoro in parallelo, o anche differenti AI in contemporanea, sia in maniera diretta che con meccanismi di gestione dei container tipo Kubernetes.

Torna in alto