Valutare la scelta
Misurare qualità e costi.
Valutare la scelta è 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.
Non si può decidere ciò che non si può misurare
La scelta tra prompt, fine-tuning e sistema ibrido è valida solo quanto la valutazione su cui si basa. Senza un set di valutazione fisso e un modello dei costi, ogni confronto si riduce a un aneddoto.
- Qualità e costi sono due assi: non li riduca mai prematuramente a un unico numero
- Il set di valutazione deve essere escluso dall'addestramento e rimanere invariato per ogni approccio confrontato
- Il vincitore è l'approccio che occupa il punto migliore della frontiera qualità-costi in base ai Suoi vincoli
Crei prima il set di valutazione fisso
Prima di confrontare qualsiasi soluzione, costruisca un set di valutazione escluso dall'addestramento. Deve coprire la distribuzione reale: casi comuni, casi limite noti e input avversari, in proporzioni simili a quelle della produzione.
Lo blocchi. Ogni approccio — solo prompt, fine-tuning, sistema ibrido — viene valutato sullo stesso set identico. Se il set cambia tra un confronto e l'altro, i numeri non sono comparabili e la decisione non è valida.
def split_eval(labeled, holdout_ratio=0.2, seed=42):
import random
rng = random.Random(seed) # fixed seed = reproducible split
data = labeled[:]
rng.shuffle(data)
cut = int(len(data) * (1 - holdout_ratio))
train, frozen_eval = data[:cut], data[cut:]
return train, frozen_eval # eval never enters any training runScelga metriche coerenti con il compito
L'accuratezza generica nasconde gli errori specifici del compito. Scelga metriche che catturino ciò che conta davvero:
- Corrispondenza esatta/allo schema per l'output strutturato
- LLM-as-judge con punteggio secondo una rubrica per la qualità a risposta aperta, con un campione verificato da persone
- Metriche di coda: caso peggiore e p95, non solo la media
- Tassi di risposte sicure/rifiuto come criteri vincolanti, valutati separatamente dalla qualità
Un punteggio medio che nasconde una coda catastrofica porterà alla decisione sbagliata.
Valuti ogni candidato allo stesso modo
Esegua la valutazione del solo prompt, del modello sottoposto a fine-tuning e del sistema ibrido con lo stesso valutatore sullo stesso set fisso. Registri la qualità insieme al vettore completo dei costi per ciascuno, così da ottenere confronti omogenei.
def evaluate(candidate, frozen_eval, scorer):
results = []
for ex in frozen_eval:
out = candidate.run(ex['input'])
results.append(scorer(out, ex['label']))
mean = sum(results) / len(results)
p95 = sorted(results)[int(0.95 * len(results)) - 1]
return {'mean': mean, 'p95_worst': p95}
# Identical frozen_eval + scorer for prompt / tuned / hybridModelli il vettore completo dei costi
Il costo non è un unico numero. Acquisisca ogni componente, così che il confronto rifletta la realtà al volume previsto:
- Inferenza per chiamata: token di input + output moltiplicati per il prezzo (i prompt lunghi costano di più a ogni chiamata)
- Costo di addestramento ammortizzato: costo del fine-tuning distribuito sul volume previsto di richieste
- Manutenzione: pipeline dei dati, esecuzioni della valutazione, nuovo fine-tuning quando cambia il modello di base
- Latenza: da considerare separatamente quando incide sulla conversione o sulla UX
def monthly_cost(calls, in_tok, out_tok, price_in, price_out,
train_cost=0.0, months_amortized=12):
inference = calls * ((in_tok/1000)*price_in + (out_tok/1000)*price_out)
amortized_train = train_cost / months_amortized
return inference + amortized_train
# Long prompt-only: high in_tok, train_cost=0
# Tuned: low in_tok, train_cost>0 amortized over volumeTracci la frontiera qualità-costi
Con la qualità e il costo mensile di ogni candidato, lo posizioni su una frontiera. Un candidato è dominato se un altro ha sia una qualità superiore sia un costo inferiore; elimini quelli dominati.
Tra i candidati non dominati, la scelta giusta dipende dal vincolo: scelga il più economico che supera la soglia di qualità, oppure la qualità più alta entro il limite di costo. La decisione è ora esplicita e difendibile, non una questione di preferenze.
def non_dominated(candidates):
# candidate: {'name','quality','cost'} -- higher quality, lower cost better
keep = []
for c in candidates:
dominated = any(o['quality'] >= c['quality'] and o['cost'] <= c['cost']
and o != c for o in candidates)
if not dominated:
keep.append(c)
return keepSignificatività statistica, non rumore
Un miglioramento di due punti su una valutazione di 200 esempi potrebbe essere rumore. Prima di proclamare un vincitore, verifichi che il divario di qualità sia statisticamente significativo considerando la dimensione del set di valutazione.
Usi un confronto appaiato (gli stessi esempi passati a entrambi i candidati) e un intervallo di confidenza sulla differenza. Se l'intervallo include lo zero, non si dispone di un miglioramento reale e il costo aggiuntivo del fine-tuning non è giustificato.
def paired_diff_ci(scores_a, scores_b):
import statistics
diffs = [a - b for a, b in zip(scores_a, scores_b)]
mean = statistics.mean(diffs)
sd = statistics.pstdev(diffs)
se = sd / (len(diffs) ** 0.5)
return (mean - 1.96*se, mean + 1.96*se) # if it spans 0 -> not significantEviti il data leakage nel set di valutazione
Il modo più rapido per far sembrare il fine-tuning falsamente efficace è il data leakage: esempi di addestramento che si sovrappongono al set di valutazione. Un set contaminato premia la memorizzazione e gonfia il punteggio del candidato sottoposto a fine-tuning.
Deduplichi i dati tra addestramento e valutazione, controlli la presenza di quasi duplicati e preferisca un set di valutazione separato temporalmente (escluso in base alla data), così che il modello sottoposto a fine-tuning non possa averlo già visto. Il data leakage è la causa più comune di una decisione sul fine-tuning che fallisce in produzione.
Monitori dopo il rilascio
Il lancio non rende definitiva la decisione. La distribuzione in produzione cambia e un modello sottoposto a fine-tuning può degradarsi silenziosamente quando gli input si allontanano dalla distribuzione di addestramento.
- Campioni il traffico reale e lo valuti con la stessa rubrica
- Imposti avvisi sui cali di qualità e sull'aumento del costo per chiamata
- Ripeta la valutazione sul set fisso ogni volta che cambia la versione del modello di base
Consideri l'approccio scelto un'ipotesi sottoposta a verifica continua, non una decisione definitiva.
Registro della decisione
Raccolga il confronto in un registro della decisione: il set di valutazione fisso, la qualità e il vettore dei costi di ogni candidato, il risultato della significatività, il volume ipotizzato e il punto scelto sulla frontiera, con la relativa motivazione.
In questo modo la scelta è verificabile e può essere rivalutata. Quando cambiano il volume o il modello di base, riapra il registro e ripeta la valutazione, invece di ridiscutere tutto basandosi sulla memoria.
Funzione decisionale end-to-end
Colleghi tutti gli elementi: valuti ogni candidato sul set fisso, associ il relativo costo, elimini le opzioni dominate, richieda una differenza significativa rispetto al baseline più economico, quindi scelga in base al vincolo determinante.
def decide(candidates, quality_bar, cost_ceiling):
frontier = non_dominated(candidates)
feasible = [c for c in frontier
if c['quality'] >= quality_bar and c['cost'] <= cost_ceiling]
if not feasible:
return 'NO_CANDIDATE_MEETS_CONSTRAINTS'
# cheapest option that clears the quality bar
return min(feasible, key=lambda c: c['cost'])['name']
# Prefer prompt-only on ties: lower maintenance TCOVerifica rapida
Un modello sottoposto a fine-tuning ottiene un punteggio superiore di 2 punti rispetto al prompting su una valutazione di 150 esempi, ma un intervallo di confidenza appaiato sulla differenza include lo zero. Inoltre, costa di più al mese. Qual è la decisione corretta?
Riepilogo
Decida sulla base di un set di valutazione fisso e di un vettore dei costi realistico, non dell'intuizione. Qualità e costi sono due assi; la risposta è un punto sulla frontiera qualità-costi, scelto in base al vincolo determinante.
- Blocchi un unico set di valutazione e valuti ogni candidato allo stesso modo
- Scelga metriche adatte al compito e osservi la coda, non solo la media
- Modelli il vettore completo dei costi e ammortizzi il fine-tuning sul volume reale
- Richieda la significatività statistica; un CI che include lo zero non indica alcun miglioramento
- Prevenga il data leakage nel set di valutazione: è la causa principale delle vittorie illusorie del fine-tuning
- Monitori dopo il rilascio e registri la decisione, così da poterla ripetere
Domande Frequenti
La lezione «Valutare la scelta» è gratuita?
Sì — il testo completo di «Valutare la scelta» è 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 «Valutare la scelta»?
Misurare qualità e costi. 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 «Valutare la scelta»?
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
- Quando basta il prompting
- Quando usare il fine-tuning
- Ibrido: prompt e tuning leggero
- Valutare la scelta