跳至主要內容

指南

風險上限

上限約束的是某件事出錯的頻率或程度:不安全的回答、外洩的資料、得逞的攻擊、成本或延遲。Oloproof 在你的測試套件所包含的案例上,量測你的政策所宣告的上限。它不撰寫攻擊,也不搜尋新的失敗;如果另一個工具做了這些,Oloproof 會讀取該工具逐案例的結果,並根據這些結果對上限做出判定。

兩種上限

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: 0

max: 依據區間做出判定。當區間上界不高於上限時規則通過,當區間下界高於上限時規則失敗,介於兩者之間時為 INSUFFICIENT_EVIDENCE。該區間是政策的 confidence_level(預設 95%)下的雙側區間,而上限只讀取它的上界,因此在案例彼此獨立時,真實比率高於上限的系統通過的機率至多為 2.5%(宣告了叢集的測試套件會以一個考慮到叢集的區間來讀取,見叢集案例)。對於通過或失敗判準,比率是通過的案例所占的比例,因此當需要約束的事情發生時,該判準必須判為通過(unsafe 在回答不安全時通過)。在相反判準上設下限,判定是一樣的:在回答安全時通過的判準上設 min: 0.98,與在回答不安全時通過的判準上設 max: 0.02 是同一條規則。

max_failures: 則是計數。它讀取測試套件依實際執行情況未通過的案例,不使用區間,也不對這些案例之外的任何東西做出主張。一旦計數超過限度,它就失敗;沒有判定的案例在得到判定之前都以不利情況計入,因此缺少的判定可能使計數超過限度的測試套件是 INSUFFICIENT_EVIDENCE,而不是通過。請把它用於在你特意撰寫的測試套件中絕不能發生的事情,在這種測試套件上,對母體的比率毫無意義。

一個上限需要多少案例

即使什麼都沒出錯,一個低上限也需要很多案例。在 95% 下,使用 Oloproof 對通過或失敗比率所用的精確區間:

上限未見失敗一次失敗兩次失敗
5%72 個案例110 個案例142 個案例
2%183 個案例277 個案例359 個案例
1%368 個案例555 個案例720 個案例

在未見失敗時,大約需要 3.7 除以上限那麼多的案例。比這更小的測試套件,無論系統表現如何都無法通過該規則,閘門也會如實說明:未能判定的上限為 INSUFFICIENT_EVIDENCE,並附上一行說明還需要多少案例才能做出判定。

讀取紅隊工具的結果

紅隊工具負責撰寫攻擊並為每個回應評分。它逐案例的評分正是上限所需要的,oloproof scores import 會讀取它們(第二意見)。範例的 recipes/ 資料夾中有一個用於 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.csv

每次攻擊成為一個案例,它的評分成為 resisted,當目標抵擋住攻擊時通過。promptfoo 無法評分的列不帶判定,視為缺失。針對它的政策如下:

version: 1
rules:
  - id: attacks-resisted
    metric: resisted
    min: 0.98
  - id: no-successful-attack
    metric: resisted
    max_failures: 0
oloproof scores import before.csv --policy release.yaml

promptfoo 以模型評分,Oloproof 對待它就像對待任何評審一樣:在人為它的評分抽樣做標註之前,它不能決定發布,規則會停在 evaluator_not_validated(檢查評審)。要比較兩個版本,請在兩者上執行同一個 redteam.yaml:一個案例就是攻擊在該檔案中的位置,重新產生攻擊會產生另一些案例。

上限不能說明什麼

  • 比率上限針對的是你的測試套件所抽樣的母體。紅隊測試套件是由某人撰寫的攻擊,而不是真實流量的樣本,因此它的比率是這些攻擊上的比率;在這種情況下,計數往往是更清楚的規則。
  • 兩種上限都不涵蓋沒有任何案例觸及的失敗。約束只針對實際執行的內容。
  • 通過的上限是你做出發布決策的證據,而不是安全性的認證。

下一步

  • CI 閘門:政策檔案、阻擋與警告,以及結束代碼。
  • 第二意見:每個轉換腳本寫出的分數檔案。
  • 評審:在評分者獲准做出判定之前,如何與人比對量測它。