La prima volta che ho chiesto a un modello gratuito di scrivermi una funzione per validare un modulo, la risposta è stata impeccabile… finché non l’ho eseguita con un campo vuoto e è saltato tutto. Il codice compilava, aveva una struttura pulita e i commenti erano perfetti. Ma falliva nel caso più ovvio. Quell’esperienza riassume abbastanza bene ciò che puoi aspettarti dagli LLM gratuiti per programmare: sono un aiuto enorme se sai come usarli, e una fonte di frustrazione se deleghi senza verificare.
Questa guida è pensata per chi inizia. Non elencherò i dieci migliori modelli in ordine alfabetico né ti prometterò che programmerai senza saper programmare. Vedremo quali strumenti gratuiti esistono, dove sono i loro limiti reali e come sfruttarli senza incappare in errori assurdi.
Cosa puoi aspettarti da un LLM gratuito (e cosa no)
Prima di toccare qualsiasi strumento, conviene avere chiaro il terreno. Un LLM non è un compilatore né un linter. È un generatore di testo che ha visto milioni di righe di codice e produce sequenze che statisticamente assomigliano a codice corretto. Questo significa che:
- Funziona bene per: generare template ripetitivi, spiegare messaggi di errore, tradurre codice tra linguaggi, scrivere test di base, redigere documentazione o proporre alternative di struttura.
- Non funziona bene per: garantire che il codice compili, conoscere la tua base di codice privata (nei piani gratuiti quasi mai c’è il contesto completo del repository), risolvere problemi di prestazioni in sistemi grandi o ragionare su dipendenze esotiche.
- Non devi mai dare per scontato: che le librerie che menziona esistano, che le versioni siano attuali o che le API che cita non siano cambiate. I modelli allucinano nomi di funzioni con una sicurezza preoccupante.
Secondo la documentazione ufficiale di diversi fornitori, i piani gratuiti tendono a limitare il numero di messaggi per finestra temporale, la lunghezza del contesto e, in alcuni casi, l’accesso ai modelli più recenti. Questo non li rende inutili; fa sì che tu debba scegliere bene per cosa li usi.
Opzioni gratuite che vale la pena provare
Chat web con modelli generalisti
Quasi tutti i grandi fornitori offrono una versione gratuita del loro chatbot con capacità di codice. La differenza pratica tra loro sta in tre cose: quanti messaggi puoi inviare prima che ti blocchino, se accettano di incollare file e quanto bene gestiscono linguaggi meno popolari. Per HTML, CSS, JavaScript e Python, chiunque va bene. Se lavori con COBOL, Fortran o qualche DSL interno, la qualità crolla in tutti.
Un trucco che risparmia frustrazione: non aprire una nuova chat per ogni dubbio. Mantieni una conversazione per progetto e incolla il contesto rilevante all’inizio (struttura dei file, versione del linguaggio, framework). I modelli gratuiti perdono il filo facilmente quando cambi argomento, e si portano dietro supposizioni dal messaggio precedente.
Autocompletamento nell’editor
Qui ci sono più sfumature di quanto sembri. Le estensioni di autocompletamento con IA hanno piani gratuiti, ma normalmente con una quota mensile di suggerimenti. Per un principiante che scrive 30 righe al giorno, quella quota è più che sufficiente. Per chi passa sei ore a programmare, si esaurisce in un pomeriggio.
La mia raccomandazione pratica: installane una, usala per una settimana con il contatore dei suggerimenti a vista e decidi dopo se vale la pena. Molte persone scoprono che l’autocompletamento le distrae più di quanto le aiuti quando stanno imparando, perché accettano suggerimenti senza leggerli.
Modelli eseguiti in locale
Questa è l’opzione meno menzionata e quella che potrebbe interessarti di più se hai la privacy come priorità o una connessione instabile. Strumenti come Ollama o LM Studio permettono di scaricare modelli aperti ed eseguirli sulla tua macchina senza costi per uso. Il rovescio della medaglia è chiaro: serve hardware. Un modello da 7B parametri gira su un portatile con 16 GB di RAM, ma la qualità delle sue risposte sul codice è diversi gradini sotto i modelli grandi nel cloud.
Un caso concreto che ho visto fallire: chiedere a un piccolo modello locale di generare una query SQL con un JOIN di tre tabelle e un GROUP BY. Il risultato aveva la sintassi corretta e la logica sbagliata. Con modelli grandi nel cloud lo stesso prompt di solito indovina. Non è magia, è dimensione e dati di addestramento.
Un flusso di lavoro che evita spaventi
Ciò che separa chi sfrutta gli LLM gratuiti da chi passa la giornata a fare debug di spazzatura è il processo. Questo è quello che uso e che puoi adattare:
- Descrivi il problema prima di chiedere codice. Invece di «scrivimi una funzione che ordini questo», spiega quali dati hai, quali restrizioni ci sono e cosa hai provato. La qualità della risposta sale moltissimo.
- Chiedi una spiegazione prima dell’implementazione. Se il modello ti spiega l’approccio e tu lo capisci, il codice successivo sarà più facile da rivedere. Se non capisci la spiegazione, non usare il codice.
- Chiedi il codice a piccoli pezzi. Una funzione, un test, un blocco di configurazione. I blocchi grandi nascondono errori che non vedi finché non esegui.
- Esegui sempre in locale. Non ci sono eccezioni. Anche se il codice sembra banale, provalo con casi limite: vuoto, nullo, numero negativo, stringa molto lunga.
- Chiedi delle versioni. «Questa API esiste nella versione 3.2 di questa libreria?» è una domanda che risparmia mezz’ora di ricerca nella documentazione.
Un esempio di errore comune che si vede solo con la pratica
Quando chiedi a un LLM di generare codice per leggere un file CSV, quasi sempre propone una soluzione che carica tutto il file in memoria. Per un file di prova da 100 righe funziona perfettamente. Per il CSV da 2 GB che hai in produzione, la tua macchina esaurisce la memoria e il processo muore. Il modello non ti avvisa perché nel suo addestramento la maggior parte degli esempi sono piccoli. Se gli chiedi esplicitamente della lettura in streaming o della dimensione massima del file, ti dà una soluzione migliore. La lezione: indica il contesto di produzione nel prompt, non solo il problema astratto.
Dove sono i limiti veri
Ci sono attività in cui un LLM gratuito, per quanto buono, non ti servirà. Riconoscerle ti fa risparmiare tempo:
- Fare debug di codice che non gli incolli. Se l’errore dipende da un’interazione tra tre file e gliene mostri solo uno, sta indovinando.
- Refactoring di un intero progetto. I piani gratuiti non hanno il contesto completo del repository. Ti daranno patch locali che possono rompere altre parti.
- Sicurezza. Un modello può generare codice con vulnerabilità di injection senza avvisarlo. Se il codice gestirà dati degli utenti, rivedilo con strumenti specifici o con qualcuno con esperienza.
- Linguaggi con ecosistemi piccoli. Quanto meno codice pubblico esiste di un linguaggio, peggiore sarà la risposta. Questo include linguaggi proprietari e framework interni aziendali.
C’è anche un limite di tipo pratico: le quote gratuite si esauriscono. Se sei nel mezzo di un problema e la chat ti blocca, hai bisogno di un’alternativa. Avere due strumenti configurati (uno principale e uno di riserva) evita che un limite di utilizzo ti fermi il lavoro.
Come scegliere senza perdere il pomeriggio
Non esiste un unico strumento migliore per tutti. Dipende dal tuo linguaggio, dal tuo hardware e da quanto codice scrivi al giorno. Il mio suggerimento è che provi tre profili diversi per una settimana ciascuno:
Una chat web generalista per dubbi concettuali e spiegazioni. Un’estensione di autocompletamento per il quotidiano. E un modello locale se il tuo computer lo permette, per test con dati sensibili. Con questa combinazione copri il 90% dei casi di un principiante senza pagare nulla.
E un avvertimento finale che vale più di qualsiasi elenco di strumenti: gli LLM gratuiti sono un acceleratore dell’apprendimento, non un sostituto. Se non sai leggere il codice che ti restituiscono, non puoi valutare se è corretto. L’investimento nel capire i fondamenti del linguaggio resta quello che ti dà più rendimento a lungo termine. Gli strumenti cambiano ogni pochi mesi; quello che impari, no.