Proudly debugging the system since 1981

Tag: ai

Coding agent con Ollama + Qwen3 + Continue – Parte 2

Alla fine l’ho provato, ottenendo sicuramente risultati migliori che i semplici completamenti di testo offerti da altri plugin.

Rispetto alla configurazione proposta ho utilizzato Qwen3:14b invece del MOE, anche per limiti di memoria a disposizione. Inoltre ho utilizzato Intellij IDEA in una macchina diversa da quella su cui risiede ollama. Cioè in realtà fisicamente sono la stessa ma una è una VM e l’altra è il ferro vero. Per rendere tutto piu divertente ho fatto passare le richiesta dal proxy di OpenWebUI, che è esposto su rete pubblica e che quindi richiede un token di autenticazione.

Rimaneggiata un po la configurazione:

Chiedo all’agente di generarmi una nuova semplice applicazione Spring Boot.

E lui parte a generarmi tutto perfettamente integrato con la IDE e scrivendo direttamente i file.

Dopodiché chiedo di cambiare il sistema di build da Maven a Gradle e di aggiungermi Swagger.

E dopo un paio di altri prompt per sistemare le cose ecco online il backend di una applicazione avendo scritto solo prompt e accettato il risultato:

Si tratta ovviamente di una micro applicazione, senza business logic rilevante e senza, al momento una UI. Farò altre prove in contesti un po più sfidanti ma per ora sono comunque abbastanza impressionato.

Coding agent con Ollama + Qwen3 + Continue – Parte 1

Quanto segue e’ la traduzione di Build a LOCAL AI Coding Assistant: Qwen3 + Ollama + Continue.dev (Blazing Fast & Fully Private!) … non ho ancora provato il setup ma son molto curioso e lo faro’ a breve.

Volevo condividere il mio percorso nell’utilizzare diversi assistenti AI per la programmazione — da GitHub Copilot a Cursor e ora a Windsurf — e come infine ho trovato il punto ideale passando a una soluzione completamente locale, senza compromettere velocità o qualità 🔥.
Vediamo insieme come ci sono arrivato:

💡 L’evoluzione del mio stack AI per la programmazione

  1. GitHub Copilot : Buon inizio, ma contesto limitato e non molto profondo.
  2. Cursor : Un notevole balzo in termini di potenza e flessibilità, specialmente grazie a Cursor Composer.
  3. Windsurf : Wow, questa mi ha impressionato! La sua capacità di indiciare e comprendere le basi di codice è eccezionale. Non è necessario dargli a conoscere i file da analizzare — semplicemente sa . Dai un’occhiata a lukalibre.org — interamente costruito con Windsurf 🤯Ma… c’è sempre un problema.

🛑 Il problema: Costo, velocità e limiti 😤

  • Windsurf costa 20 dollari al mese — prezzo equo per ciò che offre.
  • MA… ti limita a 500 crediti al mese, e la modalità di pensiero di Claude 3.7 utilizza 1,5 volte per ogni chiamata .
  • Anche pagando, a volte è lento ⏳.
  • Stessa storia con Cursor e Copilot.
  • E non iniziamo nemmeno a parlare delle preoccupazioni per la privacy dei dati — se la tua azienda non permette strumenti esterni, sei bloccato.

🚨 L’ingresso: Ollama + Continue.dev

Avevo pensato:

“Cosa succederebbe se potessi eseguire modelli potenti in locale?”
Così ho provato:

  • Ollama : Ospita LLM in locale (idea fantastica).
  • Continue.dev : Offre un’esperienza simile a quella di Cursor/Windsurf.

MA…

  • Modelli come Llama3 o Mistral non erano proprio all’altezza.
  • Sono pesanti e lenti sui laptop 💻➡️🐢

✨ Poi arrivò Qwen3: Alert di cambiamento di gioco 🎯💥

