Quando il codice non funziona come previsto, l'istinto è spesso quello di copiare l'intero file e chiedere a un assistente IA di risolverlo. Ma una richiesta generica raramente produce una correzione mirata e utile. Il segreto sta nella formulazione: fornire le informazioni giuste nel modo giusto trasforma un prompt vago in una richiesta che produce soluzioni concrete e comprensibili.
Perché il contesto è fondamentale
Un prompt per correggere il codice non è diverso da una qualsiasi altra richiesta efficace: il contesto determina la qualità della risposta. Senza informazioni sul linguaggio di programmazione, sulla versione delle librerie usate, sull'ambiente di esecuzione e sul comportamento osservato, l'assistente IA non può fornire una diagnosi precisa.
Quando si descrive un problema, è necessario specificare non solo cosa non funziona, ma anche cosa dovrebbe accadere e cosa accade effettivamente. Un errore generico come "non funziona" costringe l'assistente a indovinare, mentre una descrizione dettagliata come "la funzione restituisce null quando riceve un array vuoto, ma dovrebbe restituire un oggetto con valori predefiniti" permette un'analisi mirata.
Gli elementi essenziali di un prompt efficace
Ogni richiesta di correzione deve contenere quattro componenti chiave:
- Linguaggio e versione: specificare Python 3.9, JavaScript ES6, Java 11 o altro è cruciale perché la sintassi e le funzioni disponibili variano
- Il codice problematico: inserire il frammento più piccolo possibile che riproduce l'errore, non l'intero progetto
- Il comportamento atteso e osservato: descrivere cosa dovrebbe succedere e cosa succede invece, con eventuali messaggi di errore esatti
- Il formato della risposta desiderata: chiarire se si vuole il codice corretto, una spiegazione della causa, o entrambi
Aggiungere il tipo di errore (sintassi, logica, performance, sicurezza) aiuta l'assistente a focalizzarsi sul problema giusto.
Come strutturare la richiesta passo per passo
Una struttura collaudata inizia con una frase introduttiva che sintetizza il problema. Segue il codice in questione, preferibilmente racchiuso in blocchi di codice formattati. Poi viene la descrizione dell'errore con il messaggio esatto, se disponibile. Infine, una breve indicazione su cosa si aspetta di ricevere come risposta.
Esempio di struttura: "Sto usando Python 3.10. Questo codice dovrebbe filtrare una lista di dizionari, ma restituisce un errore KeyError su items vuoti. [CODICE]. L'errore è [MESSAGGIO]. Mi serve il codice corretto con una breve spiegazione della causa."
Questo approccio è molto più efficace di "Ho un errore, aiutami" perché fornisce tutte le informazioni necessarie in pochi secondi di lettura.
Cosa includere e cosa evitare
È utile includere: il traceback completo dell'errore, le dipendenze rilevanti, il sistema operativo se il problema è legato all'ambiente, esempi di input e output attesi. Se il codice fa parte di un framework specifico, nominarlo esplicitamente.
È inutile includere: commenti nel codice che ripetono quello che il codice fa, linee di importazione non correlate al problema, configurazioni di progetto irrilevanti. Meno rumore significa una risposta più veloce e accurata.
Evitare frasi vaghe come "non è ottimizzato" o "non mi piace il modo in cui è scritto" senza specificare quale aspetto migliorare. Essere precisi significa economizzare tempo.
Gestire le risposte incomplete o imprecise
Se la risposta non è soddisfacente, il follow-up è importante. Anziché richiedere genericamente una soluzione diversa, descrivere cosa non ha funzionato: "Ho provato questa soluzione ma genera un avviso di deprecazione", oppure "La correzione non tiene conto di stringhe vuote, che il mio codice deve gestire".
Un buon metodo è testare la soluzione proposta e riferire il risultato. Se l'assistente comprende che il fix non ha completamente risolto il problema, può affinarlo ulteriormente.
Esempi pratici di prompt ben formulati
Ecco un prompt efficace per un problema di logica: "Uso JavaScript ES2020. Questa funzione dovrebbe sommare i prezzi di un array di oggetti, ma restituisce NaN quando gli oggetti hanno proprietà mancanti. [CODICE]. Atteso: 150, Ottenuto: NaN. Mi serve il codice corretto e una spiegazione del perché fallisce."
Un altro esempio per un problema di sintassi: "Python 3.11. Tento di usare una list comprehension con condizione, ma ottengo SyntaxError su riga 5. [CODICE]. [MESSAGGIO DI ERRORE]. Qual è la sintassi corretta?"
Questi prompt funzionano perché sono specifici, contengono il codice reale, indicano l'errore e dicono cosa aspettarsi.
Tecniche avanzate per richieste complesse
Se il problema è complesso, dividere la richiesta in step: prima chiedere se l'approccio complessivo è corretto, poi affrontare il debugging del codice. Se il codice è lungo, fornire il frammento minimo che riproduce l'errore, non tutto il file.
Quando si tratta di performance, specificare il numero di elementi su cui il codice deve operare e il tempo di esecuzione atteso o limite massimo tollerato. Questo permette all'assistente di suggerire algoritmi appropriati.
Rileggi e verifica del prompt prima di inviare
Prima di inviare, rileggere il prompt da questa prospettiva: se ricevessi questa richiesta da qualcun altro, avresti tutte le informazioni per aiutare? Manca qualcosa che renderà la risposta incompleta o fuorviante? Meglio investire 30 secondi di verifica che ricevere una risposta che non risolve il problema.
Domande frequenti
È meglio copiare tutto il file o solo il frammento problematico?
Il frammento è sempre preferibile. Se l'assistente vede mille righe di codice, fatica a identificare il vero problema e la risposta diventa confusa. Fornire il frammento minimo, accompagnato da contesto sufficiente, produce risposte più precise e leggibili.
Devo spiegare cosa ho già provato?
Sì, se rilevante. Se hai già tentato una soluzione e hai fallito per una ragione specifica, dirlo evita che l'assistente suggerisca lo stesso approccio. Esempio: "Ho provato un try-catch ma l'errore avviene prima del blocco."
Che cosa fare se la correzione suggerita non funziona in produzione?
Testare la soluzione nel tuo ambiente specifico e riferire il risultato. Potrebbe dipendere da versioni diverse di librerie, configurazioni di sistema, o casi limite non considerati. Un follow-up dettagliato aiuta l'assistente a fornire una soluzione più robusta.
