0Pricing
AI Prompt Engineering · Lezione

Eliminare l'ambiguità dai prompt

Tecniche per eliminare le molteplici interpretazioni nelle istruzioni

Eliminare l'ambiguità dai prompt è una lezione AI Prompt Engineering gratuita su CoddyKit. Questa è la lezione 2 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.

Cosa provoca l'ambiguità nell'AI

I prompt ambigui costringono il modello a scegliere tra più interpretazioni valide. Il modello ne sceglie una — di solito quella più comune — e la sviluppa con sicurezza, senza indicare di aver effettuato una scelta.

Il risultato è una risposta perfettamente formulata alla domanda sbagliata. Riconoscere ed eliminare l'ambiguità prima dell'invio è più rapido che riscrivere l'output in un secondo momento.

Il classico: «Rendilo migliore»

«Rendilo migliore» è forse il prompt più ambiguo che esista. Migliore in che senso?

  • Più breve? Più lungo?
  • Più formale? Più informale?
  • Più esempi? Meno esempi?
  • Tono diverso? Struttura diversa?
  • Grammatica corretta? Vocabolario diverso?

Il modello sceglie una dimensione e la modifica. Se non è la dimensione che desiderava, rimane intrappolato in un ciclo di riscritture.

import anthropic

client = anthropic.Anthropic(api_key='sk-ant-your-key-here')

original_text = (
    'Our software helps companies manage their data. '
    'It has many features. Customers like it a lot.'
)

# Ambiguous improvement request
vague = f'Make this better:\n\n{original_text}'

# Unambiguous improvement request
specific = (
    f'Rewrite this product description to be exactly 50% shorter, '
    f'more confident in tone, and replace vague phrases like "many features" '
    f'and "a lot" with specific claims. Do not add new features I have not mentioned.\n\n'
    f'{original_text}'
)

for label, prompt in [('VAGUE', vague), ('SPECIFIC', specific)]:
    response = client.messages.create(
        model='claude-opus-4-5',
        max_tokens=200,
        messages=[{'role': 'user', 'content': prompt}]
    )
    print(f'--- {label} ---')
    print(response.content[0].text)
    print()

Molteplici interpretazioni: esempi pratici

Qualsiasi prompt con un pronome senza antecedente, un aggettivo relativo o un soggetto mancante può essere ambiguo. Ecco alcuni esempi:

  • «Migliori le prestazioni» — di cosa? Velocità, precisione, coinvolgimento degli utenti?
  • «Scriva dell'impatto» — positivo, negativo, economico, sociale?
  • «Corregga questo» — la logica, lo stile, la formattazione o la grammatica?
  • «Lo renda professionale» — vocabolario formale? Paragrafi strutturati? Rimuovere le emoji?
import openai

client = openai.OpenAI(api_key='sk-your-key-here')

# Disambiguating 'fix this code'
buggy_code = 'def divide(a, b): return a / b'

ambiguous = f'Fix this:\n{buggy_code}'

unambiguous = (
    f'Fix only the division-by-zero bug in this function. '
    f'Add a guard that raises a ValueError with message "b cannot be zero" when b=0. '
    f'Do not change anything else — keep the function signature and return type identical.\n\n'
    f'{buggy_code}'
)

response = client.chat.completions.create(
    model='gpt-4o',
    messages=[{'role': 'user', 'content': unambiguous}]
)
print(response.choices[0].message.content)

Tecnica di disambiguazione: dichiarare l'interpretazione

Se sa che il suo prompt potrebbe essere interpretato in più modi, dichiari esplicitamente quale interpretazione desidera.

Modello: «Quando dico [termine ambiguo], intendo [definizione specifica].»

Esempi:

  • «Quando dico modifica, intendo correggere solo la grammatica e l'ortografia: non cambi il contenuto.»
  • «Quando dico breve, intendo un massimo di 3 frasi.»
  • «Quando dico professionale, intendo senza pronomi alla prima persona e senza forme contratte.»
import anthropic

client = anthropic.Anthropic(api_key='sk-ant-your-key-here')

response = client.messages.create(
    model='claude-opus-4-5',
    max_tokens=256,
    messages=[{
        'role': 'user',
        'content': (
            'Edit the following paragraph. '
            'When I say "edit", I mean: fix grammar and punctuation only. '
            'Do NOT change vocabulary, sentence structure, or content. '
            'When done, list each change you made in a numbered list below the edited text.\n\n'
            'The team have went to the meeting early, but the manager '
            'werent there so they waited for alot of time before leaving.'
        )
    }]
)
print(response.content[0].text)

Tecnica di disambiguazione: definire l'ambito

L'ambiguità dell'ambito è comune quando si chiedono miglioramenti o ampliamenti. La si risolve definendo esattamente cosa rientra e cosa non rientra nell'ambito.

Nell'ambito: ciò che il modello può modificare
Fuori ambito: ciò che deve rimanere invariato

