Misurare la robustezza
Valutare la resistenza agli attacchi.
Misurare la robustezza è 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.
La robustezza come quantità misurabile
La robustezza è la resistenza del sistema agli input avversari, espressa tramite numeri che può monitorare, confrontare e usare come criteri di rilascio. Il fatto che «sembri sicuro» non è una misurazione; lo è un tasso di successo degli attacchi con un intervallo di confidenza.
Questa lezione trasforma i risultati del red team in metriche rigorose.
Tasso di successo degli attacchi
La metrica principale è il tasso di successo degli attacchi (ASR): la frazione dei casi di attacco che eludono le Sue difese. Più è basso, meglio è. Lo riporti complessivamente e suddiviso per categoria e tecnica, così saprà dove il sistema è più debole.
def asr(results):
breaks = sum(1 for r in results if not r['safe'])
return breaks / len(results)
# also compute per-category ASR for diagnosisPesare in base alla gravità
Un ASR grezzo tratta allo stesso modo una fuga di dati banale e un'esfiltrazione di PII. Calcoli un punteggio ponderato per la gravità, in modo che gli errori critici incidano maggiormente sulla metrica e che alcune falle ad alto impatto non vengano nascoste da numerosi casi a basso impatto superati correttamente.
W = {'low':1,'medium':3,'high':7,'critical':15}
def weighted_risk(results):
return sum(W[r['severity']] for r in results if not r['safe'])Intervalli di confidenza, non stime puntuali
L'ASR è una stima ottenuta da un campione finito, quindi riporti anche l'incertezza. Con suite di piccole dimensioni, l'intervallo è ampio; un calo dall'8% al 6% potrebbe essere rumore. Utilizzi un intervallo di confidenza binomiale e agisca solo sui cambiamenti che lo superano.
from statsmodels.stats.proportion import proportion_confint
low, high = proportion_confint(breaks, n, method='wilson')
print(f'ASR {breaks/n:.3f} CI [{low:.3f}, {high:.3f}]')Il corrispettivo dei falsi positivi
La robustezza senza usabilità non serve a nulla. Affianchi all'ASR il tasso di rifiuto eccessivo: la frazione delle richieste innocue bloccate erroneamente, misurata su un set pulito separato. Un rafforzamento che fa aumentare il rifiuto eccessivo scambia un errore con un altro.
over_refusal = sum(1 for r in benign_results if r['blocked']) / len(benign_results)
# track ASR and over_refusal together; optimize the frontierEfficienza dell'attacco
Misuri non solo se un attacco riesce, ma quanto è difficile portarlo a termine. Monitori il numero di query necessarie per compromettere il sistema o di turni necessari: un attacco riuscito al primo tentativo è molto peggiore di uno che richiede 20 turni elaborati ad arte. Un aumento dello sforzo necessario per compromettere il sistema tra una release e l'altra indica una robustezza in miglioramento, anche se l'ASR rimane invariato.
def avg_turns_to_break(results):
succ = [r['turns_used'] for r in results if not r['safe']]
return sum(succ)/len(succ) if succ else float('inf')Calibrare il valutatore
Se un valutatore LLM assegna il punteggio di successo, le Sue metriche sono valide solo quanto il valutatore. Confronti periodicamente i verdetti del valutatore con le etichette umane e riporti precisione e richiamo del valutatore. Un valutatore troppo permissivo sottostima l'ASR e crea un falso senso di sicurezza.
judge_acc = mean(judge(r['transcript']) == human[r['id']] for r in audit_set)
assert judge_acc > 0.9, 'recalibrate judge before trusting ASR'Report segmentato
Un unico valore aggregato nasconde il rischio. Suddivida le metriche per categoria, tecnica, attacchi a turno singolo o multi-turno e attacchi diretti o indiretti. Un ASR complessivo del 3% può nascondere un ASR del 40% negli abusi indiretti degli strumenti, ed è questo il numero che dovrebbe guidare la roadmap.
Monitorare le tendenze tra le release
La robustezza è relativa e legata al periodo. Salvi ogni esecuzione della suite indicizzandola per versione del modello e configurazione, quindi tracci l'ASR e il rischio ponderato tra le release. L'obiettivo è un miglioramento costante e l'assenza di regressioni, monitorati come qualsiasi altro SLO di affidabilità.
history.append({'version': cfg.model_version, 'asr': asr(results),
'weighted': weighted_risk(results), 'over_refusal': over_refusal})Impostare i gate di rilascio
Trasformi le metriche in policy. Un esempio di gate: l'ASR critico deve essere pari a 0, l'ASR complessivo deve essere al di sotto di una soglia, non devono esserci regressioni oltre l'intervallo di confidenza e il rifiuto eccessivo deve rimanere sotto il limite massimo. Il gate trasforma la robustezza in un requisito vincolante per il rilascio, non in un elemento accessorio.
def passes_gate(m, prev):
return (m['critical_asr'] == 0
and m['asr'] < 0.05
and m['asr'] <= prev['asr'] + ci_margin
and m['over_refusal'] < 0.02)Attenzione all'overfitting sulla suite
Se adatta le difese direttamente alla suite visibile, potrebbe superare i test pur rimanendo vulnerabile ad attacchi non osservati. Mantenga un set privato di attacchi, alterni i casi e lasci che il modello attaccante continui a esplorare. Un punteggio perfetto su una suite statica è un campanello d'allarme, non una vittoria.
Verifica rapida
Il Suo ASR complessivo è un basso 3%, ma gli stakeholder sono sorpresi da un incidente reale di abuso degli strumenti. Quale pratica di misurazione avrebbe probabilmente fatto emergere prima il rischio?
Riepilogo
Misurare la robustezza:
- Il tasso di successo degli attacchi è la metrica principale; lo pesi in base alla gravità.
- Riporti gli intervalli di confidenza e affianchi all'ASR il rifiuto eccessivo.
- Monitori l'efficienza degli attacchi (turni o query necessari per compromettere il sistema) e calibri il valutatore.
- Riporti i dati per segmenti, monitori l'andamento tra le release e applichi gate di rilascio.
- Mantenga separati gli attacchi privati per evitare l'overfitting sulla suite.
Ha completato il red teaming e la valutazione avversaria, nonché il percorso avanzato di PromptLab.
Domande Frequenti
La lezione «Misurare la robustezza» è gratuita?
Sì — il testo completo di «Misurare la robustezza» è 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 «Misurare la robustezza»?
Valutare la resistenza agli attacchi. 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 «Misurare la robustezza»?
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
- Basi del red teaming degli LLM
- Tecniche di jailbreak
- Creare una suite di attacchi
- Misurare la robustezza