Ecco dove le cose si fecero veramente interessanti.
Qwen3 (soprattutto la variante 30b-a3b) mi ha lasciato a bocca aperta!

  • Utilizza distillazione + Mixture-of-Experts (MoE) → inferenza estremamente veloce.
  • Nonostante sia un modello da 30B, vengono utilizzati solo 3B di parametri per ogni prompt 🚀.
  • Le prestazioni? Strabiliantemente vicine a quelle di giganti come Claude 3.7 Sonnet e GPT-4o.
  • Funziona senza problemi su un laptop decente — testato su: i7 + RTX 2070Mac M4 Max

E il meglio di tutto: Nessuna perdita di dati, nessuna chiave API, nessuna attesa.

📌 Passo passo: Come impostare Qwen3 localmente con Continue.dev (Mac & Windows) 🖥️🛠️

Facciamolo insieme:

✅ Passo 1: Installare Ollama

Mac :

brew install ollama

Windows : Scaricare da: ollama.com/download

Avviare Ollama dopo l’installazione.

✅ Passo 2: Scaricare Qwen3 e modello di embedding

Nel terminale o in PowerShell:

ollama pull qwen3:30b-a3b

ollama pull nomic-embed-text

Perché questi modelli?

  • qwen3:30b-a3b: Il cervello principale AI 🧠 (gestisce chat, completamento automatico, modifiche).
  • nomic-embed-text: Aiuta l’AI a comprendere l’intera base di codice (spiegato di seguito ⬇️).

✅ Passo 3: Installare l’estensione Continue.dev in VS Code

  1. Apri VS Code.
  2. Vai alle Estensioni (icona 🔍 nel lato sinistro).
  3. Cerca “Continue”.
  4. Clicca su Installa.

✅ Passo 4: Configurare Continue per utilizzare Qwen3

  1. In VS Code, vai alla scheda Continue (icona 🧠).
  2. Clicca sull’icona ingranaggio ⚙️ > Apri Configurazione.
  3. Sostituisci la configurazione predefinita con questa:
name: Local Assistant  
version: 1.0.0
schema: v1
models:
- name: Qwen3-30b
provider: ollama
model: qwen3:30b-a3b
roles:
- chat
- edit
- autocomplete
- apply
- summarize
- name: embeddingsProvider
provider: ollama
model: nomic-embed-text
roles:
- embed
context:
- provider: code
- provider: docs
- provider: diff
- provider: terminal
- provider: problems
- provider: folder
- provider: codebase

🔍 Cosa fa ogni parte del YAML

models:

Definisce i “cervelli” del tuo assistente.

  • Qwen3–30b
  • embeddingsProvider

context:

Dichiara a cosa può accedere l’AI quando risolve problemi:

  • codice: File corrente.
  • docs: Documentazione (come i README).
  • diff: Cambiamenti Git.
  • terminal: Output del terminale (per il debug).
  • problems: Errori del linter.
  • folder: Cartella intera del progetto.
  • codebase: Indice completo della base di codice (grazie al modello di embedding!).

Senza questo, il tuo assistente vedrebbe solo il file che stai modificando — come cercare di riparare un motore di un’auto senza vedere l’intera auto 🚗.

✅ Passo 5: Finito! 🎉

Ora hai un assistente AI per la programmazione locale che è:

  • 🔒 Privato (nessuna perdita di dati)
  • ⚡ Veloce (eseguito sul tuo computer)
  • 💪 Potente (si confronta con GPT-4o/Claude 3.7)
  • 🌐 Pronto per l’offline

📌 Pensieri finali

Se sei stanco di pagare per token limitati, risposte lente o vuoi il pieno controllo sul tuo codice e i tuoi dati, prova Qwen3 + Ollama + Continue.dev.
È stato un cambiamento di gioco per me 🧠✨, e spero che ti aiuti anche tu.

N8n e un caso d’uso

N8n è un bel progettino per realizzare workflow automatizzati, mettendoci dentro un po di AI.

Come da esperienze precedenti ho provato a farlo funzionare utilizzando il meno possibile servizi su cloud, più che altro per essere consapevole di come funziona ogni passaggio.

