LLM in Libre Office

Mini-tutorial

Obiettivi

L’idea è di provare ad usare i grandi modelli linguistici in una rete locale, senza inviare dati a servizi remoti e usando solo software opensource.

Concetti

I modelli sono file. Questi file vanno “eseguiti” cioè resi interrogabili o direttamente, o tramite API. Di questo si occupano programmi come Ollama, applicazione opensource mantenuta da diversi programmatori.
Per eseguire, configurare, scaricare tramite Ollama si può usare una “finestra di terminale” da dove si inviano comandi (scarica un modello, eseguilo, cancella la memoria, …) , oppure un’interfaccia web a cui si accede con un browser che fa le stesse cose ma in maniera più chiara per l’utente.
In questo secondo caso, occorre installare un server web che parli da un lato con Ollama e dall’altro fornisca una “pagina web” con cui interagire. Un esempio di questo genere di applicazioni è OpenWebUi, ma ce ne sono altre.

Test

L’indirizzo della rete locale che usa Ollama è http://localhost:11434. Se con un browser ci si collega a questa URL si ottiene solo un messaggio di conferma (Ollama is running). Se invece si può fare una richiesta più complessa utilizzando curl:

curl http://localhost:11434/api/generate -d ‘{ “model”: “llama3.2”, “prompt”: “Why is the sky blue?”, “stream”: false }’

si ottiene una risposta del tipo:

{“model”:”llama3.2″,”created_at”:”2024-12-17T15:49:17.642817179Z”,”response”:”The sky appears blue because of a phenomenon called Rayleigh scattering, named after the British physicist Lord Rayleigh. He discovered that when sunlight enters Earth’s atmosphere, it encounters tiny molecules of gases such as nitrogen and oxygen…

L’indirizzo della rete locale che usa OpenWebui è http://localhost:8080. Se con un browser ci si collega a questa URL si ottiene una pagina da cui creare un utente (locale) per poi configurare e interagire con Ollama.

Nota: curl è un programma per terminale che si connette ad una URL e restituisce il risultato. Esiste per Linux, ma anche per Windows (curl.exe) dalla v. 10. Ne esistono altre versioni: https://curl.se/windows/

Risorse necessarie

La macchina dovrebbe avere almeno 16 Gb di memoria se si vogliono usare i modelli 7b (cioè con 7 miliardi di parametri), 32 Gb per quelli ancora più complessi.
I modelli sono piuttosto grandi (dell’ordine di qualche Gigabyte l’uno), quindi occorre anche un hard disk capiente.
E’ possibile però installare i modelli e i programmi necessari su una macchina e usarli da un’altra.
Questa è anche la configurazione migliore per una piccola comunità che vuole usare localmente i LLM: una macchina (preferibilmente Linux) piuttosto grossa su cui gira Ollama con i modelli; tutte le altre (Windows se non si può fare altrimenti) si limitano a collegarsi a quell’istanza di Ollama e ottenere i servizi.
Il vantaggio è che la configurazione può essere fatta in un solo punto, per uno scopo preciso, con un modello preciso. Volendo, solo il server può essere connesso a Internet.
Se la rete locale è configurata adeguatamente (cioè permette da un PC di connettersi alla porta 8080 dell’altro) è anche possibile usare direttamente OpenWebUI da qualsiasi PC della rete.


Lo scopo di questo documento però è descrivere un caso diverso d’uso: quello in cui si usano gli LLM dentro un programma di scrittura come Libre Office Writer.
Quali usi si possano fare di un LLM dentro un programma di scrittura dipende dal contesto. Il plugin che viene qui citato (Localwriter, https://extensions.libreoffice.org/en/extensions/show/99224) permette di applicare le operazioni tipiche dei LLM su un testo scritto dentro Libre Office Writer. In particolare, estendere un testo o modificarlo. Dalla pagine di informazioni del plugin:

Extend Selection

Uses a language model to predict what comes after the selected text. There are a lot of ways to use this. Some example use cases for this include, writing a story or an email given a particular prompt, adding additional possible items to a grocery list, or summarizing the selected text.

Edit Selection

A dialog box appears to prompt the user for instructions about how to edit the selected text, then the selected text is replaced by the edited text.Some examples for use cases for this include changing the tone of an email, translating text to a different language, and semantically editing a scene in a story.

Il plugin è opensource, è scritto in Python e può essere tradotto, modificato, esteso, o usato come modello per fare altro.

Passi

  1. Installare Libre Office
  2. Scaricare e installare il plugin Localwriter (file OXT)
  3. Scaricare e installare Ollama (vedi sotto, istruzioni diverse a seconda del sistema operativo)
  4. Opzionale:
    • Scaricare e installare OpenWebUI o simili (vedi sotto, istruzioni diverse a seconda del sistema operativo)
    • Configurare OpenWebUI
  1. Lanciare Ollama con un modello: ollama run llama3.2:1b (se non è già presente, viene scaricato ed eseguito)
  2. Dalla voce di menù Localwriter scegliere Settings
    • nel primo campo inserire l’indirizzo dove sta Ollama (es. 192.168.1.2) seguito da : e dal numero della porta (es. 11434)
    • nel secondo campo inserire il nome del modello (es. llama3.2) seguito da : e dal numero di versione (es. 1b) Esempio: se Ollama è stato installato su un computer della rete locale all’IP 192.168.1.2, inserire nei primi due campi:

Nel caso in cui il PC dove sta Ollama è lo stesso dove sta Libre Office, l’IP può essere sostituito da “localhost”.


Nei campi successivi ai primi due ci sono delle configurazioni non obbligatorie ma utili, relative alle funzioni “extend” e “edit”.

  1. limitare il numero di “token” (parole) generati. Per default: 70
  2. modificare il contesto generale (prompt). Ad esempio: “sei un professore di italiano della scuola secondaria inferiore”

Problemi

  1. La configurazione si perde (è vuota): occorre reinserirla.
  2. Invece del testo generato dal LLM appare un messaggio di errore “”: l’indirizzo del server Ollama non è raggiungibile, o la porta è bloccata da un firewall o dal router/access point.
  3. Invece del testo generato dal LLM appare un messaggio di errore 500: Ollama non è più in esecuzione e va rilanciato
  4. Appare un messaggio che dice che Libre Office non sta rispondendo: attendere…

Sistemi operativi

Distinguiamo tra il PC che funge da “server” (dove deve stare Ollama e i vari LLM) e i(l) PC che funzionano da “cliente”, cioè dove i servizi sono utilizzati.
Per questi secondi, Libre Office esiste per Linux, Windows o MacOS: basta seguire le informazioni in https://it.libreoffice.org/ .
Invece per il PC che funge da server:

Linux

Ollama

Scaricare ed eseguiro lo script (.sh) che lo scarica e lo installa:

curl https://ollama.ai/install.sh | sh

oppure manualmente, scaricare:

curl -L https://ollama.com/download/ollama-linux-amd64.tgz -o ollama-linux-amd64.tgz

decomprimere:

sudo tar -C /usr -xzf ollama-linux-amd64.tgz

In alternativa si può usare snap:

sudo snap install ollama –channel=beta

Oppure usando docker:

docker run -d -v ollama:/root/.ollama -p 11434:11434 –name ollama ollama/ollama

Altre informazioni su docker:

https://github.com/ollama/ollama/blob/main/docs/docker.md

Altre informazioni su configurazione e manutenzione:

https://github.com/ollama/ollama/blob/main/docs/linux.md

OpenWebUi

Mediante snap si può anche installare OpenWebUi:_

sudo snap install open-webui –beta

Windows

Ollama

Scaricare e lanciare:

https://ollama.com/download/windows (Windows 10+)

OpenWebUi

L’unico modo per installare OpenWebui sembra essere con Docker. E’ al di fuori dello scopo di questa guida spiegare come farlo, e comunque richiede competenze un po’ più avanzate.

MacOS

TBD


Pubblicato

in

, ,

da

Tag: