0Pricing
AI Prompt Engineering · Lezione

Scelta dei parametri per il proprio caso d’uso

Impostazioni consigliate per domande e risposte fattuali, scrittura creativa, codice e chat

Scelta dei parametri per il proprio caso d’uso è 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.

Il framework per scegliere i parametri

La scelta dei parametri di campionamento non è una questione di tentativi casuali: segue una logica basata sui requisiti dell'attività. Due dimensioni fondamentali determinano la configurazione corretta:

  1. Accuratezza dell'output: quanto è importante che l'output sia corretto e prevedibile?
  2. Diversità dell'output: quanto è importante che gli output varino e favoriscano l'esplorazione?

Accuratezza elevata → temperatura bassa. Diversità elevata → temperatura alta. La maggior parte delle attività si colloca tra questi due estremi.

Domande e risposte fattuali: l'accuratezza è tutto

Nel rispondere a domande fattuali, in genere esiste una sola risposta corretta. Qualsiasi elemento di casualità aumenta la probabilità di una risposta errata. Utilizzi:

  • temperature = 0: decodifica greedy, completamente deterministica
  • top_p = 1.0: lasciarlo senza restrizioni; con temperature=0, top-p non ha effetto

In questo modo il modello seleziona sempre la risposta di cui è più convinto, ovvero quella con la maggiore probabilità di essere corretta.

import openai
client = openai.OpenAI(api_key='sk-...')

# Factual Q&A configuration
def factual_qa(question):
    resp = client.chat.completions.create(
        model='gpt-4o',
        messages=[
            {'role': 'system', 'content': 'Answer factual questions concisely and accurately.'},
            {'role': 'user', 'content': question}
        ],
        temperature=0,
        top_p=1.0
    )
    return resp.choices[0].message.content

answer = factual_qa('What is the boiling point of water at sea level?')
print(answer)  # Always: '100 degrees Celsius (212 degrees Fahrenheit).'

Generazione di codice: quasi greedy

Il codice deve essere sintatticamente corretto e semanticamente preciso. La casualità può causare errori di sintassi, nomi di variabili errati o una logica non corretta. Utilizzi:

  • temperature = 0–0.2: quasi greedy — consente piccole variazioni, ma privilegia nettamente le scelte corrette dei token
  • top_p = 0.95: elimina i token della coda estrema che potrebbero causare errori di sintassi
# Code generation configuration
def generate_code(task):
    resp = client.chat.completions.create(
        model='gpt-4o',
        messages=[
            {'role': 'system', 'content': 'You are an expert Python programmer. Write clean, correct code.'},
            {'role': 'user', 'content': task}
        ],
        temperature=0.1,
        top_p=0.95
    )
    return resp.choices[0].message.content

code = generate_code('Write a Python function that merges two sorted lists.')
print(code)

Riepilogo automatico: impostazioni moderate

Il riepilogo automatico richiede accuratezza (non bisogna distorcere i fatti), ma beneficia di una lieve variazione (esecuzioni diverse possono mettere in risalto aspetti diversi). Utilizzi:

  • temperature = 0.3–0.5: una casualità contenuta preserva una formulazione naturale
  • top_p = 1.0: a una temperatura bassa non è necessaria alcuna restrizione del nucleo
# Summarization configuration
def summarize(text):
    resp = client.chat.completions.create(
        model='gpt-4o',
        messages=[
            {'role': 'system', 'content': 'Summarize the following text in 3 sentences.'},
            {'role': 'user', 'content': text}
        ],
        temperature=0.4,
        top_p=1.0
    )
    return resp.choices[0].message.content

summary = summarize(long_article)
print(summary)

Chat conversazionale: variazione naturale

Le risposte in chat beneficiano di una variazione naturale: la stessa domanda non dovrebbe produrre sempre la stessa identica formulazione. Un'eccessiva casualità rende le risposte incoerenti. Utilizzi:

  • temperature = 0.7–0.9: conversazione naturale e varia
  • top_p = 0.9–0.95: elimina i token improbabili della coda che producono formulazioni innaturali
