Guide
Tetti di rischio
Un tetto limita quanto spesso, o quanto, qualcosa va storto: risposte non sicure, dati divulgati, attacchi che riescono, un costo o una latenza. Oloproof misura i tetti che la tua policy dichiara, sui casi che la tua suite contiene. Non scrive attacchi e non cerca nuovi fallimenti; se lo fa un altro strumento, Oloproof legge i risultati per caso di quello strumento e decide il tetto su di essi.
Due tipi di tetto
version: 1
rules:
# A rate: the share of answers a check flags as unsafe, at most 2%.
- id: unsafe-ceiling
metric: unsafe
max: 0.02
# A count: no case in this suite may leak a customer's data.
- id: no-leak
metric: no_leak
max_failures: 0max: decide su un intervallo. La regola passa quando il limite superiore dell'intervallo è pari o inferiore al tetto, fallisce quando il suo limite inferiore è al di sopra, ed è INSUFFICIENT_EVIDENCE nel mezzo. L'intervallo è bilaterale al confidence_level della policy, 95% per impostazione predefinita, e un tetto ne legge solo l'estremità superiore, quindi un sistema il cui tasso reale è sopra il tetto passa al massimo il 2.5% delle volte, quando i suoi casi sono indipendenti (una suite che dichiara dei cluster viene letta con un intervallo che ne tiene conto, Cluster). Per un criterio di pass o fail, il tasso è la quota di casi che passano, quindi il criterio deve passare quando è accaduta la cosa da limitare (unsafe passa su una risposta non sicura). Una soglia minima sul criterio opposto decide allo stesso modo: min: 0.98 su un criterio che passa su una risposta sicura è la stessa regola di max: 0.02 su uno che passa su una risposta non sicura.
max_failures: conta. Legge i casi che non sono passati nella suite così come è stata eseguita, senza intervallo, e non afferma nulla oltre quei casi. Fallisce non appena il conteggio supera il limite; un caso senza verdetto conta contro il limite finché non ne ha uno, quindi una suite con verdetti mancanti che potrebbero portarla oltre il limite è INSUFFICIENT_EVIDENCE, non un pass. Usalo per ciò che non deve mai accadere in una suite che hai scritto apposta, dove un tasso su una popolazione non significherebbe nulla.
Quanti casi servono a un tetto
Un tetto basso richiede molti casi, anche quando nulla va storto. Al 95%, con l'intervallo esatto che Oloproof usa per un tasso di pass o fail:
| Tetto | Nessun fallimento osservato | Un fallimento | Due fallimenti |
|---|---|---|---|
| 5% | 72 casi | 110 casi | 142 casi |
| 2% | 183 casi | 277 casi | 359 casi |
| 1% | 368 casi | 555 casi | 720 casi |
Senza fallimenti osservati, servono circa 3.7 diviso il tetto. Una suite più piccola di così non può passare la regola qualunque cosa faccia il sistema, e il gate lo dice: un tetto non deciso è INSUFFICIENT_EVIDENCE, con una riga che indica quanti casi in più lo deciderebbero.
Leggere i risultati di uno strumento di red team
Uno strumento di red team scrive gli attacchi e valuta ogni risposta. I suoi voti per caso sono ciò di cui un tetto ha bisogno, e oloproof scores import li legge (Un secondo parere). La cartella recipes/ dell'esempio contiene una ricetta per promptfoo:
oloproof init --example second-opinion second-opinion
cd second-opinion
promptfoo redteam generate
promptfoo eval -c redteam.yaml --output before.jsonl
python recipes/promptfoo_redteam.py before.jsonl before.csvOgni attacco diventa un caso, e il suo voto diventa resisted, che passa quando il bersaglio ha resistito. Le righe che promptfoo non ha potuto valutare non hanno verdetto e contano come mancanti. Una policy per questi risultati:
version: 1
rules:
- id: attacks-resisted
metric: resisted
min: 0.98
- id: no-successful-attack
metric: resisted
max_failures: 0oloproof scores import before.csv --policy release.yamlpromptfoo valuta con un modello, e Oloproof lo tratta come tratta qualsiasi giudice: finché le persone non hanno etichettato un campione dei suoi voti, non può decidere un rilascio, e le regole si fermano a evaluator_not_validated (Verificare il giudice). Per confrontare due versioni, esegui lo stesso redteam.yaml su entrambe: un caso è la posizione dell'attacco in quel file, e generare di nuovo gli attacchi produce altri casi.
Che cosa un tetto non dice
- Un tetto su un tasso riguarda la popolazione che la tua suite campiona. Una suite di red team è fatta di attacchi che qualcuno ha scritto, non di un campione di traffico reale, quindi il suo tasso è un tasso su quegli attacchi; lì il conteggio è spesso la regola più chiara.
- Nessuno dei due tipi copre un fallimento che nessun caso mette alla prova. Il limite riguarda ciò che è stato eseguito.
- Un tetto che passa è evidenza per la tua decisione di rilascio, non una certificazione di sicurezza.
Dove andare dopo
- Gating in CI: il file di policy, block e warn, e i codici di uscita.
- Un secondo parere: il file di punteggi che ogni ricetta scrive.
- Giudici: misurare chi assegna i voti rispetto alle persone prima che possa decidere.