Per cui, primo passo installo N8N con una immagine che gira in locale su docker. Niente di difficile. Le istruzioni sul repository sono facili. N8N parte, richiede una mail di registrazione per sbloccare un po’ di funzionalità in modo gratuito. Va bene, anche se non ho verificato bene la differenza tra con e senza registrazione.

A questo punto mi pongo il problema di cosa fargli fare. Ce ne sarebbero mille ma di cose ma provo ad implementare una trascrizione di audio mediante telegram. L’obbiettivo è avere facilmente la trascrizione di messaggio audio provenienti da varie piattaforme di messaggistica, non necessariamente solo telegram.

Continua a leggere

PhotoPrism

Continuo la serie di segnalazioni di software con PhotoPrism. La ricerca di un software migliore per gestire il mio personale archivio di foto e’ nata dalla consapevolezza delle capacita’ dell’ AI di categorizzare le foto dopo un meetup di Codemotion.

Con tutte le evoluzioni avvenute negli ultimi 20 anni e’ davvero riduttivo avere un archivio di foto il cui unico indice e’ la data in cui la foto e’ stata scattata.

PhotoPrism, in modo assolutamente semplice permette di aggiungere il luogo (dati EXIF), la persona nella foto e alcuni tag basati sul contenuto delle foto.

La categorizzazione AI delle foto incide sugli ultimi due aspetti, riconoscimento dei volti, e riconoscimento delle situazioni e dei contenuti delle foto.

Il primo e’ ragionevolmente efficace, il secondo qualche spazio di miglioramento sicuramente ce lo ha ma già da un buon contributo.

L’istanza che ho messo in piedi gira sul Raspberry Pi 5, insieme a molte altre cose tra cui anche il recentemente citato Jellyfin, e si e’ scansionato 32000 foto e 1000 video in meno di 24 ore utilizzando solo la potenza di calcolo del Raspberry, senza utilizzare servizi esterni a supporto ma solo il modello locale di AI installato con PhotoPrism. Unica accortezza: dargli un po’ swap su disco (2-4 giga), essendo il mio con solo 4 giga di ram. Nei modelli con 8 giga si può evitare.

Qualche riferimento:

P.S.: Come ho scoperto PhotoPrism? Ho chiesto a Gemma.

Second Me

Ho deciso di provare questo progetto di intelligenza artificiale, Second Me, perché va oltre la “semplice” RAG ma effettua un training effettivo sui contenuti forniti e volevo verificarne l’efficacia. Il RAG e’ interessante ma spesso poco efficace quando si tratta di fare compiti per i quali il modello originale non era particolarmente bravo o competente.

