{"id":942,"date":"2026-02-13T08:00:00","date_gmt":"2026-02-13T07:00:00","guid":{"rendered":"https:\/\/darioiannascoli.it\/blog\/automatizzare-attivita-ripetitive-ai-locale-llm-open-source\/"},"modified":"2026-02-13T08:00:00","modified_gmt":"2026-02-13T07:00:00","slug":"automatizzare-attivita-ripetitive-ai-locale-llm-open-source","status":"publish","type":"post","link":"https:\/\/darioiannascoli.it\/blog\/automatizzare-attivita-ripetitive-ai-locale-llm-open-source\/","title":{"rendered":"Come Automatizzo le Attivit\u00e0 Ripetitive sul PC con l&#8217;AI Locale: Script e Workflow Pratici con LLM Open Source"},"content":{"rendered":"<p>Se c&#8217;\u00e8 una cosa che ho imparato in anni di lavoro come System Administrator \u00e8 che <strong>le attivit\u00e0 ripetitive sono il nemico numero uno della produttivit\u00e0<\/strong>. Rinominare centinaia di file, analizzare log, generare report, classificare email, scrivere documentazione: operazioni che singolarmente richiedono pochi minuti, ma che sommate divorano ore preziose ogni settimana. Da quando ho iniziato a usare <strong>modelli AI in locale<\/strong> tramite Ollama e script personalizzati, ho drasticamente ridotto il tempo dedicato a queste operazioni.<\/p>\n<p>In una <a href=\"https:\/\/darioiannascoli.it\/blog\/installare-modello-ai-locale-ollama\/\">guida precedente<\/a> vi ho mostrato come installare e usare un modello AI in locale con Ollama. Oggi faccio un passo avanti: vi mostro <strong>come automatizzo concretamente le attivit\u00e0 ripetitive sul PC<\/strong> combinando LLM open source, script Python e Bash, e workflow che potete replicare subito. Tutto gira in locale, senza inviare dati a servizi cloud, il che \u00e8 fondamentale per chi lavora con dati sensibili o semplicemente vuole mantenere il controllo totale sulla propria infrastruttura.<\/p>\n<p>In questo articolo condivido i <strong>workflow pratici<\/strong> che uso quotidianamente, con codice funzionante e testato. Non si tratta di teoria: sono soluzioni nate da esigenze reali che ho affinato nel tempo.<\/p>\n<h2>Perch\u00e9 Automatizzare con l&#8217;AI Locale invece dei Servizi Cloud<\/h2>\n<p>Prima di entrare nel vivo, lasciatemi spiegare perch\u00e9 preferisco l&#8217;approccio locale. I servizi AI cloud come ChatGPT API o Claude API sono potentissimi, ma presentano alcuni limiti concreti per l&#8217;automazione quotidiana:<\/p>\n<ul>\n<li><strong>Privacy dei dati<\/strong>: i log dei server, le email dei clienti, i file di configurazione contengono informazioni sensibili che non voglio far transitare su server di terze parti.<\/li>\n<li><strong>Costi ricorrenti<\/strong>: se automatizzo decine di task al giorno, le chiamate API si accumulano rapidamente.<\/li>\n<li><strong>Latenza e dipendenza dalla rete<\/strong>: se la connessione cade o l&#8217;API ha problemi, l&#8217;automazione si blocca.<\/li>\n<li><strong>Controllo totale<\/strong>: posso scegliere il modello, ottimizzarlo, e farlo girare anche su macchine air-gapped.<\/li>\n<\/ul>\n<p>Con <strong>Ollama<\/strong> e modelli come <em>Llama 3.1<\/em>, <em>Mistral<\/em>, <em>Phi-3<\/em> o <em>Qwen2.5<\/em>, ottengo risultati eccellenti per task di automazione senza uscire dalla mia rete locale.<\/p>\n<h2>Prerequisiti: Configurazione dell&#8217;Ambiente<\/h2>\n<p>Per seguire questa guida, avete bisogno di:<\/p>\n<ul>\n<li><strong>Ollama installato e funzionante<\/strong> \u2013 se non l&#8217;avete ancora configurato, seguite la mia <a href=\"https:\/\/darioiannascoli.it\/blog\/installare-modello-ai-locale-ollama\/\">guida completa all&#8217;installazione di Ollama<\/a>.<\/li>\n<li><strong>Python 3.10+<\/strong> con la libreria <code>requests<\/code> (oppure il pacchetto ufficiale <code>ollama<\/code>).<\/li>\n<li><strong>Un modello adatto<\/strong>: per l&#8217;automazione consiglio <em>Llama 3.1 8B<\/em> o <em>Qwen2.5 7B<\/em> come buon compromesso tra velocit\u00e0 e qualit\u00e0.<\/li>\n<li><strong>Almeno 8 GB di RAM<\/strong> liberi per il modello (16 GB consigliati). Se state valutando un upgrade della RAM, ho scritto un&#8217;<a href=\"https:\/\/darioiannascoli.it\/blog\/ram-costosa-analisi-risparmiare-upgrade\/\">analisi sui costi della RAM e come risparmiare<\/a>.<\/li>\n<\/ul>\n<p>Installiamo le dipendenze Python:<\/p>\n<p><code>pip install ollama requests<\/code><\/p>\n<p>Scarichiamo il modello che useremo negli esempi:<\/p>\n<p><code>ollama pull llama3.1<\/code><\/p>\n<h2>Script 1: Analisi Automatica dei Log con AI Locale<\/h2>\n<p>Uno dei task pi\u00f9 frequenti nel mio lavoro \u00e8 <strong>analizzare i log dei server<\/strong> per individuare anomalie, tentativi di intrusione o errori ricorrenti. Invece di fare grep manuali su file da migliaia di righe, ho creato uno script che passa i log all&#8217;LLM locale e mi restituisce un report strutturato.<\/p>\n<h3>Il Codice Python per l&#8217;Analisi dei Log<\/h3>\n<p>Ecco lo script che uso quotidianamente:<\/p>\n<p><code>#!\/usr\/bin\/env python3<br \/>\"\"\"Analisi automatica dei log server con LLM locale via Ollama.\"\"\"<br \/>import ollama<br \/>import sys<br \/>from pathlib import Path<\/p>\n<p>def analizza_log(filepath, max_lines=200):<br \/>&nbsp;&nbsp;&nbsp;&nbsp;\"\"\"Legge un file di log e lo analizza con il modello locale.\"\"\"<br \/>&nbsp;&nbsp;&nbsp;&nbsp;log_content = Path(filepath).read_text(encoding='utf-8', errors='ignore')<br \/>&nbsp;&nbsp;&nbsp;&nbsp;# Prendiamo le ultime N righe per non superare il context window<br \/>&nbsp;&nbsp;&nbsp;&nbsp;lines = log_content.strip().split('n')[-max_lines:]<br \/>&nbsp;&nbsp;&nbsp;&nbsp;log_chunk = 'n'.join(lines)<\/p>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;prompt = f\"\"\"Sei un system administrator esperto. Analizza questo log e fornisci:<br \/>1. ERRORI CRITICI trovati (con riga e spiegazione)<br \/>2. PATTERN SOSPETTI (tentativi brute force, accessi anomali)<br \/>3. RACCOMANDAZIONI operative<\/p>\n<p>Rispondi in italiano, in modo conciso e strutturato.<\/p>\n<p>LOG:<br \/>{log_chunk}\"\"\"<\/p>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;response = ollama.chat(<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;model='llama3.1',<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;messages=[{'role': 'user', 'content': prompt}]<br \/>&nbsp;&nbsp;&nbsp;&nbsp;)<br \/>&nbsp;&nbsp;&nbsp;&nbsp;return response['message']['content']<\/p>\n<p>if __name__ == '__main__':<br \/>&nbsp;&nbsp;&nbsp;&nbsp;if len(sys.argv) &lt; 2:<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print(\"Uso: python analizza_log.py \/percorso\/file.log\")<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sys.exit(1)<br \/>&nbsp;&nbsp;&nbsp;&nbsp;risultato = analizza_log(sys.argv[1])<br \/>&nbsp;&nbsp;&nbsp;&nbsp;print(risultato)<\/code><\/p>\n<p>Nella mia esperienza, questo script mi ha permesso di individuare in pochi secondi un pattern di tentativi di accesso SSH che avrei impiegato 20 minuti a identificare manualmente. Ho poi integrato il risultato con la configurazione di <a href=\"https:\/\/darioiannascoli.it\/blog\/configurare-fail2ban-plesk\/\">Fail2Ban su Plesk<\/a> per bloccare automaticamente gli IP sospetti.<\/p>\n<h2>Script 2: Rinominare e Classificare File in Massa<\/h2>\n<p>Un altro task che mi capitava spesso: <strong>rinominare e organizzare centinaia di file<\/strong> (documenti, screenshot, backup) in cartelle strutturate. L&#8217;AI locale \u00e8 perfetta per analizzare il contenuto o il nome del file e suggerire una classificazione.<\/p>\n<h3>Script di Classificazione Automatica<\/h3>\n<p><code>#!\/usr\/bin\/env python3<br \/>\"\"\"Classifica e rinomina file usando LLM locale.\"\"\"<br \/>import ollama<br \/>import os<br \/>import json<br \/>from pathlib import Path<\/p>\n<p>def classifica_file(filename):<br \/>&nbsp;&nbsp;&nbsp;&nbsp;\"\"\"Chiede al modello di classificare un file dal nome.\"\"\"<br \/>&nbsp;&nbsp;&nbsp;&nbsp;prompt = f\"\"\"Dato il seguente nome file, restituisci SOLO un JSON valido con:<br \/>- \"categoria\": una tra [documenti, immagini, backup, log, configurazione, altro]<br \/>- \"nome_suggerito\": un nome pi\u00f9 descrittivo e pulito (snake_case, senza spazi)<\/p>\n<p>Nome file: {filename}<br \/>JSON:\"\"\"<\/p>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;response = ollama.chat(<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;model='llama3.1',<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;messages=[{'role': 'user', 'content': prompt}],<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;options={'temperature': 0.1}&nbsp;&nbsp;# Bassa creativit\u00e0 per output consistente<br \/>&nbsp;&nbsp;&nbsp;&nbsp;)<br \/>&nbsp;&nbsp;&nbsp;&nbsp;try:<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return json.loads(response['message']['content'])<br \/>&nbsp;&nbsp;&nbsp;&nbsp;except json.JSONDecodeError:<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return {'categoria': 'altro', 'nome_suggerito': filename}<\/p>\n<p>def organizza_cartella(directory):<br \/>&nbsp;&nbsp;&nbsp;&nbsp;\"\"\"Scansiona una cartella e organizza i file.\"\"\"<br \/>&nbsp;&nbsp;&nbsp;&nbsp;base = Path(directory)<br \/>&nbsp;&nbsp;&nbsp;&nbsp;for f in base.iterdir():<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if f.is_file():<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;info = classifica_file(f.name)<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dest_dir = base \/ info['categoria']<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dest_dir.mkdir(exist_ok=True)<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;new_name = info['nome_suggerito'] + f.suffix<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print(f\"  {f.name} \u2192 {info['categoria']}\/{new_name}\")<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# Decommentare per eseguire davvero lo spostamento:<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# f.rename(dest_dir \/ new_name)<\/code><\/p>\n<p>Un consiglio: all&#8217;inizio non funzionava bene perch\u00e9 il modello restituiva JSON con formattazione extra o commenti. Abbassare la <em>temperature<\/em> a 0.1 e specificare chiaramente &#8220;SOLO un JSON valido&#8221; nel prompt ha risolto il problema al 90%.<\/p>\n<h2>Script 3: Generazione Automatica di Documentazione<\/h2>\n<p>Documentare le configurazioni \u00e8 fondamentale ma noioso. Ho creato uno script che prende un file di configurazione (Nginx, Apache, firewall) e genera automaticamente una documentazione leggibile.<\/p>\n<h3>Documentazione da File di Configurazione<\/h3>\n<p><code>#!\/usr\/bin\/env python3<br \/>\"\"\"Genera documentazione da file di configurazione.\"\"\"<br \/>import ollama<br \/>from pathlib import Path<br \/>import sys<\/p>\n<p>def documenta_config(filepath):<br \/>&nbsp;&nbsp;&nbsp;&nbsp;config = Path(filepath).read_text()<br \/>&nbsp;&nbsp;&nbsp;&nbsp;prompt = f\"\"\"Sei un sysadmin senior. Analizza questa configurazione e genera<br \/>documentazione in Markdown italiano con:<br \/>- Descrizione generale dello scopo del file<br \/>- Spiegazione di ogni sezione\/blocco importante<br \/>- Eventuali problemi di sicurezza o performance<br \/>- Suggerimenti di miglioramento<\/p>\n<p>File: {filepath}<br \/>Contenuto:<br \/>{config}\"\"\"<\/p>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;response = ollama.chat(<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;model='llama3.1',<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;messages=[{'role': 'user', 'content': prompt}]<br \/>&nbsp;&nbsp;&nbsp;&nbsp;)<br \/>&nbsp;&nbsp;&nbsp;&nbsp;# Salva la documentazione generata<br \/>&nbsp;&nbsp;&nbsp;&nbsp;doc_path = Path(filepath).with_suffix('.md')<br \/>&nbsp;&nbsp;&nbsp;&nbsp;doc_path.write_text(response['message']['content'])<br \/>&nbsp;&nbsp;&nbsp;&nbsp;print(f\"Documentazione salvata in: {doc_path}\")<\/p>\n<p>if __name__ == '__main__':<br \/>&nbsp;&nbsp;&nbsp;&nbsp;documenta_config(sys.argv[1])<\/code><\/p>\n<p>Questo mi \u00e8 stato utilissimo quando ho dovuto documentare le configurazioni dei <a href=\"https:\/\/darioiannascoli.it\/blog\/http3-quic-plesk-nginx\/\">virtual host Nginx con HTTP\/3<\/a> che avevo configurato su diversi server Plesk.<\/p>\n<h2>Script 4: Automazione Bash con AI per Task di Sistema<\/h2>\n<p>Non tutto deve essere in Python. Per task pi\u00f9 leggeri, uso direttamente <strong>curl verso l&#8217;API locale di Ollama<\/strong> da script Bash. Ecco un esempio che uso per generare un riassunto giornaliero delle attivit\u00e0 del server:<\/p>\n<p><code>#!\/bin\/bash<br \/># Report giornaliero server generato con AI locale<br \/>REPORT_DATE=$(date +%Y-%m-%d)<br \/>OUTPUT=\"\/var\/reports\/daily_${REPORT_DATE}.txt\"<\/p>\n<p># Raccogliamo le informazioni<br \/>DISK_USAGE=$(df -h | head -10)<br \/>MEMORY=$(free -h)<br \/>FAILED_LOGINS=$(journalctl --since \"24 hours ago\" | grep -i \"failed\" | tail -20)<br \/>TOP_PROCESSES=$(ps aux --sort=-%mem | head -10)<\/p>\n<p>PROMPT=\"Genera un report giornaliero conciso in italiano per il sysadmin basandoti su questi dati del server:nnDISCO:n${DISK_USAGE}nnMEMORIA:n${MEMORY}nnLOGIN FALLITI (ultime 24h):n${FAILED_LOGINS}nnPROCESSI TOP MEMORIA:n${TOP_PROCESSES}nnEvidenzia criticit\u00e0 e azioni consigliate.\"<\/p>\n<p>curl -s http:\/\/localhost:11434\/api\/generate <br \/>&nbsp;&nbsp;-d \"{\"model\": \"llama3.1\", \"prompt\": \"${PROMPT}\", \"stream\": false}\" <br \/>&nbsp;&nbsp;| python3 -c \"import sys,json; print(json.load(sys.stdin)['response'])\" <br \/>&nbsp;&nbsp;&gt; \"${OUTPUT}\"<\/p>\n<p>echo \"Report salvato in ${OUTPUT}\"<\/code><\/p>\n<p>Inserisco questo script in un <strong>cron job<\/strong> che gira ogni mattina alle 7:00, cos\u00ec quando apro il PC trovo gi\u00e0 il report pronto.<\/p>\n<h2>Workflow Avanzato: Pipeline di Automazione Completa<\/h2>\n<p>Il vero potere emerge quando <strong>concateno pi\u00f9 script in una pipeline<\/strong>. Ecco il workflow che uso per la gestione quotidiana dei server:<\/p>\n<ol>\n<li><strong>Ore 6:00<\/strong> \u2013 Cron esegue lo script di analisi log su auth.log, mail.log ed error.log.<\/li>\n<li><strong>Ore 6:30<\/strong> \u2013 Lo script di report giornaliero genera il riassunto aggregato.<\/li>\n<li><strong>Ore 7:00<\/strong> \u2013 Un ulteriore script AI analizza il report e, se trova criticit\u00e0, mi invia una notifica via webhook su Telegram.<\/li>\n<li><strong>Su richiesta<\/strong> \u2013 Uso lo script di documentazione ogni volta che modifico una configurazione.<\/li>\n<\/ol>\n<p>La notifica Telegram \u00e8 semplicissima:<\/p>\n<p><code>#!\/bin\/bash<br \/>REPORT=$(cat \/var\/reports\/daily_$(date +%Y-%m-%d).txt)<br \/>TELEGRAM_TOKEN=\"il_tuo_token\"<br \/>CHAT_ID=\"il_tuo_chat_id\"<\/p>\n<p># Chiediamo all'AI se ci sono criticit\u00e0<br \/>CHECK=$(curl -s http:\/\/localhost:11434\/api\/generate <br \/>&nbsp;&nbsp;-d \"{\"model\": \"llama3.1\", \"prompt\": \"Rispondi SOLO con SI o NO: ci sono criticit\u00e0 urgenti in questo report?n${REPORT}\", \"stream\": false}\" <br \/>&nbsp;&nbsp;| python3 -c \"import sys,json; print(json.load(sys.stdin)['response'])\")<\/p>\n<p>if echo \"$CHECK\" | grep -qi \"SI\"; then<br \/>&nbsp;&nbsp;curl -s -X POST \"https:\/\/api.telegram.org\/bot${TELEGRAM_TOKEN}\/sendMessage\" <br \/>&nbsp;&nbsp;&nbsp;&nbsp;-d chat_id=\"${CHAT_ID}\" <br \/>&nbsp;&nbsp;&nbsp;&nbsp;-d text=\"\u26a0\ufe0f CRITICIT\u00c0 SERVER: ${REPORT:0:500}\"<br \/>fi<\/code><\/p>\n<h2>Consigli Pratici per Prompt Efficaci nell&#8217;Automazione<\/h2>\n<p>Dopo mesi di utilizzo, ho raccolto alcune regole d&#8217;oro per i <strong>prompt nell&#8217;automazione con LLM open source<\/strong>:<\/p>\n<ul>\n<li><strong>Sii specifico sul formato di output<\/strong>: se vuoi JSON, scrivi &#8220;Rispondi SOLO con JSON valido&#8221;. Se vuoi una lista, specifica il formato esatto.<\/li>\n<li><strong>Usa temperature basse<\/strong> (0.1-0.3) per task di analisi e classificazione, dove serve consistenza.<\/li>\n<li><strong>Limita il contesto<\/strong>: non passare file da 10.000 righe. Spezzali in chunk gestibili.<\/li>\n<li><strong>Definisci un ruolo<\/strong>: &#8220;Sei un sysadmin esperto&#8221; aiuta il modello a calibrare il registro e la profondit\u00e0 tecnica.<\/li>\n<li><strong>Testa con dry-run<\/strong>: prima di far rinominare o spostare file, stampa le operazioni senza eseguirle.<\/li>\n<\/ul>\n<h2>Scelta del Modello: Quale LLM Open Source per Quale Task<\/h2>\n<p>Non tutti i modelli sono uguali per l&#8217;automazione. Ecco cosa ho osservato nella mia esperienza:<\/p>\n<ul>\n<li><strong>Llama 3.1 8B<\/strong>: il miglior tuttofare. Eccellente per analisi log, documentazione, classificazione. Richiede circa 5-6 GB di RAM.<\/li>\n<li><strong>Qwen2.5 7B<\/strong>: ottimo per generazione di codice e output strutturato (JSON). Molto preciso con le istruzioni di formato.<\/li>\n<li><strong>Phi-3 Mini 3.8B<\/strong>: perfetto se avete hardware limitato. Pi\u00f9 veloce ma meno preciso sui task complessi.<\/li>\n<li><strong>Mistral 7B<\/strong>: buone performance generali, particolarmente forte nella comprensione del contesto lungo.<\/li>\n<li><strong>Codellama \/ DeepSeek Coder<\/strong>: se il task principale \u00e8 generare o analizzare codice, questi modelli specializzati sono la scelta migliore.<\/li>\n<\/ul>\n<h2>Sicurezza e Best Practice<\/h2>\n<p>Automatizzare con l&#8217;AI locale non significa abbassare la guardia. Ecco le <strong>best practice di sicurezza<\/strong> che seguo sempre:<\/p>\n<ul>\n<li>L&#8217;API di Ollama di default ascolta solo su <em>localhost:11434<\/em>. Non esponetela su interfacce pubbliche senza autenticazione.<\/li>\n<li>Non date mai agli script permessi di root se non strettamente necessario.<\/li>\n<li>Validate sempre l&#8217;output dell&#8217;AI prima di eseguire operazioni distruttive (rinomina, cancellazione, modifica configurazioni).<\/li>\n<li>Mantenete i log delle operazioni automatizzate per audit.<\/li>\n<li>Se lavorate con dati particolarmente sensibili, considerate la <a href=\"https:\/\/darioiannascoli.it\/blog\/sicurezza-rete-wifi-casa-router-dns-vlan\/\">segmentazione della rete<\/a> per isolare la macchina che esegue l&#8217;AI.<\/li>\n<\/ul>\n<h2>FAQ<\/h2>\n<h3>Quanta RAM serve per far girare gli script di automazione con LLM locale?<\/h3>\n<p>Per un modello 7-8B parametri come Llama 3.1 servono almeno <strong>8 GB di RAM liberi<\/strong>, ma consiglio 16 GB totali per lavorare comodamente. Modelli pi\u00f9 piccoli come Phi-3 Mini girano anche con 4-5 GB liberi. La GPU non \u00e8 strettamente necessaria ma accelera notevolmente l&#8217;inferenza.<\/p>\n<h3>Posso usare questi script su Windows oltre che su Linux?<\/h3>\n<p>S\u00ec, gli script Python funzionano identicamente su Windows, macOS e Linux. Per gli script Bash, su Windows potete usare <strong>WSL2<\/strong> (Windows Subsystem for Linux) oppure riscriverli in PowerShell. Ollama \u00e8 disponibile per tutte le piattaforme principali.<\/p>\n<h3>L&#8217;output dell&#8217;AI locale \u00e8 affidabile per l&#8217;automazione in produzione?<\/h3>\n<p>Dipende dal task. Per <strong>analisi e classificazione<\/strong> (dove l&#8217;AI suggerisce e un umano valida) \u00e8 estremamente utile. Per operazioni distruttive automatiche (cancellazione file, modifica configurazioni) consiglio sempre un passaggio di validazione umana o almeno un dry-run. Il modello pu\u00f2 sbagliare, soprattutto con input ambigui.<\/p>\n<h3>Quali alternative a Ollama esistono per eseguire LLM in locale?<\/h3>\n<p>Le alternative principali sono <strong>LM Studio<\/strong> (interfaccia grafica, ottimo per principianti), <strong>llama.cpp<\/strong> (riga di comando puro, massima performance), <strong>LocalAI<\/strong> (compatibile con API OpenAI) e <strong>GPT4All<\/strong>. Io preferisco Ollama per la semplicit\u00e0 di gestione dei modelli e l&#8217;API REST integrata che si presta perfettamente all&#8217;automazione via script.<\/p>\n<h3>Posso automatizzare anche task legati a WordPress con questo approccio?<\/h3>\n<p>Assolutamente s\u00ec. Ad esempio uso un approccio simile per <strong>generare meta description<\/strong>, analizzare i log di errore di WordPress, o classificare commenti spam. Se gestite WordPress su Plesk, gli script di analisi log si integrano perfettamente con i log di accesso del web server. Per la sicurezza di WordPress vi rimando alla mia <a href=\"https:\/\/darioiannascoli.it\/blog\/sicurezza-wordpress-brute-force\/\">guida sulla protezione da attacchi brute force<\/a>.<\/p>\n<h2>Conclusione<\/h2>\n<p><strong>Automatizzare le attivit\u00e0 ripetitive con l&#8217;AI locale<\/strong> \u00e8 una delle scelte pi\u00f9 produttive che ho fatto negli ultimi anni. Con Ollama e modelli LLM open source come Llama 3.1 o Qwen2.5, ho costruito un ecosistema di script che mi fa risparmiare ore ogni settimana, mantenendo il pieno controllo sui miei dati e senza costi ricorrenti per API cloud.<\/p>\n<p>Il bello di questo approccio \u00e8 che \u00e8 <strong>modulare e incrementale<\/strong>: potete partire da un singolo script (magari quello per l&#8217;analisi dei log) e aggiungere gradualmente altri workflow man mano che prendete confidenza. Non serve essere sviluppatori esperti \u2013 i prompt fanno il grosso del lavoro, e Python con la libreria Ollama rende tutto estremamente accessibile.<\/p>\n<p>Se avete domande, volete condividere i vostri script di automazione con AI locale, o avete trovato workflow ancora pi\u00f9 efficienti, <strong>scrivete nei commenti<\/strong>: sono sempre curioso di scoprire come altri professionisti IT sfruttano queste tecnologie nel lavoro quotidiano.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Scopri come automatizzo le attivit\u00e0 ripetitive sul PC con LLM open source in locale: script Python, Bash e workflow pratici testati sul campo.<\/p>\n","protected":false},"author":1,"featured_media":943,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_seopress_robots_primary_cat":"","_seopress_titles_title":"Automatizzare Attivit\u00e0 Ripetitive con AI Locale e LLM Open Source","_seopress_titles_desc":"Scopri come automatizzare le attivit\u00e0 ripetitive sul PC con LLM open source in locale: script Python, workflow pratici con Ollama. Guida completa!","_seopress_robots_index":"","footnotes":""},"categories":[128],"tags":[184,186,185,173,187,188],"class_list":["post-942","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-a-i","tag-ai-locale","tag-automazione-script","tag-llm-open-source","tag-ollama","tag-python-automazione","tag-workflow-ai"],"_links":{"self":[{"href":"https:\/\/darioiannascoli.it\/blog\/wp-json\/wp\/v2\/posts\/942","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/darioiannascoli.it\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/darioiannascoli.it\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/darioiannascoli.it\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/darioiannascoli.it\/blog\/wp-json\/wp\/v2\/comments?post=942"}],"version-history":[{"count":0,"href":"https:\/\/darioiannascoli.it\/blog\/wp-json\/wp\/v2\/posts\/942\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/darioiannascoli.it\/blog\/wp-json\/wp\/v2\/media\/943"}],"wp:attachment":[{"href":"https:\/\/darioiannascoli.it\/blog\/wp-json\/wp\/v2\/media?parent=942"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/darioiannascoli.it\/blog\/wp-json\/wp\/v2\/categories?post=942"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/darioiannascoli.it\/blog\/wp-json\/wp\/v2\/tags?post=942"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}