Hướng dẫn
Lát cắt
Một tỷ lệ tổng thể có thể giữ ổn định trong khi một phần của bộ kiểm thử sụp đổ. Lát cắt là một phần đã khai báo của bộ kiểm thử, được đo riêng, để sự sụp đổ đó hiện ra. Lát cắt đi kèm hai nguyên tắc, vì nhìn vào nhiều phần của một bộ kiểm thử chính là cách một đánh giá tìm thấy nhiễu và gọi đó là phát hiện.
Khai báo lát cắt
Một lát cắt được đặt tên trong oloproof.yaml. Loại phổ biến đọc một khóa từ metadata của mỗi trường hợp:
slices: [metadata.lang, metadata.topic]
min_slice_support: 30{"id": "c000", "input": {"lang": "en", "topic": "billing", "hard": false, "n": 0}, "expected": {"label": "yes"}, "metadata": {"lang": "en", "topic": "billing"}}Mọi loại lát cắt mà tệp chấp nhận:
| Lát cắt | Nhóm các trường hợp theo | Cần |
|---|---|---|
| metadata.<key> | giá trị của khóa đó trong metadata của trường hợp | khóa đó có trên các trường hợp |
| relevant_position | vị trí mà đoạn văn liên quan đầu tiên được truy xuất: top_k, beyond_top_k hoặc not_retrieved | một hệ thống RAG và expected.relevant |
| context_truncated | liệu ngân sách token có loại bỏ đoạn văn khỏi ngữ cảnh hay không | một hệ thống RAG có token_budget |
| first_tool | công cụ mà agent gọi đầu tiên | một bản ghi agent_trajectory/v1 |
| repeated_action | liệu agent có lặp lại một lời gọi giống hệt hay không | một bản ghi agent_trajectory/v1 |
| route | các agent đã giữ quyền điều khiển, viết là triage>billing | một bản ghi agent_trajectory/v1 có các bước nêu tên agent của chúng |
| trajectory_length:4,8 | số bước, chia nhóm theo các mốc bạn khai báo | một bản ghi agent_trajectory/v1 |
| confidence:0.5 | điểm số mà mô hình gán cho hàng, chia dải theo các mốc bạn khai báo | một khối predictive: |
Một tên mà tệp không nhận ra sẽ bị từ chối trước khi bất cứ thứ gì chạy:
Configuration error: unknown slice 'lang'; declare metadata.<key>, relevant_position, context_truncated, first_tool, repeated_action, route, trajectory_length:<bounds> or confidence:<bounds>Lát cắt để báo cáo, không bao giờ làm cổng
Một lần chạy in các lát cắt của nó dưới một tiêu đề riêng. Một ứng viên đã sửa tiếng Anh và làm hỏng tiếng Pháp:
│ metadata.lang=de │ ok │ 100.0% │ [95.4%, 100.0%] │ 80 / 80 observed · 0 missing · 0 excluded · exploratory · support 80 │
│ metadata.lang=en │ ok │ 100.0% │ [95.4%, 100.0%] │ 80 / 80 observed · 0 missing · 0 excluded · exploratory · support 80 │
│ metadata.lang=fr │ ok │ 32.5% │ [22.4%, 43.9%] │ 26 / 80 observed · 0 missing · 0 excluded · exploratory · support 80 │
│ metadata.topic=account │ ok │ 88.3% │ [81.2%, 93.5%] │ 106 / 120 observed · 0 missing · 0 excluded · exploratory · support 120 │
│ metadata.topic=billing │ ok │ 66.7% │ [57.4%, 75.1%] │ 80 / 120 observed · 0 missing · 0 excluded · exploratory · support 120 │Tiêu đề của bảng ghi Slices (exploratory; never gated), và đúng là như vậy. Tỷ lệ tổng thể của lần chạy đó là 77.5% và cổng của nó cho phép phát hành, trong khi tiếng Pháp chỉ đạt một phần ba mức đó. Một quy tắc phát hành trên một lần chạy nêu tên một chỉ số tổng thể, và một quy tắc có phạm vi là một lát cắt của một lần chạy đơn lẻ sẽ bị từ chối:
Configuration error: release rule 'fr-floor' targets slice/metadata.lang=fr; a run's slice results are exploratory, and only a comparison rule gates a slice, inside a family with a correctionĐó là nguyên tắc thứ nhất. Một bộ kiểm thử được cắt theo mười cách có mười cơ hội cho thấy một chênh lệch do tình cờ, và một cổng đọc lát cắt sẽ chặn các lần phát hành vì nhiễu. Lát cắt dùng để tìm ra chỗ cần nhìn vào.
Những lát cắt nổi bật
Lần chạy cũng xếp hạng các lát cắt so với tỷ lệ của chính lần chạy và đánh dấu những lát cắt khác biệt, bằng thủ tục Benjamini-Yekutieli để tỷ lệ đánh dấu sai được kiểm soát dù các lát cắt chồng lấn nhau thế nào. Bảng lát cắt trên terminal hiển thị từng lát cắt trong cột BY mark — marked, not marked, hoặc để trống với lát cắt quá mỏng để kiểm định — kèm giá trị p được dùng để xếp hạng. Chúng cũng được lưu trong lần chạy và được xuất trong run.json của gói dữ liệu của lần chạy:
jq -c '.run.slice_metrics[] | {scope, estimate, fdr_marked, fdr_p_value}' .oloproof/bundles/RUN_ID/run.json{"scope":"slice/metadata.lang=de","estimate":1.0,"fdr_marked":true,"fdr_p_value":0.0001}
{"scope":"slice/metadata.lang=en","estimate":1.0,"fdr_marked":true,"fdr_p_value":0.0001}
{"scope":"slice/metadata.lang=fr","estimate":0.325,"fdr_marked":true,"fdr_p_value":0.0001}
{"scope":"slice/metadata.topic=account","estimate":0.8833333333333333,"fdr_marked":true,"fdr_p_value":0.0037003540039062493}
{"scope":"slice/metadata.topic=billing","estimate":0.6666666666666666,"fdr_marked":true,"fdr_p_value":0.008582189941406249}Một lát cắt không được đánh dấu không có nghĩa là đã được chứng minh khớp với lần chạy; nó chỉ không bị gắn cờ. Một dấu đánh dấu hướng sự chú ý và không tác động tới cổng nào.
Độ hỗ trợ
min_slice_support là số trường hợp tối thiểu mà một lát cắt cần trước khi có khoảng tin cậy. Dưới mức đó, ước lượng được hiển thị và khoảng tin cậy bị giữ lại. Từ một dự án đặt giá trị này là 4:
│ metadata.topic=account │ answer_correct │ 100.0% │ │ 1 / 1 observed · 0 missing · 0 excluded · exploratory · support 1 │
│ │ │ │ │ < 4, no interval │Giá trị mặc định là 30. Một bộ kiểm thử nhỏ hạ giá trị này sẽ có khoảng tin cậy trên các lát cắt mỏng, và những khoảng đó đủ rộng để tự nói lên điều đó.
Làm cổng trên một lát cắt, trong một so sánh
Khi một lát cắt thực sự không được phép thoái lui, một quy tắc so sánh có thể được giới hạn phạm vi vào nó. Phạm vi là tên của lát cắt có tiền tố slice/, và quy tắc nêu độ hỗ trợ mà nó cần trước khi đọc bất kỳ bằng chứng nào:
version: 1
rules:
- {id: overall, metric: ok, kind: non_inferiority, margin: 0.05}
- {id: fr-not-worse, metric: ok, kind: non_inferiority, margin: 0.05, scope: slice/metadata.lang=fr, min_support: 30}
- {id: en-not-worse, metric: ok, kind: non_inferiority, margin: 0.05, scope: slice/metadata.lang=en, min_support: 30}
- {id: de-not-worse, metric: ok, kind: non_inferiority, margin: 0.05, scope: slice/metadata.lang=de, min_support: 30}
families:
- {id: languages, correction: holm, rules: [fr-not-worse, en-not-worse, de-not-worse]}Nếu viết không có tiền tố, phạm vi sẽ bị từ chối:
Configuration error: rule 'fr-not-worse' has unknown scope 'metadata.lang=fr'; a comparison rule decides on the global scope or on slice/<name>=<value>Có tiền tố, ứng viên ở trên so với đường cơ sở của nó:
oloproof compare CANDIDATE_RUN_ID BASELINE_RUN_ID --policy compare.yamlComparison sha256:cd2693b505e645919d397e8d7a87eaf0a841ab0c11c0b95484912363381b72e0 of run_01M3C46CYA163JSMSA5QZ6KAZA against run_01M3C46B3PSNP1ZTC8X05AG0GE · 240 paired cases
ok: -5.0 points [-15.2, +4.9] · 240 paired · 0 missing · 0 excluded
ok [slice/metadata.lang=de]: +8.8 points [-0.5, +21.5] · 80 paired · 0 missing · 0 excluded · exploratory · support 80
ok [slice/metadata.lang=en]: +18.8 points [+7.0, +34.4] · 80 paired · 0 missing · 0 excluded · exploratory · support 80
ok [slice/metadata.lang=fr]: -42.5 points [-60.3, -26.8] · 80 paired · 0 missing · 0 excluded · exploratory · support 80
ok [slice/metadata.topic=account]: +7.5 points [+0.9, +17.1] · 120 paired · 0 missing · 0 excluded · exploratory · support 120
ok [slice/metadata.topic=billing]: -17.5 points [-35.0, -0.1] · 120 paired · 0 missing · 0 excluded · exploratory · support 120
Decisions
overall ok non-inferiority, margin 5.0 points INSUFFICIENT_EVIDENCE interval_overlaps_margin
no sample size would make this PASS: the difference itself (-5.0 points) is outside the margin, so more cases would move it toward FAIL
fr-not-worse ok non-inferiority, margin 5.0 points FAIL upper_bound_below_margin
en-not-worse ok non-inferiority, margin 5.0 points PASS lower_bound_above_margin
de-not-worse ok non-inferiority, margin 5.0 points PASS lower_bound_above_margin
Family languages: Holm over 3 rules; adjusted levels 0.01667
Gate: BLOCK (exit 1)Đó là nguyên tắc thứ hai. Một quy tắc có phạm vi lát cắt chỉ làm cổng bên trong một mục families:, mục này liệt kê các quy tắc mà các thất bại giả của chúng được kiểm soát cùng nhau. holm là phép hiệu chỉnh: một quy tắc trong họ bị thất bại sẽ được kiểm định lại ở một mức nghiêm ngặt hơn, tùy theo số quy tắc mà họ đó chứa, để ba cơ hội thất bại do tình cờ không cộng lại thành ba lần rủi ro. Ở mức tin cậy 0.95 và ba quy tắc, thất bại mạnh nhất được kiểm định lại ở 0.05 / 3, thất bại tiếp theo ở 0.05 / 2, và thất bại cuối cùng ở 0.05. Chỉ các thất bại mới được kiểm định lại: một lần đạt không phải là một sự bác bỏ và không cần hiệu chỉnh. Ở đây một quy tắc thất bại, nó được kiểm định lại ở 0.01667, và tiếng Pháp vẫn thất bại. Quy tắc tổng thể không thể quyết định, và lời gợi ý bên dưới nó nói rằng thêm trường hợp chỉ đẩy nó về phía FAIL.
Một quy tắc lát cắt nằm ngoài mọi họ sẽ bị từ chối:
Configuration error: slice rule 'fr-not-worse' belongs to no family; slice rules multiply the chances of a false FAIL, so they gate only inside a family with a correctionTiếp theo
- Quy tắc so sánh trình bày các loại quy tắc có thể đặt phạm vi.
- Đánh giá RAG, Agent và công cụ và
Bộ phân loại và mô hình hồi quy sử dụng các lát cắt không dựa trên metadata.