# Chat configuration
def chat_response(user_message, history):
    messages = history + [{'role': 'user', 'content': user_message}]
    resp = client.chat.completions.create(
        model='gpt-4o',
        messages=[
            {'role': 'system', 'content': 'You are a friendly, helpful assistant.'},
            *messages
        ],
        temperature=0.8,
        top_p=0.9
    )
    reply = resp.choices[0].message.content
    history.append({'role': 'user', 'content': user_message})
    history.append({'role': 'assistant', 'content': reply})
    return reply, history

Scrittura creativa: alta diversità

La scrittura creativa valorizza l'originalità e gli elementi inattesi. Le temperature basse producono output pieni di cliché e prevedibili. Le temperature alte producono scelte vivide e sorprendenti, anche se valori eccessivi causano incoerenza. Utilizzi:

  • temperature = 0.9–1.2: vocabolario diversificato, scelte lessicali non ovvie
  • top_p = 0.95: previene i token incoerenti della coda, consentendo al contempo un'ampia esplorazione
# Creative writing configuration
def write_story_opening(prompt):
    resp = client.chat.completions.create(
        model='gpt-4o',
        messages=[
            {'role': 'system', 'content': 'You are a creative fiction writer. Write vivid, original prose.'},
            {'role': 'user', 'content': f'Write a story opening for: {prompt}'}
        ],
        temperature=1.1,
        top_p=0.95
    )
    return resp.choices[0].message.content

opening = write_story_opening('A detective discovers her partner is the killer.')
print(opening)

Brainstorming e ideazione

Nel brainstorming, l'obiettivo è massimizzare la diversità delle idee, comprese quelle insolite o inattese. Utilizzi la temperatura pratica più alta:

  • temperature = 1.0–1.5: ampia esplorazione dello spazio delle idee
  • top_p = 0.95–1.0: restrizione minima

Esegua il processo più volte e raccolga tutti gli output, quindi selezioni manualmente le idee migliori. I prompt per il brainstorming traggono beneficio da richieste esplicite di varietà: 'Mi fornisca 10 approcci diversi, compresi quelli insoliti.'

# Brainstorming: run multiple times for variety
def brainstorm(topic, n_runs=5):
    ideas = []
    for _ in range(n_runs):
        resp = client.chat.completions.create(
            model='gpt-4o',
            messages=[
                {'role': 'system', 'content': 'Generate creative, diverse ideas. Include unusual approaches.'},
                {'role': 'user', 'content': f'Give me 3 ideas for: {topic}'}
            ],
            temperature=1.3,
            top_p=0.95
        )
        ideas.append(resp.choices[0].message.content)
    return ideas

all_ideas = brainstorm('reducing customer churn')

Test di sensibilità dei parametri

Prima di fissare i parametri, esegua test di sensibilità dei parametri: mantenga costante il prompt, modifichi un solo parametro alla volta e valuti la qualità dell'output per ogni impostazione.

def sensitivity_test(prompt, evaluator, temperatures, n_samples=5):
    results = {}
    for temp in temperatures:
        scores = []
        for _ in range(n_samples):
            resp = client.chat.completions.create(
                model='gpt-4o',
                messages=[{'role': 'user', 'content': prompt}],
                temperature=temp
            )
            score = evaluator(resp.choices[0].message.content)
            scores.append(score)
        results[temp] = sum(scores) / len(scores)

    for temp, score in sorted(results.items()):
        print(f'T={temp}: avg score = {score:.2f}')
    best_temp = max(results, key=results.get)
    print(f'Best temperature: {best_temp}')
    return best_temp

Quando mantenere i valori predefiniti

Non tutte le applicazioni richiedono parametri personalizzati. Mantenga i valori predefiniti quando:

  • Il caso d'uso è una chat generica: la temperatura predefinita (1.0 per la maggior parte delle API) è ben calibrata
  • Sta realizzando un prototipo e non conosce ancora le impostazioni corrette
  • L'attività è in equilibrio tra accuratezza e creatività (ad esempio, la stesura di e-mail)

