Skip to content

Kılavuzlar

Dilimler

Paketin bir bölümü çökerken genel bir oran sabit kalabilir. Dilim, paketin bildirilmiş ve kendi başına ölçülen bir bölümüdür; böylece çöküş görünür olur. Dilimler iki disiplinle birlikte gelir, çünkü bir paketin birçok bölümüne bakmak, bir değerlendirmenin gürültüyü bulup ona bulgu demesinin yoludur.

Dilimleri bildirmek

Bir dilim oloproof.yaml içinde adlandırılır. Yaygın tür, her vakanın metadata alanından bir anahtar okur:

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"}}

Dosyanın kabul ettiği her dilim türü:

DilimVakaları neye göre gruplarGerektirdiği
metadata.<key>vakanın metadata alanındaki o anahtarın değerivakalarda o anahtar
relevant_positionilk ilgili pasajın nerede getirildiği: top_k, beyond_top_k ya da not_retrievedbir RAG sistemi ve expected.relevant
context_truncatedbir token bütçesinin bağlamdan pasaj düşürüp düşürmediğitoken_budget içeren bir RAG sistemi
first_toolbir ajanın ilk çağırdığı araçbir agent_trajectory/v1 kaydı
repeated_actionbir ajanın aynı çağrıyı tekrarlayıp tekrarlamadığıbir agent_trajectory/v1 kaydı
routekontrolü elinde tutan ajanlar, triage>billing biçiminde yazılıradımları kendi ajanlarını adlandıran bir agent_trajectory/v1 kaydı
trajectory_length:4,8bildirdiğiniz sınırlarda gruplanmış adım sayısıbir agent_trajectory/v1 kaydı
confidence:0.5bir modelin satıra verdiği skor, bildirdiğiniz sınırlarda bantlanmışbir predictive: bloğu

Dosyanın tanımadığı bir ad, herhangi bir şey çalışmadan önce reddedilir:

Configuration error: unknown slice 'lang'; declare metadata.<key>, relevant_position, context_truncated, first_tool, repeated_action, route, trajectory_length:<bounds> or confidence:<bounds>

Dilimler raporlar, asla kapı olmaz

Bir çalıştırma dilimlerini kendi başlıkları altında yazdırır. İngilizceyi düzeltip Fransızcayı bozan bir aday:

│ 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  │

Tablonun başlığı Slices (exploratory; never gated) der ve bunu gerçekten kasteder. O çalıştırmanın genel oranı %77,5 idi ve kapısı sürüme izin verdi; Fransızca ise bunun üçte biri düzeyindeydi. Bir çalıştırma üzerindeki sürüm kuralı genel bir metriği adlandırır ve tek bir çalıştırmanın bir dilimiyle sınırlı bir kural reddedilir:

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

Bu birinci disiplindir. On şekilde dilimlenmiş bir paketin tesadüfen bir fark göstermek için on şansı vardır ve dilimleri okuyan bir kapı sürümleri gürültü yüzünden engellerdi. Dilimler nereye bakılacağını bulmak içindir.

Hangi dilimler öne çıkıyor

Çalıştırma ayrıca dilimlerini çalıştırmanın kendi oranına göre sıralar ve farklı olanları işaretler; bunu Benjamini-Yekutieli prosedürüyle yapar, böylece dilimler nasıl örtüşürse örtüşsün yanlış işaretlerin payı kontrol altında kalır. Terminalin dilim tablosu her birini BY mark sütununda gösterir — marked, not marked ya da test edilemeyecek kadar ince bir dilim için boş — ve sıralamada kullanılan p-değerini de verir. Bunlar ayrıca çalıştırmada saklanır ve çalıştırmanın bundle'ı içindeki run.json dosyasına dışa aktarılır:

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}

İşaretlenmemiş bir dilimin çalıştırmayla uyuştuğu gösterilmiş değildir; yalnızca işaretlenmemiştir. Bir işaret dikkati yönlendirir ve hiçbir kapıya ulaşmaz.

Destek

min_slice_support, bir dilimin güven aralığı almadan önce ihtiyaç duyduğu en az vaka sayısıdır. Bunun altında tahmin gösterilir ve güven aralığı verilmez. Bunu 4 olarak ayarlayan bir projeden:

│ metadata.topic=account          │ answer_correct  │ 100.0%   │                 │ 1 / 1 observed · 0 missing · 0 excluded · exploratory · support 1 │
│                                 │                 │          │                 │ < 4, no interval                                                  │

Varsayılan değer 30'dur. Bunu düşüren küçük bir paket ince dilimlerde güven aralıkları alır ve bu aralıklar bunu kendileri söyleyecek kadar geniştir.

Bir karşılaştırmada dilime göre kapı

Bir dilimin gerçekten gerilememesi gereken yerlerde, bir karşılaştırma kuralı o dilimle sınırlanabilir. Kapsam, dilimin adının önüne slice/ eklenerek yazılır ve kural, herhangi bir kanıt okunmadan önce ihtiyaç duyduğu desteği belirtir:

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]}

Önek olmadan yazılan kapsam reddedilir:

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>

Önekle birlikte, yukarıdaki aday temeline karşı:

oloproof compare CANDIDATE_RUN_ID BASELINE_RUN_ID --policy compare.yaml
Comparison 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)

Bu ikinci disiplindir. Bir dilimle sınırlı kural yalnızca bir families: girdisinin içinde kapı olur; bu girdi, yanlış başarısızlıkları birlikte kontrol edilen kuralları listeler. Düzeltme holm'dur: ailede başarısız olan bir kural, ailenin kaç kural barındırdığına göre belirlenen daha katı bir düzeyde yeniden test edilir; böylece tesadüfen başarısız olmak için üç şans, üç katı riske dönüşmez. 0.95 güven düzeyinde ve üç kuralla en güçlü başarısızlık 0.05 / 3 düzeyinde, bir sonraki 0.05 / 2 düzeyinde, sonuncusu 0.05 düzeyinde yeniden test edilir. Yalnızca başarısızlıklar yeniden test edilir: bir geçiş bir ret değildir ve düzeltme gerektirmez. Burada bir kural başarısız oldu, 0.01667 düzeyinde yeniden test edildi ve Fransızca yine başarısız oluyor. Genel kural karar veremedi ve altındaki öneri, daha fazla vakanın onu yalnızca FAIL yönüne götüreceğini söylüyor.

Hiçbir aileye ait olmayan bir dilim kuralı reddedilir:

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 correction

Sonraki adımlar

anlatır.

Sınıflandırıcılar ve regresörler metadata dışındaki dilimleri kullanır.