Questo è particolarmente importante per le attività di modifica del codice, revisione dei documenti ed elaborazione dei dataset, nelle quali modifiche indesiderate possono causare problemi seri.

import openai

client = openai.OpenAI(api_key='sk-your-key-here')

code_block = '''
def calculate_tax(income, rate):
    return income * rate

def calculate_net(income, tax):
    return income - tax
'''

response = client.chat.completions.create(
    model='gpt-4o',
    messages=[{
        'role': 'user',
        'content': (
            'Add Python type hints to the following code.\n'
            'IN SCOPE: adding type hints to parameters and return values only.\n'
            'OUT OF SCOPE: changing function names, logic, docstrings, or formatting.\n'
            'Do not add any comments or docstrings.\n\n'
            + code_block
        )
    }]
)
print(response.choices[0].message.content)

Tecnica di disambiguazione: specificare il formato dell'output

L'ambiguità dell'output si verifica quando desidera un formato specifico ma non lo indica. «Mi fornisca i dati»: sotto forma di paragrafo? Di elenco? Di tabella? Di oggetto JSON?

Indichi sempre il formato esatto dell'output che si aspetta. Quando viene specificato esplicitamente, il modello lo rispetta con precisione.

import anthropic

client = anthropic.Anthropic(api_key='sk-ant-your-key-here')

candidates_text = (
    'Alice: 5 years Python, worked at Stripe, has a CS degree.\n'
    'Bob: 3 years JavaScript, worked at a startup, self-taught.\n'
    'Carol: 8 years Java, worked at Google, has an MS in CS.'
)

response = client.messages.create(
    model='claude-opus-4-5',
    max_tokens=300,
    messages=[{
        'role': 'user',
        'content': (
            'Extract the candidate data below into a JSON array. '
            'Each object must have exactly these keys: name, years_experience, primary_language, '
            'previous_employer, education_level. '
            'education_level values: DEGREE, MASTERS, SELF_TAUGHT.\n\n'
            + candidates_text
        )
    }]
)
print(response.content[0].text)

Tecnica di disambiguazione: chiedere al modello di chiarire

Quando scrive un prompt complesso che sa essere ambiguo, può chiedere al modello di porre domande di chiarimento prima di tentare di eseguire l'attività.

È particolarmente utile quando si creano assistenti AI: si vuole che il modello raccolga informazioni invece di fare supposizioni, proprio come farebbe un buon consulente umano.

import openai

client = openai.OpenAI(api_key='sk-your-key-here')

response = client.chat.completions.create(
    model='gpt-4o',
    messages=[
        {
            'role': 'system',
            'content': (
                'You are a professional copywriter. '
                'Before starting any writing task, ask exactly 3 clarifying questions '
                'that would most improve the output quality. '
                'Only proceed to write after the user answers those questions.'
            )
        },
        {
            'role': 'user',
            'content': 'Write a landing page headline for my business.'
        }
    ]
)
print(response.choices[0].message.content)

Termini relativi che richiedono un ancoraggio

I termini relativi non hanno un significato fisso: per persone diverse possono significare cose diverse:

  • «Breve» — 1 frase? 3 frasi? 1 paragrafo?
  • «Formale» — senza forme contratte? Stile di citazione accademico? Linguaggio giuridico?
  • «Semplice» — livello di lettura da quinta elementare? Senza termini tecnici? Solo frasi brevi?
  • «Completo» — coprire tutti i casi principali? Includere i casi limite? Con esempi?

Sostituisca ogni termine relativo con un equivalente concreto e misurabile.

import anthropic

client = anthropic.Anthropic(api_key='sk-ant-your-key-here')

# Relative terms mapped to concrete equivalents
mapping = [
    ('Give me a brief summary',   'Summarize in exactly 2 sentences'),
    ('Write something formal',    'Write using no contractions, no first person, and Flesch-Kincaid grade 12+'),
    ('Make it simple',            'Use only words a 10-year-old would know; max 15 words per sentence'),
    ('Be comprehensive',          'Cover at least 5 distinct subtopics with one example each'),
]

for vague, concrete in mapping:
    print(f'Vague:    "{vague}"')
    print(f'Concrete: "{concrete}"')
    print()

Ambiguità del soggetto: chi esegue l'azione?

L'ambiguità del soggetto si verifica quando non è chiaro a chi o a cosa si applichi l'istruzione.

«Riscriva l'introduzione»: di cosa? Del documento che ha incollato? Di quello di cui abbiamo discusso 5 turni fa? Di un documento nuovo?

«Traduca questo»: quale parte? L'intera risposta? Solo la sezione riepilogativa? I commenti del codice?

Indichi sempre l'oggetto o la sezione specifica a cui si riferisce, soprattutto nelle conversazioni a più turni.

import openai

client = openai.OpenAI(api_key='sk-your-key-here')

# Clear subject reference prevents wrong-section edits
contract_text = (
    '## Section 1: Payment Terms\nPayment is due within 30 days.\n\n'
    '## Section 2: Termination\nEither party may terminate with 30 days notice.'
)