Regola generale: personalizzi i parametri solo quando, durante i test, il comportamento predefinito causa un problema di qualità misurabile. Ottimizzare i parametri troppo presto aggiunge complessità senza un beneficio misurabile.

# Defaults are often correct
default_resp = client.chat.completions.create(
    model='gpt-4o',
    messages=[{'role': 'user', 'content': 'Draft a professional email declining a meeting.'}]
    # No temperature or top_p specified — API defaults apply
    # OpenAI default: temperature=1, top_p=1
)
print(default_resp.choices[0].message.content)

Scheda di riferimento rapido

Tabella riepilogativa delle impostazioni consigliate in base al caso d'uso:

PARAMETER_PRESETS = {
    # task: (temperature, top_p, notes)
    'factual_qa':        (0.0, 1.0, 'greedy, max accuracy'),
    'classification':    (0.0, 1.0, 'deterministic labels'),
    'code_generation':   (0.1, 0.95, 'near-greedy, avoid tail tokens'),
    'data_extraction':   (0.2, 1.0, 'slight variation for robustness'),
    'summarization':     (0.4, 1.0, 'preserve facts, vary phrasing'),
    'translation':       (0.3, 1.0, 'accurate but natural'),
    'chat':              (0.8, 0.9, 'natural conversation'),
    'email_drafting':    (0.7, 0.9, 'professional but varied'),
    'creative_writing':  (1.1, 0.95, 'vivid, original'),
    'brainstorming':     (1.3, 0.95, 'maximum diversity'),
}

for task, (temp, top_p, notes) in PARAMETER_PRESETS.items():
    print(f'{task:22} temp={temp}, top_p={top_p} | {notes}')

Penalità di frequenza e di presenza

Due parametri aggiuntivi completano temperatura e top-p:

  • frequency_penalty (0–2): riduce la probabilità dei token in proporzione alla frequenza con cui sono già comparsi nell'output, evitando la ripetizione delle parole
  • presence_penalty (0–2): riduce la probabilità di qualsiasi token già comparso, favorendo la diversità degli argomenti

Per la scrittura creativa: aggiunga frequency_penalty=0.5 per ridurre la ripetizione delle scelte lessicali senza modificare la temperatura.

resp = client.chat.completions.create(
    model='gpt-4o',
    messages=[{'role': 'user', 'content': 'Write a paragraph about coffee.'}],
    temperature=1.0,
    top_p=0.95,
    frequency_penalty=0.5,  # discourage repeating the same words
    presence_penalty=0.3    # encourage introducing new topics/aspects
)
print(resp.choices[0].message.content)

Verifica delle conoscenze

Per un'attività che genera codice Python destinato all'esecuzione in produzione, quale configurazione dei parametri è più appropriata?

Riepilogo: scelta dei parametri di campionamento

Adatti i parametri alle Sue esigenze di accuratezza e diversità:

  • Fattuale/codice: temp=0–0.2, top_p=0.95 — accuratezza prima di tutto
  • Riepilogo automatico: temp=0.3–0.5 — equilibrio
  • Chat: temp=0.7–0.9, top_p=0.9 — variazione naturale
  • Creatività: temp=0.9–1.2, top_p=0.95 — diversità
  • Brainstorming: temp=1.3, top_p=0.95 — massima esplorazione

Esegua test di sensibilità dei parametri. Mantenga i valori predefiniti quando non si osservano problemi di qualità. Aggiunga frequency_penalty in caso di problemi di ripetizione. Questo conclude il Corso 19. Prossimo argomento: test dei prompt e regressione.

Domande Frequenti

La lezione «Scelta dei parametri per il proprio caso d’uso» è gratuita?

Sì — il testo completo di «Scelta dei parametri per il proprio caso d’uso» è 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 «Scelta dei parametri per il proprio caso d’uso»?

Impostazioni consigliate per domande e risposte fattuali, scrittura creativa, codice e chat 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 «Scelta dei parametri per il proprio caso d’uso»?

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. Che cos’è la temperatura negli LLM?
  2. Nucleus sampling con top-p
  3. Sampling con top-k
  4. Scelta dei parametri per il proprio caso d’uso
← Torna a AI Prompt Engineering