Second Me pero’, purtroppo, e’ ancora molto immaturo. Al momento c’è un evidente bug che impedisce di allenare un modello diverso da quello da 0.5B di parametri (https://github.com/mindverse/Second-Me/issues/256) cosa che produce un risultato veramente deludente. Ho provato ad aggirare il problema mettendo il modello da 3B nella cartella di quello da 0.5B, sembra finire ma poi non parte.

Riproverò quando il progetto sarà un po più maturo.

Informazioni potenzialmente utili per altri ricavate dalle prime prove:

La configurazione di default prevede l’embedding e il modello di supporto utilizzando le API di open-ai ma si può benissimo usare ollama in locale su una buona GPU. Io ho usato nomic-embed-text:latest per l’embedding e gemma3:latest per il supporto. In teoria poteva girare anche gemma3:12b sulla mia GPU ma usando embedding e supporto insieme si rallentava parecchio e ho preferito un modello più piccolo.

Usando Second Me su docker e Ollama sulla macchina fisica i parametri per le API sono:
API Key: ollama
API Endpoint: http://host.docker.internal:11434/v1
e ovviamente il modello scelto…

La preparazione dei dati, embedding e memorie e quant’altro avviene effettivamente sulla GPU (di fatto lo fa ollama…), mentre il training avviene sulla CPU per cui credo manchi qualche cosa…

Il tempo complessivo con un po’ di memorie (i post degli ultimo due anni sul blog… poca roba) complessità media e modello 0.5B stanno circa sull’ora, ora e mezza con una 3060.

Risultati… veramente brutti :D. Ma riproverò tra un paio di settimane.

Nuova versione di LLaMA ancora piu veloce

Sono molto affascinato da questo progetto. Spero che la IA esca presto da un utilizzo solo mediante API e in server remoti e misteriosi per arrivare ad essere disponibile sui dispositivi comuni. Il progetto LLaMA ci porta piu vicini a questo obbiettivo. La seguente chat e’ con Mistral 7B Q4 e LLaMA 0.7, eseguiti su un i7 13th gen con 16 GB di ram e nessuna accelerazione con GPU.

Annuncio : https://justine.lol/matmul/ – Repo: https://github.com/Mozilla-Ocho/llamafile

Usare la intelligenza artificiale in locale per rinominare le foto

Questa la devo provare:

https://hackaday.com/2023/12/29/using-local-ai-on-the-command-line-to-rename-images-and-more/

UPDATE: E infatti poi l’ho provata. Ho dovuto fare un po di aggiustamenti per utilizzare il tutto con windows e ho provato a modificare i prompt in italiano.

Le modifiche si limitano ai controlli sulla presenza dei llama-file e sui prompt.

Controllo presenza file:

if ! LLAVA=$(command -v ./llava-v1.5-7b-q4.llamafile.exe); then
  printf '%s\n' "llava-v1.5-7b-q4-main.llamafile: fatal error: update this script with the path of your llava llamafile" >&2
  printf '%s\n' "please download https://huggingface.co/jartine/mistral-7b.llamafile/blob/main/mistral-7b-instruct-v0.1-Q4_K_M.llamafile, rename to llava-v1.5-7b-q4.llamafile.exe, and put it in the same directory of this script" >&2
  abort
fi

if ! MISTRAL=$(command -v ./mistral-7b-instruct-v0.2.Q3_K_L.llamafile.exe); then
  printf '%s\n' "mistral-7b-instruct-v0.1-Q4_K_M-main.llamafile: fatal error: update this script with the path of your mistral llamafile" >&2
  printf '%s\n' "please download https://huggingface.co/jartine/Mistral-7B-Instruct-v0.2-llamafile/blob/main/mistral-7b-instruct-v0.2.Q3_K_L.llamafile, rename to mistral-7b-instruct-v0.2.Q3_K_L.llamafile.exe, and put it in the same directory of this script" >&2
  abort
fi

Prompt italiani:

isgood() {
  "$MISTRAL" \
      --temp 0  \
      --grammar 'root ::= "si" | "no"' \
      -p "[INST]Questo nome file '${1##*/}' è una descrizione comprensibile e corretta in lingua italiana?[/INST]" \
      --silent-prompt 2>/dev/null
}

pickname() {
  "$LLAVA" \
      --image "$1" --temp 0.3  \
      --grammar 'root ::= [a-z]+ (" " [a-z]+)+' -n 15 \
      -p '### User: Questa immagine contiene ...
### Assistant:' \
      --silent-prompt 2>/dev/null
}

Inoltre per mistral ho dovuto scegliere una versione di dimensione non superiore ai 4giga, per limitazioni proprie di windows.

Il comportamento in inglese è buono, mentre l’output in italiano non e’ molto utile e spesso capita qualche parola di spagnolo qua e la.

llamafile v0.6

Mi segno e segnalo questa release che ho trovato impressionate : https://github.com/Mozilla-Ocho/llamafile/releases

Si tratta di un sistema per rendere facilmente accessibili modelli di linguaggio e praticamente funziona su tutti i sistemi operativi (window, linux, mac, etc) sfruttando CPU anche ARM, GPU anche multiple, anche AMD.

Si scarica il modello. Su linux gli si da il permesso di esecuzione, su windows lo si rinomina in .exe e lo si avvia.

Ho scaricato il modello llava e funziona con prestazioni accettabili anche usando solo una CPU non nuovissima (intel i7 11 generazione).

© 2025 b0sh.net

Tema di Anders NorenSu ↑