response = client.chat.completions.create(
    model='gpt-4o',
    messages=[{
        'role': 'user',
        'content': (
            'In the contract below, rewrite ONLY Section 2 (Termination). '
            'Change the notice period from 30 days to 90 days. '
            'Do not change Section 1 or any other text.\n\n'
            + contract_text
        )
    }]
)
print(response.choices[0].message.content)

Ambiguità temporale: quando?

I riferimenti temporali nei prompt possono essere ambigui: «recente», «attuale», «più recente», «ora».

Il modello ha una data limite per i dati di addestramento: non sa cosa significhi «ora» se non glielo comunica. Fornisca sempre date esplicite per le attività sensibili al fattore tempo.

  • «Ricerche recenti» → «Ricerche pubblicate nel 2024 o nel 2025»
  • «Le migliori pratiche attuali» → «Le migliori pratiche aggiornate a gennaio 2025»
  • «La versione più recente» → «Versione 3.12 (rilasciata a ottobre 2024)»
import anthropic
from datetime import date

client = anthropic.Anthropic(api_key='sk-ant-your-key-here')

today = date.today().isoformat()

response = client.messages.create(
    model='claude-opus-4-5',
    max_tokens=256,
    system=f'Today is {today}. Use this as the reference for any time-related words.',
    messages=[{
        'role': 'user',
        'content': (
            'Describe the best practices for Python async programming '
            'as of January 2025. If your knowledge does not cover this timeframe, '
            'say so explicitly and share what you know up to your cutoff.'
        )
    }]
)
print(response.content[0].text)

Creare un radar dell'ambiguità

Prima di inviare un prompt, verifichi la presenza di questi segnali di ambiguità:

  • Pronomi senza antecedenti chiari: esso, questo, quello, essi
  • Aggettivi relativi: migliore, più breve, formale, semplice, completo, recente
  • Verbi vaghi: correggere, migliorare, aggiornare, rendere, fare qualcosa al riguardo
  • Ambito non definito: non viene indicato cosa rientra e cosa non rientra nell'ambito
  • Formato non definito: il formato dell'output non è specificato
  • Contesto mancante: chi è il pubblico e a cosa serve l'output
def scan_prompt_for_ambiguity(prompt):
    '''Simple heuristic scanner for common ambiguity patterns.'''
    warnings = []
    vague_verbs = ['fix', 'improve', 'make it', 'update', 'change it', 'redo']
    relative_adj = ['better', 'shorter', 'longer', 'formal', 'simple', 'recent', 'comprehensive']
    missing_format = ['json', 'table', 'list', 'bullet', 'paragraph', 'word', 'sentence']

    lower = prompt.lower()
    for v in vague_verbs:
        if v in lower:
            warnings.append(f'Vague verb detected: "{v}" — specify what change exactly')
    for a in relative_adj:
        if a in lower:
            warnings.append(f'Relative adjective: "{a}" — anchor with a measurable definition')
    if not any(f in lower for f in missing_format):
        warnings.append('No output format specified — add format, length, or structure')
    return warnings

test = 'Make the report better and more formal.'
print('Prompt:', test)
for w in scan_prompt_for_ambiguity(test):
    print(' WARNING:', w)

Verifica delle conoscenze

Un programmatore invia questo prompt: «Semplifichi il codice.» L'AI accorcia il codice, ma il programmatore voleva usare nomi di variabili più leggibili, non rendere il codice più breve. Qual era il problema principale?

Rimuovere l'ambiguità — riepilogo

L'ambiguità costringe il modello a fare supposizioni: la sua interpretazione è quella più comune, non la vostra. Ecco le principali tecniche di disambiguazione:

  • Dichiarare l'interpretazione: «Quando dico X, intendo Y»
  • Definire l'ambito: elencare cosa rientra e cosa non rientra nell'ambito
  • Indicare il formato dell'output: JSON / tabella / paragrafo / numero di frasi
  • Ancorare i termini relativi: «breve» → «2 frasi», «formale» → «senza forme contratte»
  • Indicare il soggetto: «Sezione 2», non «questa parte»
  • Chiedere chiarimenti: indicare al modello di porre domande prima di procedere

Domande Frequenti

La lezione «Eliminare l'ambiguità dai prompt» è gratuita?

Sì — il testo completo di «Eliminare l'ambiguità dai 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 Prompt Engineering, passa a CoddyKit PRO. Il corso AI Prompt Engineering include 4 lezioni in totale.

Cosa imparerò in «Eliminare l'ambiguità dai prompt»?

Tecniche per eliminare le molteplici interpretazioni nelle istruzioni 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 2 di 4.

Quanto tempo richiede la lezione «Eliminare l'ambiguità dai 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 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

  1. Perché la specificità è importante
  2. Eliminare l'ambiguità dai prompt
  3. Aggiungere dettagli concreti
  4. Confronto tra prompt vaghi e specifici
← Torna a AI Prompt Engineering