Confronto tra prompt vaghi e specifici
Esempi affiancati che mostrano la notevole differenza apportata dalla specificità
Confronto tra prompt vaghi e specifici è una lezione AI Prompt Engineering 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 Prompt Engineering, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso AI Prompt Engineering include 4 lezioni in totale.
Metodo del confronto affiancato
Il modo più rapido per interiorizzare la qualità dei prompt consiste nello studiare riscritture specifiche affiancate e analizzare perché ogni miglioramento funzioni.
In questa lezione esaminiamo cinque prompt vaghi e le relative riscritture specifiche. Per ogni coppia individuiamo le modifiche esatte apportate e il meccanismo con cui ogni miglioramento guida il modello verso un output migliore.
Coppia 1: il post del blog
Vago: 'Scrivi un post di blog sul lavoro da remoto.'
Specifico: 'Scrivi un post di blog di 600 parole intitolato "Le 3 abitudini del lavoro da remoto che hanno distrutto la mia produttività (e cosa faccio ora)" per un pubblico di sviluppatori software di livello intermedio. Voce in prima persona, tono colloquiale. Struttura: 1 paragrafo introduttivo, 3 sezioni con titoli H2, 1 CTA conclusiva per scaricare un template gratuito.'
Perché funziona: aggiunge il numero di parole, il titolo (e quindi l'angolazione), il pubblico, la voce, il tono, la struttura e un elemento finale specifico. Non lascia alcuna dimensione al caso.
import anthropic
client = anthropic.Anthropic(api_key='sk-ant-your-key-here')
response = client.messages.create(
model='claude-opus-4-5',
max_tokens=800,
messages=[{
'role': 'user',
'content': (
'Write a 600-word blog post titled '
'"The 3 Remote Work Habits That Killed My Productivity (And What I Do Now)" '
'for an audience of mid-level software developers. '
'First-person voice, conversational tone. '
'Structure: 1-paragraph intro, 3 H2 sections (one per habit), '
'1 closing paragraph with a CTA to download a free productivity template.'
)
}]
)
print(response.content[0].text[:400], '...')Coppia 2: la revisione del codice
Vago: 'Rivedi il mio codice.'
Specifico: 'Rivedi la seguente funzione Python. Si concentri esclusivamente su: 1) bug di correttezza, 2) casi limite non gestiti. NON commenti lo stile, i nomi o la formattazione. Formato dell'output: elenco numerato dei problemi, ciascuno con: descrizione del problema (1 frase), riga o righe interessate, correzione suggerita (frammento di codice).'
Perché funziona: definisce l'ambito della revisione (correttezza e casi limite), esclude esplicitamente altre dimensioni (stile e nomi) e specifica una struttura precisa dell'output con tre campi per ogni problema rilevato.
import openai
client = openai.OpenAI(api_key='sk-your-key-here')
code = (
'def get_user(users, user_id):\n'
' for user in users:\n'
' if user["id"] == user_id:\n'
' return user["name"]\n'
' return users[0]["name"]\n'
)
response = client.chat.completions.create(
model='gpt-4o',
messages=[{
'role': 'user',
'content': (
'Review the following Python function.\n'
'Focus ONLY on: 1) correctness bugs, 2) unhandled edge cases.\n'
'Do NOT comment on style, naming conventions, or formatting.\n'
'Output format: numbered list. Each item: issue (1 sentence), '
'affected line, suggested fix as a code snippet.\n\n'
+ code
)
}]
)
print(response.choices[0].message.content)Coppia 3: l'oggetto dell'e-mail
Vago: 'Scrivi gli oggetti delle e-mail per la mia newsletter.'
Specifico: 'Scrivi 10 oggetti di e-mail per una newsletter settimanale su Python destinata a data scientist. Ogni oggetto deve contenere meno di 50 caratteri, avere un elemento capace di aumentare il tasso di apertura (curiosity gap, elenco numerato o affermazione sorprendente) ed evitare parole che attivano i filtri antispam come FREE o URGENT. Fornisci l'output come elenco numerato, indicando tra parentesi quadre il tipo di elemento utilizzato.'
Perché funziona: specifica la quantità, il limite di lunghezza, il requisito relativo all'elemento di apertura, l'elenco delle esclusioni e un formato dell'output con etichette, trasformando un'attività creativa vaga in un'attività di generazione basata su regole.
import anthropic
client = anthropic.Anthropic(api_key='sk-ant-your-key-here')
response = client.messages.create(
model='claude-opus-4-5',
max_tokens=400,
messages=[{
'role': 'user',
'content': (
'Write 10 email subject lines for a weekly newsletter '
'about Python tips for data scientists. '
'Requirements:\n'
'- Each under 50 characters\n'
'- Must use one of these hooks: [CURIOSITY GAP], [NUMBER], or [SURPRISING CLAIM]\n'
'- No spam words: FREE, URGENT, ACT NOW, LIMITED TIME\n'
'- Output as numbered list with hook type in brackets at the end of each line'
)
}]
)
print(response.content[0].text)Coppia 4: il riepilogo della riunione
Vago: 'Riassumi questa trascrizione della riunione.'
Specifico: 'Riassuma questa trascrizione della riunione utilizzando il seguente formato: 1) Obiettivo della riunione (1 frase), 2) Decisioni principali prese (elenco puntato, massimo 5), 3) Attività da svolgere (tabella con le colonne: Attività, Responsabile, Scadenza), 4) Questioni aperte (elenco numerato). Se manca un'informazione per un campo, scriva N/D. Non includa opinioni: riporti solo fatti e impegni.'
Perché funziona: fornisce un template esatto, specifica i limiti di ogni sezione, definisce lo schema della tabella, stabilisce un valore predefinito per i dati mancanti e aggiunge un vincolo sul tono (solo fatti).
import openai
client = openai.OpenAI(api_key='sk-your-key-here')
transcript = (
'John: We need to decide on the launch date. '
'Sarah: I think Q3 works. We need the API done first. '
'John: Agreed. Sarah, can you own the API? '
'Sarah: Yes, I can have it by July 15th. '
'John: Great. Who handles marketing? '
'Mike: I will, but I need the feature list first. '
'John: We still need to confirm pricing — tabled for next week.'
)
response = client.chat.completions.create(
model='gpt-4o',
messages=[{
'role': 'user',
'content': (
'Summarize this meeting transcript in this exact format:\n'
'1. Meeting Purpose: (1 sentence)\n'
'2. Key Decisions: (bullet list, max 5)\n'
'3. Action Items: (markdown table: Task | Owner | Deadline)\n'
'4. Open Questions: (numbered list)\n'
'Missing info: write N/A. Facts only, no opinions.\n\n'
'Transcript:\n' + transcript
)
}]
)
print(response.choices[0].message.content)Coppia 5: la spiegazione
Vago: 'Spiega il machine learning.'
Specifico: 'Spiega il machine learning in 3 paragrafi per un product manager di un'azienda sanitaria che conosce la statistica ma non ha mai scritto codice. Paragrafo 1: che cos'è e in cosa differisce dalla programmazione tradizionale. Paragrafo 2: un esempio reale nel settore sanitario (diagnosi o scoperta di farmaci). Paragrafo 3: un luogo comune da evitare. Massimo 200 parole in totale.'
Perché funziona: definisce la struttura (3 paragrafi con argomenti assegnati), il pubblico (ruolo, settore e background specifici), i requisiti di contenuto per ogni paragrafo e un limite complessivo di parole.
import anthropic
client = anthropic.Anthropic(api_key='sk-ant-your-key-here')
response = client.messages.create(
model='claude-opus-4-5',
max_tokens=350,
messages=[{
'role': 'user',
'content': (
'Explain machine learning in exactly 3 paragraphs. '
'Audience: a product manager at a healthcare company who understands statistics '
'but has never written code.\n'
'Paragraph 1: what ML is and how it differs from traditional programming.\n'
'Paragraph 2: a specific real-world healthcare example (diagnosis or drug discovery).\n'
'Paragraph 3: one common misconception non-technical people have about ML.\n'
'Max 200 words total. No bullet points — flowing prose only.'
)
}]
)
print(response.content[0].text)L'anatomia di una buona riscrittura
Osservando tutte e cinque le coppie, ogni riscrittura efficace svolge le stesse operazioni:
- Sostituisce un verbo vago ('scrivere', 'rivedere', 'spiegare') con un'attività strutturata
- Indica il formato dell'output (elenco, tabella, paragrafi con contenuti assegnati)
- Aggiunge vincoli misurabili (numero di parole, numero di elementi, limiti di caratteri)
- Specifica il pubblico (ruolo, background e contesto)
- Aggiunge almeno una regola di esclusione (ciò che deve essere omesso)
# Pattern extractor: identify improvements between two prompts
def analyze_improvement(vague, specific):
improvements = []
words = specific.lower()
if any(str(n) in words for n in range(10, 10000)):
improvements.append('Quantitative constraint added')
if 'do not' in words or 'exclude' in words or 'avoid' in words or 'no ' in words:
improvements.append('Negative constraint added')
if 'audience' in words or 'for a' in words or 'targeting' in words:
improvements.append('Audience specified')
if 'format:' in words or 'table' in words or 'list' in words or 'paragraph' in words:
improvements.append('Output format defined')
if 'example' in words or 'such as' in words or 'like:' in words:
improvements.append('Example provided')
print('Improvements detected:')
for i in improvements:
print(f' + {i}')
vague = 'Write a blog post about remote work.'
specific = 'Write a 600-word blog post for mid-level developers with 3 H2 sections and a closing CTA. No bullet points. Avoid generic productivity advice.'
analyze_improvement(vague, specific)Cosa succede quando si aggiunge una sola dimensione
Aggiungere un solo miglioramento è utile, ma una specificità parziale lascia comunque grandi lacune. Confronti:
- 'Scrivi un post di blog sul lavoro da remoto' — nessun vincolo
- 'Scrivi un post di blog di 600 parole sul lavoro da remoto' — solo la lunghezza; angolazione, pubblico e struttura restano vaghi
- 'Scrivi un post di blog di 600 parole sul lavoro da remoto per sviluppatori, con tono colloquiale' — lunghezza, pubblico e tono; struttura, CTA e stile dei titoli restano vaghi
Ogni dimensione lasciata non specificata è una lotteria. Aggiunga tutte quelle per cui dispone di informazioni.
import openai
client = openai.OpenAI(api_key='sk-your-key-here')
# Progressively more specific prompts
prompts = [
'Write about Python.',
'Write a 200-word article about Python.',
'Write a 200-word article about Python for beginners who know no programming.',
(
'Write a 200-word article about Python for beginners who know no programming. '
'Start with a real-world analogy. Use 3 short paragraphs. '
'End with one actionable first step they can take today.'
)
]
for i, p in enumerate(prompts, 1):
print(f'Prompt {i} ({len(p)} chars): {p[:80]}...' if len(p) > 80 else f'Prompt {i}: {p}')
print()Utilizzare nella pratica la tecnica delle coppie di confronto
La tecnica delle coppie di confronto è un potente strumento di debugging. Quando si ottiene un output insoddisfacente:
- Salvi il prompt vago che ha prodotto l'output insoddisfacente
- Individui la dimensione che ha causato il problema
- Scriva una riscrittura specifica mirata esclusivamente a quella dimensione
- Esegua entrambi i prompt e confronti gli output
- Individui ciò che deve ancora essere corretto, quindi aggiunga il vincolo successivo
Questo approccio scientifico insegna rapidamente quali vincoli sono più importanti per il proprio caso d'uso.
import anthropic
client = anthropic.Anthropic(api_key='sk-ant-your-key-here')
def compare_prompts(prompt_a, prompt_b, label_a='A', label_b='B'):
client_ref = anthropic.Anthropic(api_key='sk-ant-your-key-here')
for label, prompt in [(label_a, prompt_a), (label_b, prompt_b)]:
response = client_ref.messages.create(
model='claude-opus-4-5',
max_tokens=150,
messages=[{'role': 'user', 'content': prompt}]
)
print(f'=== {label} ===')
print(prompt)
print('--- OUTPUT ---')
print(response.content[0].text)
print()
compare_prompts(
prompt_a='Explain APIs.',
prompt_b='Explain APIs in 3 sentences for a non-technical startup founder. Analogy required.',
label_a='VAGUE',
label_b='SPECIFIC'
)L'audit del prompt in due minuti
Prima di inviare un prompt importante, esegua questo audit di 2 minuti. Per ogni domanda, se la risposta è 'no', aggiunga il dettaglio mancante:
- Il formato è indicato? (elenco / tabella / paragrafo / JSON)
- La lunghezza è specificata? (numero di parole / numero di elementi)
- Il pubblico è descritto? (ruolo e background)
- L'obiettivo è chiaro? (a cosa serve l'output)
- È presente almeno un'esclusione? (ciò che deve essere omesso)
- È presente un esempio o un template? (se lo stile è importante)
def two_minute_audit(prompt):
score = 0
checks = {
'Format specified': any(w in prompt.lower() for w in
['list', 'table', 'paragraph', 'json', 'bullet', 'sentence', 'word']),
'Length given': any(c.isdigit() for c in prompt),
'Audience named': any(w in prompt.lower() for w in
['for a', 'audience', 'targeting', 'developer', 'manager', 'beginner']),
'Exclusion added': any(w in prompt.lower() for w in
['do not', 'avoid', 'exclude', 'no ', 'without', 'never']),
'Goal stated': any(w in prompt.lower() for w in
['goal', 'purpose', 'so that', 'in order to', 'will be used']),
}
print('Prompt Audit:')
for check, passed in checks.items():
icon = 'PASS' if passed else 'FAIL'
print(f' [{icon}] {check}')
if passed: score += 1
print(f'Score: {score}/{len(checks)}')
two_minute_audit(
'Write 5 bullet-point suggestions for improving user onboarding '
'for a B2B SaaS app targeting first-time non-technical users. '
'Avoid suggestions that require engineering work. Each bullet: max 25 words.'
)Creare la propria libreria di prompt
Ogni volta che scrive un prompt che produce un output eccellente, lo salvi. Crei una libreria personale di prompt organizzata per tipo di attività.
Una buona voce della libreria include:
- Il template del prompt con segnaposto come
[AUDIENCE],[WORD_COUNT] - Il caso d'uso per cui è stato progettato
- Il modello e le impostazioni utilizzate
- Una nota su ciò che lo rende efficace
Con il tempo, la propria libreria diventerà la risorsa più preziosa per la produttività con l'IA.
# Example prompt library entry
prompt_library = {
'meeting_summary': {
'template': (
'Summarize the following meeting transcript in this format:\n'
'1. Purpose: (1 sentence)\n'
'2. Decisions: (bullet list, max 5)\n'
'3. Action Items: (table: Task | Owner | Deadline)\n'
'4. Open Questions: (numbered list)\n'
'Missing info: N/A. Facts only.\n\nTranscript:\n[TRANSCRIPT]'
),
'use_case': 'Post-meeting automation for Slack or Notion',
'model': 'claude-opus-4-5',
'temperature': 0,
'notes': 'Works best with verbatim transcripts, not paraphrased notes'
}
}
# Use the template
def run_meeting_summary(transcript):
template = prompt_library['meeting_summary']['template']
return template.replace('[TRANSCRIPT]', transcript)
print(run_meeting_summary('Alice: We decided to ship v2 next Friday...')[:200])Verifica delle conoscenze
Osservando le cinque coppie di confronto di questa lezione, quale singola modifica ha migliorato con maggiore costanza la qualità dei prompt in tutti e cinque gli esempi?
Vago contro specifico — riepilogo
Le cinque coppie di confronto rivelano uno schema coerente degli elementi che rendono efficaci le riscritture dei prompt:
- La struttura dell'output è il miglioramento con il maggiore ritorno: la definisca sempre
- Il numero di parole o di elementi elimina completamente la necessità di negoziare la lunghezza
- La descrizione del pubblico calibra automaticamente il vocabolario e il livello di approfondimento
- Le regole di esclusione impediscono contenuti generici prevedibili
- La specificità parziale lascia comunque delle lacune: ogni dimensione non specificata è un'ipotesi
- Le librerie di prompt conservano i template efficaci per riutilizzarli più volte
Impara AI Prompt Engineering 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
- 53
- Lezioni
- 199
Domande Frequenti
La lezione «Confronto tra prompt vaghi e specifici» è gratuita?
Sì — il testo completo di «Confronto tra prompt vaghi e specifici» è 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 Prompt Engineering, passa a CoddyKit PRO. Il corso AI Prompt Engineering include 4 lezioni in totale.
Cosa imparerò in «Confronto tra prompt vaghi e specifici»?
Esempi affiancati che mostrano la notevole differenza apportata dalla specificità Eserciti AI Prompt Engineering 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 Prompt Engineering?
Non è richiesta alcuna esperienza precedente. AI Prompt Engineering 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 «Confronto tra prompt vaghi e specifici»?
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 Prompt Engineering?
Sì. Ogni lezione AI Prompt Engineering 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
- Perché la specificità è importante
- Eliminare l'ambiguità dai prompt
- Aggiungere dettagli concreti
- Confronto tra prompt vaghi e specifici