10 Dicembre 2024 di Daniele Frulla
Ho cercato in lungo e in largo, anche dalle fonti più autorevoli di intelligenze artificiali, ma non ho trovato nulla gratuito ed in grado di aiutarmi per tradurre dei testi!
Mi sono un po’ adattato. Mi sono chiesto, perché non costruire la propria intelligenza artificiale per tradurre in locale col proprio PC?
Sì, si può fare, non è molto difficile, ma occorre usare modelli di intelligenza articiale basilari.
Cominciamo!
Gli strumenti che ho utilizzato sono:
Ollama è il primo strumento da usare. Facile da installare in un contenitore. Certo le immagini contenitori di intelligenza artificiale sono davvere grandi, ma, pazienza, basta che funzionino.
Il Dockerfile e’ questo:
FROM python:3.9-slim
# Aggiorna i pacchetti e installa le dipendenze necessarie
RUN apt-get update && \
apt-get install -y curl && \
apt-get clean
RUN pip3 install requests
# Installa Ollama
RUN curl https://ollama.com/install.sh | sh
# Crea una directory di lavoro
WORKDIR /usr/src/app
# Esegui Ollama con il modello Mistral all'avvio del container
CMD ["ollama", "serve" ]
Benissimo, questo è il punto di partenza.
Per costruire l’immagine:
docker build -t ollama .
Ora hai una immagine Ollama che puoi utilizzare con i modelli di reti neurali che piu ti piace.
Quello che ho scelto io è stato Mistral.
La nostra costruzione sta svolgendo al termine con l’installazione di Mistral.
Prima ho messo in esecuzione Ollama:
docker run --name ollama --rm -ti -v ${PWD}/models:/root/.ollama -p 11434:11434 ollama:latest
Puoi notare come ho utilizzato una cartella host per poi non perdermi l’installazione di Mistral che è pesante circa 4GB.
Ora installiamo Mistral:
docker exec -ti ollama ollama pull mistral
Dirai: tutto qui? Per quello che ho visto sì.
Una volta conclusa l’installazione si deve utlizzare il container ollama con un client per generare risposte.
Il client Mistral puoi farlo come vuoi. E’ semplicemente una richiesta ad una api ollama.
In particolare ho usato Python in questo modo creando il file translate.py:
import requests
import json
import sys
def query_ollama_mistral(prompt):
url = "http://localhost:11434/api/generate"
headers = {
"Content-Type": "application/json"
}
payload = {
"model": "mistral",
"prompt": prompt,
"stream": False
}
response = requests.post(url, json=payload, headers=headers)
return response.json()
if __name__ == "__main__":
if len(sys.argv) != 2:
print("Usage: python3 translate.py <input_file>")
sys.exit(1)
input_file = sys.argv[1]
# Leggi il testo dal file di input
with open(input_file, "r") as file:
text_to_translate = file.read().strip()
# Crea il prompt per la traduzione in italiano
prompt = f"Dammi solo la traduzione in italiano: {text_to_translate}"
# Query al modello Mistral di Ollama
result = query_ollama_mistral(prompt)
# Stampa solo il valore della chiave 'response'
if 'response' in result:
print(result['response'])
else:
print("Errore!")
Lo so, non si dovrebbe fare, ma uso questo file in maniera un po’ impropria. D’altronde è solamente uno strumento casalingo.
Suppongo di avere nella root del progetto un file da tradurre insieme al client.
root---translate.py
---to_do.txt
---Dockerfile
L’uso improprio che faccio è quello di eseguire la richiesta all’interno del contenitore:
docker cp translate.py ollama:/usr/src/app
docker cp to_do.txt ollama:/usr/src/app/to_do
docker exec -ti ollama python3 translate.py to_do
La risposta è stata la traduzione del file che ho inviato.
Per consultare tutto il codice puoi andare codice per tradurre con l’intelligenza artificiale.
Si puo’ sempre migliorare participando al codice.
Spero che ti sia stato utile!
Lascia un commento