Iterazione e debugging dei prompt
Costruirà un flusso di lavoro sistematico per testare e perfezionare i prompt, individuerà le modalità di errore e utilizzerà OpenAI Playground per iterare rapidamente prima di scrivere codice per la produzione.
Iterazione e debugging dei prompt è una lezione AI Engineering Academy gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento AI Engineering Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso AI Engineering Academy include 4 lezioni in totale.
Il prompting è una disciplina empirica
Un prompt engineering efficace non consiste nel trovare una formula magica: è un processo empirico e iterativo, più simile al debugging che alla scrittura. Si scrive un prompt, lo si esegue con input di test, si osservano i casi in cui fallisce, si formula un'ipotesi sul motivo del fallimento e si modifica il prompt per risolverlo. La sola intuizione non è affidabile: servono dati.
Molti sviluppatori commettono l'errore di testare il prompt su uno o due esempi preparati a mano, osservare buoni risultati e distribuirlo in produzione, per poi scoprire che il prompt fallisce nel 30% degli input reali. Un flusso di valutazione sistematico evita questo problema sottoponendo il prompt a esempi diversificati e rappresentativi prima della messa in produzione.
Creare prima un set di test
Prima di scrivere il prompt, crei un golden test set: una raccolta di 20-100 esempi rappresentativi di input abbinati all'output previsto o ai criteri di superamento. Questo set di test diventa il riferimento per valutare qualsiasi modifica al prompt.
Un buon set di test include: input tipici, casi limite (stringhe vuote, input molto lunghi, casi ambigui), input avversari progettati per mettere in difficoltà il prompt e input provenienti da diversi segmenti della popolazione di utenti. Più il set di test è diversificato, maggiore è la certezza che una modifica al prompt rappresenti un reale miglioramento anziché un overfitting sui pochi esempi inizialmente considerati.
Un semplice harness di valutazione
Scrivere un semplice script di valutazione richiede un'ora e fa risparmiare giorni di debugging dei problemi in produzione. Lo script esegue il prompt su ogni caso di test, confronta l'output con il risultato previsto e comunica la percentuale di superamento. È quindi possibile iterare sul prompt e verificare immediatamente se le modifiche hanno migliorato il punteggio complessivo.
import openai
client = openai.OpenAI()
# Golden test set: (input, expected_output)
test_cases = [
('The product is excellent and very fast.', 'Positive'),
('Arrived damaged and customer service ignored me.', 'Negative'),
('Delivery was on time.', 'Neutral'),
('Worst purchase of my life. Never again!', 'Negative'),
('Good value for the price.', 'Positive'),
]
def evaluate_prompt(system_prompt):
correct = 0
for text, expected in test_cases:
resp = client.chat.completions.create(
model='gpt-4o-mini',
messages=[
{'role': 'system', 'content': system_prompt},
{'role': 'user', 'content': text}
],
max_tokens=10
)
prediction = resp.choices[0].message.content.strip()
if expected.lower() in prediction.lower():
correct += 1
else:
print(f'FAIL: "{text}" -> got "{prediction}", expected "{expected}"')
return correct / len(test_cases)
score = evaluate_prompt('Classify sentiment as Positive, Negative, or Neutral. Reply with one word only.')
print(f'Score: {score:.0%}')Classificare le modalità di errore
Quando il prompt fallisce nei casi di test, raggruppi gli errori per tipo per individuare gli schemi ricorrenti. Tra le modalità di errore più comuni ci sono:
- Errori di formato: il modello produce la risposta corretta, ma nel formato sbagliato
- Errori di ambiguità: il modello interpreta l'attività in modo diverso da quello previsto
- Errori nei casi limite: il modello funziona con gli input tipici, ma fallisce con quelli insoliti
- Errori di allucinazione: il modello produce con sicurezza contenuti fattuali errati
- Ignorare le istruzioni: il modello segue parzialmente le istruzioni, ma non rispetta vincoli specifici
Ogni tipo di errore richiede una correzione diversa. Gli errori di formato richiedono istruzioni di output più esplicite; gli errori di ambiguità richiedono una definizione più chiara dell'attività o esempi.
OpenAI Playground per iterare rapidamente
OpenAI Playground (platform.openai.com/playground) è lo strumento più rapido per iterare sui prompt senza scrivere codice. Consente di passare da un modello all'altro, regolare i parametri con i cursori, salvare le versioni dei prompt e confrontare gli output affiancati.
Utilizzi Playground nella fase di esplorazione dello sviluppo dei prompt: provi formulazioni diverse, testi interattivamente i casi limite e sviluppi un'intuizione su ciò che funziona. Quando avrà trovato un prompt promettente, passi al codice con un harness di valutazione per convalidarlo sistematicamente sull'intero set di test prima della messa in produzione.
Gestione delle versioni dei prompt
I prompt sono codice. Devono essere gestiti con il controllo versione, revisionati e distribuiti con lo stesso rigore del codice dell'applicazione. L'approccio più semplice consiste nel salvare i template dei prompt come stringhe in un file di costanti del repository, così che le modifiche siano tracciate in git e richiedano una revisione del codice.
Gli approcci più avanzati includono il salvataggio dei prompt in un database dedicato alla gestione dei prompt (LangSmith, PromptLayer o una semplice tabella Supabase), l'assegnazione di tag alle versioni e l'esecuzione di test A/B tra versioni dei prompt in produzione. Questo è particolarmente importante quando più membri del team lavorano sugli stessi prompt o quando è necessario ripristinare una modifica che ha peggiorato la qualità in produzione.
# prompts/sentiment.py
# Version 2.1 - Added explicit tie-breaking rule for mixed reviews
SENTIMENT_V2_1 = '''You are a sentiment classification assistant.
Classify the customer review sentiment as exactly one of: Positive, Negative, or Neutral.
Rules:
- Positive: overall satisfaction, praise, or recommendation
- Negative: disappointment, complaint, or warning to others
- Neutral: factual statements without strong sentiment, or equal positive and negative content
- If the review contains both positive and negative elements, choose based on the DOMINANT tone
Respond with ONLY the single word classification. No explanation.'''
# Usage:
# from prompts.sentiment import SENTIMENT_V2_1Confrontare sistematicamente le varianti dei prompt
Quando ha due versioni concorrenti di un prompt, le esegua entrambe sull’intero set di test e confronti i punteggi. Anche un miglioramento del 5% nell’accuratezza di un sistema in produzione che gestisce migliaia di richieste al giorno giustifica lo sforzo della valutazione. Non scelga mai un prompt basandosi su uno o due esempi verificati manualmente: esegua sempre il confronto sull’intero set di test.
Per le metriche di qualità soggettive, in cui non esiste un’unica risposta corretta, come tono, utilità o creatività, può usare LLM-as-judge: chieda a un modello potente, come GPT-4o, di valutare quale delle due risposte soddisfa meglio i criteri di qualità. In questo modo la valutazione può andare oltre ciò che è possibile gestire con la revisione umana.
Debug degli output incoerenti
Per impostazione predefinita, gli output degli LLM non sono deterministici. Impostare temperature=0 rende gli output quasi deterministici (selezionando il token più probabile a ogni passaggio), una caratteristica essenziale per il debug perché consente di eseguire due volte lo stesso prompt e ottenere lo stesso output. Durante il debug, imposti sempre temperature su 0, così potrà determinare se una modifica al prompt ha causato il cambiamento dell’output o se si tratta semplicemente di una variazione casuale.
Dopo aver corretto il prompt, riattivi un certo livello di temperature in produzione se il caso d’uso beneficia della varietà, ad esempio nella scrittura creativa o nel brainstorming. Mantenga invece temperature a 0 per le attività di estrazione strutturata e classificazione, in cui desidera output coerenti e ripetibili.
import openai
client = openai.OpenAI()
# Deterministic mode for debugging
response = client.chat.completions.create(
model='gpt-4o-mini',
messages=[
{'role': 'system', 'content': 'Classify sentiment: Positive, Negative, or Neutral.'},
{'role': 'user', 'content': 'The product looks nice but broke after two days.'}
],
temperature=0, # deterministic
seed=42 # optional reproducibility seed
)
print(response.choices[0].message.content)Debug delle allucinazioni
Se il prompt produce fatti allucinati, aggiunga vincoli che rendano più difficile l’allucinazione. Tra le tecniche efficaci per contrastare le allucinazioni vi sono:
- Citare le fonti: «Risponda esclusivamente sulla base del contesto fornito. Se la risposta non è presente nel contesto, dica “Non lo so”.»
- Quantificare il livello di certezza: «Valuti la propria sicurezza su una scala da 1 a 5. Se è inferiore a 3, non risponda.»
- Passaggio di verifica: «Prima di rispondere, verifichi che ogni fatto che intende utilizzare sia presente nel documento fornito.»
Nessuna tecnica elimina completamente le allucinazioni, ma combinare il retrieval (RAG) con vincoli rigorosi nel prompt le riduce drasticamente nelle applicazioni ad alta intensità di conoscenza.
Lunghezza del prompt e posizione delle istruzioni
La ricerca ha dimostrato che gli LLM prestano maggiore attenzione alle istruzioni all’inizio e alla fine di un prompt rispetto a quelle collocate al centro. Questo fenomeno è chiamato problema del lost in the middle. Se ha un prompt lungo con istruzioni importanti sepolte nel mezzo e circondate dal contesto, il modello potrebbe non seguirle in modo affidabile.
Buona pratica: inserisca le istruzioni più importanti, come la definizione dell’attività e i vincoli critici, proprio all’inizio del system prompt e ribadisca i vincoli fondamentali alla fine. Per i documenti lunghi inseriti come contesto, collochi la domanda dell’utente dopo il documento anziché prima, poiché il modello attribuisce maggiore peso ai contenuti più recenti.
Dalla sperimentazione alla produzione
Il ciclo di sviluppo di un prompt comprende tre fasi:
- Sperimentazione: utilizzi il Playground per fare liberamente degli esperimenti. Si concentri sulla comprensione di ciò che funziona a livello concettuale, non sull’ottenimento di un output perfetto.
- Valutazione: crei un set di test e un harness di valutazione. Esegua i prompt candidati sull’intero set di test e misuri i tassi di superamento. Iteri finché non raggiunge la soglia di qualità.
- Produzione: sottoponga il prompt finale al controllo versione, aggiunga il monitoraggio per seguire le metriche di qualità in produzione e configuri avvisi per il peggioramento della qualità. Preveda iterazioni future quando cambiano le versioni del modello.
Saltare la fase di valutazione è la causa più comune delle regressioni nella qualità dei prompt in produzione. Il tempo investito in un set di test adeguato si ripaga ampiamente.
Verifica rapida
Verifichi la propria comprensione dei concetti di AI Engineering trattati in questa lezione.
Riepilogo della lezione
In questa lezione ha imparato che: il prompt engineering richiede un set di test di riferimento e un harness di valutazione per misurare i miglioramenti in modo affidabile, le modalità di errore devono essere categorizzate per individuare la correzione appropriata per ciascun tipo e temperature 0 è essenziale per il debug, mentre il versionamento dei prompt e il monitoraggio in produzione completano il ciclo della qualità. Ora vedremo come gli LLM elaborano il testo tramite i token e perché il numero di token è importante per i costi e il contesto.
Impara Python con un tutor IA — gratis
Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.
- Corsi
- 30
- Lezioni
- 120
Domande Frequenti
La lezione «Iterazione e debugging dei prompt» è gratuita?
Sì — il testo completo di «Iterazione e debugging dei prompt» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso AI Engineering Academy, passa a CoddyKit PRO. Il corso AI Engineering Academy include 4 lezioni in totale.
Cosa imparerò in «Iterazione e debugging dei prompt»?
Costruirà un flusso di lavoro sistematico per testare e perfezionare i prompt, individuerà le modalità di errore e utilizzerà OpenAI Playground per iterare rapidamente prima di scrivere codice per la… Eserciti AI Engineering Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare AI Engineering Academy?
Non è richiesta alcuna esperienza precedente. AI Engineering Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.
Quanto tempo richiede la lezione «Iterazione e debugging dei prompt»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione AI Engineering Academy?
Sì. Ogni lezione AI Engineering Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Prompting zero-shot e few-shot
- Chain-of-Thought e ragionamento passo per passo
- Prompt di sistema e definizione della persona
- Iterazione e debugging dei prompt