Hướng dẫn
Mức trần rủi ro
Một mức trần giới hạn tần suất, hoặc mức độ, mà một điều gì đó đi sai: các câu trả lời không an toàn, dữ liệu bị rò rỉ, các cuộc tấn công thành công, một chi phí hoặc một độ trễ. Oloproof đo các mức trần mà chính sách của bạn khai báo, trên các trường hợp mà bộ kiểm thử của bạn chứa. Nó không viết các cuộc tấn công hay tìm kiếm những thất bại mới; nếu một công cụ khác làm việc đó, Oloproof đọc các kết quả theo từng trường hợp của công cụ đó và quyết định mức trần dựa trên chúng.
Hai loại mức trần
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: quyết định dựa trên một khoảng. Quy tắc đạt khi cận trên của khoảng bằng hoặc dưới mức trần, thất bại khi cận dưới của khoảng nằm trên mức trần, và là INSUFFICIENT_EVIDENCE ở giữa hai trường hợp đó. Khoảng là khoảng hai phía ở confidence_level của chính sách, mặc định là 95%, và một mức trần chỉ đọc đầu trên của khoảng, nên một hệ thống có tỷ lệ thực nằm trên mức trần sẽ đạt nhiều nhất 2.5% số lần, khi các trường hợp của nó độc lập với nhau (một bộ kiểm thử khai báo các cụm được đọc bằng một khoảng có tính đến các cụm đó, Cụm). Với một tiêu chí đạt hoặc không đạt, tỷ lệ là phần các trường hợp đạt, nên tiêu chí phải đạt khi điều cần giới hạn đã xảy ra (unsafe đạt trên một câu trả lời không an toàn). Một mức sàn trên tiêu chí ngược lại cũng quyết định như vậy: min: 0.98 trên một tiêu chí đạt khi câu trả lời an toàn là cùng một quy tắc với max: 0.02 trên một tiêu chí đạt khi câu trả lời không an toàn.
max_failures: đếm. Nó đọc các trường hợp không đạt trong bộ kiểm thử đúng như khi bộ đó đã chạy, không có khoảng nào, và không khẳng định điều gì vượt ra ngoài những trường hợp đó. Nó thất bại ngay khi số đếm vượt quá giới hạn; một trường hợp chưa có phán quyết được tính là bất lợi cho quy tắc cho đến khi nó có phán quyết, nên một bộ kiểm thử có những phán quyết còn thiếu có thể đẩy số đếm vượt quá giới hạn là INSUFFICIENT_EVIDENCE, không phải một lần đạt. Hãy dùng nó cho những gì không bao giờ được xảy ra trong một bộ kiểm thử mà bạn viết có chủ đích, nơi một tỷ lệ trên một tổng thể sẽ chẳng có ý nghĩa gì.
Một mức trần cần bao nhiêu trường hợp
Một mức trần thấp cần nhiều trường hợp, ngay cả khi không có gì đi sai. Ở mức 95%, với khoảng chính xác mà Oloproof dùng cho một tỷ lệ đạt hoặc không đạt:
| Mức trần | Không thấy thất bại nào | Một thất bại | Hai thất bại |
|---|---|---|---|
| 5% | 72 trường hợp | 110 trường hợp | 142 trường hợp |
| 2% | 183 trường hợp | 277 trường hợp | 359 trường hợp |
| 1% | 368 trường hợp | 555 trường hợp | 720 trường hợp |
Khi không thấy thất bại nào, số trường hợp cần có vào khoảng 3.7 chia cho mức trần. Một bộ kiểm thử nhỏ hơn thế không thể đạt quy tắc dù hệ thống làm gì đi nữa, và cổng nói rõ điều đó: một mức trần chưa được quyết định là INSUFFICIENT_EVIDENCE, kèm một dòng cho biết cần thêm bao nhiêu trường hợp nữa để quyết định nó.
Đọc kết quả của một công cụ red team
Một công cụ red team viết các cuộc tấn công và chấm từng phản hồi. Các điểm chấm theo từng trường hợp của nó chính là những gì một mức trần cần, và oloproof scores import đọc chúng (Ý kiến thứ hai). Thư mục recipes/ của ví dụ chứa một công thức chuyển đổi cho 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.csvMỗi cuộc tấn công trở thành một trường hợp, và điểm chấm của nó trở thành resisted, đạt khi mục tiêu đã kháng cự được. Các hàng mà promptfoo không chấm được không mang phán quyết nào và được tính là thiếu. Một chính sách cho nó:
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 chấm bằng một mô hình, và Oloproof đối xử với nó như với bất kỳ giám khảo nào: cho đến khi con người đã gán nhãn một mẫu các điểm chấm của nó, nó không thể quyết định một bản phát hành, và các quy tắc dừng lại ở evaluator_not_validated (Kiểm tra giám khảo). Để so sánh hai phiên bản, hãy chạy cùng một redteam.yaml trên cả hai: một trường hợp là vị trí của cuộc tấn công trong tệp đó, và việc tạo lại các cuộc tấn công sẽ tạo ra những trường hợp khác.
Những gì một mức trần không nói
- Một mức trần trên tỷ lệ nói về tổng thể mà bộ kiểm thử của bạn lấy mẫu. Một bộ kiểm thử red team là những cuộc tấn công do ai đó viết, không phải một mẫu của lưu lượng thực, nên tỷ lệ của nó là một tỷ lệ trên những cuộc tấn công đó; ở đó, số đếm thường là quy tắc rõ ràng hơn.
- Không loại nào bao quát một thất bại mà không trường hợp nào thử đến. Giới hạn chỉ nói về những gì đã được chạy.
- Một mức trần đạt là bằng chứng cho quyết định phát hành của bạn, không phải một chứng nhận về sự an toàn.
Tiếp theo
- Làm cổng cho một bản phát hành: tệp chính sách, chặn và cảnh báo, và các mã thoát.
- Ý kiến thứ hai: tệp điểm số mà mọi công thức chuyển đổi ghi ra.
- Giám khảo: đo một người chấm so với con người trước khi nó được phép quyết định.