Handleidingen
Risicoplafonds
Een plafond begrenst hoe vaak, of hoeveel, er iets misgaat: onveilige antwoorden, gelekte gegevens, aanvallen die slagen, een kostenpost of een latency. Oloproof meet de plafonds die je policy declareert, op de cases die je suite bevat. Het schrijft geen aanvallen en zoekt niet naar nieuwe fouten; als een andere tool dat doet, leest Oloproof de resultaten per case van die tool en beslist het plafond daarop.
Twee soorten plafond
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: beslist op een interval. De regel slaagt wanneer de bovengrens van het interval op of onder het plafond ligt, faalt wanneer de ondergrens erboven ligt, en is INSUFFICIENT_EVIDENCE daartussen. Het interval is tweezijdig op het confidence_level van de policy, standaard 95%, en een plafond leest alleen het bovenste uiteinde, dus een systeem waarvan het werkelijke percentage boven het plafond ligt, slaagt hooguit 2.5% van de keren, wanneer zijn cases onafhankelijk zijn (een suite die clusters declareert, wordt gelezen met een interval dat daar rekening mee houdt, Clusters). Voor een criterium geslaagd of mislukt is het percentage het aandeel cases dat slaagt, dus het criterium moet slagen wanneer het te begrenzen voorval gebeurde (unsafe slaagt op een onveilig antwoord). Een minimumdrempel op het tegenovergestelde criterium beslist hetzelfde: min: 0.98 op een criterium dat slaagt op een veilig antwoord is dezelfde regel als max: 0.02 op een criterium dat slaagt op een onveilig antwoord.
max_failures: telt. Het leest de cases die niet slaagden in de suite zoals die draaide, zonder interval, en beweert niets buiten die cases. Het faalt zodra de telling boven de limiet komt; een case zonder oordeel telt ertegen tot hij er een heeft, dus een suite met ontbrekende oordelen die haar boven de limiet zouden kunnen brengen, is INSUFFICIENT_EVIDENCE, geen geslaagd. Gebruik het voor wat nooit mag gebeuren in een suite die je met opzet schreef, waar een percentage over een populatie niets zou betekenen.
Hoeveel cases een plafond nodig heeft
Een laag plafond heeft veel cases nodig, ook wanneer er niets misgaat. Bij 95%, met het exacte interval dat Oloproof gebruikt voor een percentage geslaagd of mislukt:
| Plafond | Geen fout gezien | Eén fout | Twee fouten |
|---|---|---|---|
| 5% | 72 cases | 110 cases | 142 cases |
| 2% | 183 cases | 277 cases | 359 cases |
| 1% | 368 cases | 555 cases | 720 cases |
Zonder geziene fout is het ongeveer 3.7 gedeeld door het plafond. Een suite die kleiner is, kan de regel niet halen, wat het systeem ook doet, en de gate zegt dat: een onbeslist plafond is INSUFFICIENT_EVIDENCE, met een regel die zegt hoeveel cases meer het zouden beslissen.
De resultaten van een red-teamtool lezen
Een red-teamtool schrijft de aanvallen en beoordeelt elk antwoord. Zijn oordelen per case zijn wat een plafond nodig heeft, en oloproof scores import leest ze (Een second opinion). De map recipes/ van het voorbeeld bevat er een voor 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.csvElke aanval wordt één case, en zijn oordeel wordt resisted, dat slaagt wanneer het doelwit weerstand bood. Rijen die promptfoo niet kon beoordelen, hebben geen oordeel en tellen als ontbrekend. Een policy ervoor:
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 beoordeelt met een model, en Oloproof behandelt het zoals het elke judge behandelt: zolang mensen geen steekproef van zijn oordelen hebben gelabeld, kan het niet over een release beslissen, en de regels stoppen bij evaluator_not_validated (De judge controleren). Draai, om twee versies te vergelijken, dezelfde redteam.yaml op beide: een case is de plaats van de aanval in dat bestand, en de aanvallen opnieuw genereren levert andere cases op.
Wat een plafond niet zegt
- Een plafond op een percentage gaat over de populatie waaruit je suite een steekproef trekt. Een red-teamsuite bestaat uit aanvallen die iemand schreef, niet uit een steekproef van echt verkeer, dus haar percentage is een percentage over die aanvallen; de telling is daar vaak de duidelijkere regel.
- Geen van beide soorten dekt een fout die geen case op de proef stelt. De grens gaat over wat gedraaid is.
- Een geslaagd plafond is bewijs voor je releasebeslissing, geen certificering van veiligheid.
Verder lezen
- CI gaten: het policybestand, block en warn, en exitcodes.
- Een second opinion: het scorebestand dat elk recept schrijft.
- Judges: een beoordelaar aan mensen meten voordat hij mag beslissen.