Introduzione: il problema che vedo sempre

Molti developer oggi usano strumenti come ChatGPT o GPT-4 in modo apparentemente efficace. Scrivono prompt, ottengono codice, risolvono problemi.

Il punto è: stanno usando qualcosa che non comprendono realmente E questo, nel momento in cui costruisci sistemi, diventa un rischio serio.

Perché finché usi l’AI per generare una funzione, puoi permetterti errori. Quando la usi dentro un prodotto, non più. Questo modulo serve a colmare proprio quel gap.

Lezione 1 — Cosa succede davvero quando fai una richiesta all’AI

Partiamo da una scena molto semplice.

Scrivi:

“Crea una funzione Python che valida un indirizzo email”

Ottieni una risposta corretta. Funziona. Tutto bene.

Ma cosa è successo davvero?

Il modello non “sa” cosa sia una email nel senso umano. Non ha una rappresentazione logica come la tua. Ha visto milioni di esempi di codice e testo e ha imparato una cosa: “dato questo input, questo output è probabilmente corretto”

È un sistema probabilistico. Ogni parola (token) che genera è la più probabile rispetto a:

  • quello che hai scritto
  • quello che ha già generato

Non sta ragionando. Sta predicendo.


Esempio concreto (molto importante)

Prompt:

“Crea una funzione che verifica se un numero è primo”

Il modello produce codice corretto.

Ora cambiamo leggermente:

“Crea una funzione ottimizzata per numeri fino a 10 milioni”

Qui iniziano le differenze. Alcune risposte saranno buone, altre meno efficienti.

Perché?

Perché il modello non valuta realmente la complessità computazionale.
Sta generando qualcosa che “somiglia” a una soluzione plausibile.

Questo è il punto: l’AI produce plausibilità, non garanzia


Lezione 2 — Token, contesto e perché a volte “impazzisce”

Per usare bene l’AI devi capire tre concetti chiave: token, contesto, limite. Un token non è una parola, è un’unità di testo. Può essere una parola, una parte di parola, un simbolo. Quando scrivi un prompt, il modello non “vede” una frase: vede una sequenza di token.

Questo ha implicazioni pratiche enormi.


Caso reale

Scrivi un prompt lungo, pieno di dettagli, con codice, contesto, regole. Funziona perfettamente.

Poi aggiungi altro testo. All’improvviso la qualità cala. Non è magia. È contesto.

Il modello ha una “finestra di memoria”.
Se la superi o la saturi male, alcune informazioni vengono “dimenticate” o pesano meno.


Esempio pratico

Immagina di costruire un sistema AI per analizzare contratti.

Se carichi:

  • 3 documenti → risposta precisa
  • 30 documenti → risposta confusa

Non è perché l’AI peggiora.
È perché non stai gestendo il contesto correttamente.


 Qui nasce una competenza chiave: non basta dare informazioni, devi strutturarle


Lezione 3 — Bias e allucinazioni (la parte che i developer sottovalutano)

Qui entriamo in un punto critico.

Un modello AI può:

  • inventare funzioni
  • citare API inesistenti
  • costruire codice perfettamente plausibile… ma sbagliato

E lo fa con sicurezza.


Caso reale da produzione

Prompt:

“Usa questa libreria JavaScript per fare X”

Il modello risponde usando funzioni che non esistono davvero nella libreria.

Il codice è pulito, credibile, ma inutilizzabile.

Perché succede?

Perché il modello ha visto pattern simili e li ricombina.

Non verifica la realtà.
Non ha accesso diretto alla verità.

Implicazione per un developer

Se prendi output AI e lo usi senza verifica:

👉 stai delegando decisioni tecniche a un sistema non affidabile

Altro esempio (più sottile)

Chiedi:

“Qual è il modo migliore per autenticare utenti?”

Il modello può suggerire soluzioni valide… ma non adatte al tuo contesto.

Magari:

  • troppo complesse
  • non conformi a normative
  • non scalabili nel tuo sistema

 Qui emerge il punto chiave: l’AI non sbaglia sempre, ma non sa quando sbaglia


Lezione 4 — Prompt vs programmazione (la differenza che cambia tutto)

Molti dicono: “il prompt è come codice”. Non è vero. È una semplificazione pericolosa.

Quando scrivi codice:

  • hai controllo deterministico
  • stesso input → stesso output

Quando scrivi un prompt:

  • lavori con probabilità
  • stesso input → output leggermente diversi

Esempio pratico

Prompt:

“Scrivi una funzione per ordinare un array”

Puoi ottenere:

  • quicksort
  • mergesort
  • sort nativo

Tutti validi, ma diversi.

Cosa significa per te

Non stai programmando istruzioni. Stai guidando un comportamento. E questo cambia tutto.

Caso reale

Vuoi generare codice coerente in un team.

Se ogni developer scrive prompt “a caso”, ottieni:

  • stili diversi
  • logiche diverse
  • incoerenza

Serve progettazione anche nei prompt.

Lezione 5 — Il vero errore: trattare l’AI come una funzione

Questo è l’errore più diffuso. Molti sistemi vengono progettati così: input → AI → output

Sembra semplice, ma è fragile.


Esempio reale

Sistema che genera risposte clienti.

Funziona bene all’inizio.

Poi emergono problemi:

  • risposte incoerenti
  • errori su casi limite
  • mancanza di controllo

Perché?

Perché manca tutto ciò che sta intorno:

  • contesto
  • validazione
  • regole
  • fallback

Come cambia il modello mentale

Un sistema AI corretto è più simile a questo:

input → interpretazione → contesto → AI → validazione → output


Esempio concreto

Sistema email:

Un utente scrive:

“Vorrei sapere se posso annullare il contratto”

Un sistema banale risponde subito.

Un sistema ben progettato:

  • capisce il tipo di richiesta
  • recupera policy aziendali
  • genera risposta
  • verifica che non violi regole

Questo è AI development. Non il prompt.


Esercizio pratico guidato

Ora ti forzo a ragionare come developer evoluto.

Hai questo sistema: utente → AI → risposta

Non puoi aggiungere codice complesso.
Puoi solo progettare meglio.

Domanda:

Come lo migliori?


Risposta attesa (non unica, ma deve includere)

  • introduzione di contesto
  • definizione regole
  • controllo output
  • gestione errore

Mini test di verifica

Qui non mi interessa se “ricordi”. Mi interessa se hai capito.


Domanda 1

Se l’AI genera codice corretto ma inefficiente, il problema è:

A) del modello
B) del prompt
C) della mancanza di validazione
D) del linguaggio

Risposta: dipende, ma C è sempre coinvolta


Domanda 2

Perché due prompt identici possono dare output diversi?

 Risposta attesa: natura probabilistica del modello


Domanda 3 (fondamentale)

Spiega perché questo sistema è fragile:

input → AI → output

Se non menzioni almeno:

  • contesto
  • validazione
  • rischio

non hai ancora cambiato livello


…e per concludere

Se nel Modulo 1 hai cambiato prospettiva, qui hai acquisito una cosa ancora più importante:

consapevolezza tecnica dei limiti

Un developer che usa l’AI senza capirla è veloce.
Un developer che la capisce è pericolosamente efficace.

Nel prossimo modulo iniziamo a sporcarci le mani davvero:
prompt engineering fatto bene, non quello “da blog”.

E lì si vede subito chi ha capito e chi no.