Skip to content

الأدلة الإرشادية

الشرائح

قد يظل المعدل الإجمالي ثابتًا بينما ينهار جزء واحد من مجموعة الاختبار. الشريحة جزء مُعلَن من مجموعة الاختبار يُقاس وحده، فيصبح الانهيار مرئيًا. وتأتي الشرائح مع انضباطين اثنين، لأن النظر في أجزاء كثيرة من مجموعة الاختبار هو الطريقة التي يعثر بها التقييم على الضجيج فيسمّيه اكتشافًا.

إعلان الشرائح

تُسمّى الشريحة في oloproof.yaml. والنوع الشائع يقرأ مفتاحًا من metadata في كل حالة:

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

كل أنواع الشرائح التي يقبلها الملف:

الشريحةتجمع الحالات حسبتحتاج إلى
metadata.<key>قيمة ذلك المفتاح في metadata الخاصة بالحالةالمفتاح على الحالات
relevant_positionالموضع الذي استُرجع فيه أول مقطع نصي ذي صلة: top_k أو beyond_top_k أو not_retrievedنظام RAG وexpected.relevant
context_truncatedما إذا كانت ميزانية الرموز قد أسقطت مقاطع نصية من السياقنظام RAG مع token_budget
first_toolالأداة التي استدعاها الوكيل أولًاسجل agent_trajectory/v1
repeated_actionما إذا كرر الوكيل استدعاءً مطابقًاسجل agent_trajectory/v1
routeالوكلاء الذين أمسكوا بزمام التحكم، مكتوبة بالشكل triage>billingسجل agent_trajectory/v1 تسمّي خطواته وكلاءها
trajectory_length:4,8عدد الخطوات، مقسَّمًا إلى فئات عند حدود تعلنهاسجل agent_trajectory/v1
confidence:0.5الدرجة التي أعطاها النموذج للصف، مقسَّمة إلى نطاقات عند حدود تعلنهاكتلة predictive:

الاسم الذي لا يتعرّف عليه الملف يُرفض قبل تشغيل أي شيء:

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

الشرائح تُبلِّغ ولا تحجب أبدًا

يطبع التشغيل شرائحه تحت عنوانها الخاص. مرشَّحٌ أصلح الإنجليزية وأفسد الفرنسية:

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

عنوان الجدول يقول Slices (exploratory; never gated)، وهو يعني ذلك حقًا. كان المعدل الإجمالي لذلك التشغيل 77.5% وسمحت بوابته بالإصدار، بينما كانت الفرنسية عند ثلث ذلك. قاعدة الإصدار على التشغيل تسمّي مقياسًا إجماليًا، والقاعدة المقصورة على شريحة من تشغيل واحد تُرفض:

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

ذلك هو الانضباط الأول. مجموعة الاختبار المقسَّمة بعشر طرق لديها عشر فرص لإظهار فرق بالصدفة، والبوابة التي تقرأ الشرائح ستحجب الإصدارات بسبب الضجيج. الشرائح وُجدت لتحديد أين ينبغي أن تنظر.

أي الشرائح تبرز

يرتّب التشغيل أيضًا شرائحه مقابل معدل التشغيل نفسه، ويُعلِّم تلك التي تختلف عنه، باستخدام إجراء Benjamini-Yekutieli كي تبقى نسبة العلامات الخاطئة مضبوطة مهما تداخلت الشرائح. يعرض جدول الشرائح في الطرفية كل واحدة منها في عمود BY mark الخاص به — marked أو not marked، أو فارغًا لشريحة أرقّ من أن تُختبر — مع قيمة p التي رُتِّبت بها. وهي أيضًا مخزَّنة في التشغيل ومُصدَّرة في run.json ضمن حزمته:

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}

الشريحة غير المُعلَّمة لم يثبت أنها تطابق التشغيل؛ كل ما في الأمر أنها لم تُنبَّه إليها. العلامة توجّه الانتباه ولا تصل إلى أي بوابة.

الدعم

min_slice_support هو أقل عدد من الحالات تحتاجه الشريحة قبل أن تحصل على فترة. تحته يُعرض التقدير وتُحجب الفترة. من مشروع ضبطه على 4:

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

القيمة الافتراضية 30. ومجموعة الاختبار الصغيرة التي تخفضها تحصل على فترات للشرائح الرقيقة، وتلك الفترات عريضة بما يكفي لتقول ذلك بنفسها.

الحجب بالبوابة على شريحة، داخل مقارنة

حيث يجب حقًا ألا تتراجع شريحة ما، يمكن قصر قاعدة مقارنة عليها. النطاق هو اسم الشريحة مسبوقًا بـ slice/، وتنص القاعدة على الدعم الذي تحتاجه قبل قراءة أي أدلة:

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

إذا كُتب النطاق دون البادئة، يُرفض:

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>

ومعها، المرشَّح أعلاه مقابل خط الأساس الخاص به:

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)

ذلك هو الانضباط الثاني. القاعدة المقصورة على شريحة لا تحجب إلا داخل مُدخَل في families:، الذي يسرد القواعد التي تُضبط حالات فشلها الزائفة معًا. وholm هو التصحيح: القاعدة التي تفشل ضمن العائلة يُعاد اختبارها عند مستوى أشد صرامة، يُحدَّد بعدد القواعد التي تضمها العائلة، كي لا تتراكم ثلاث فرص للفشل بالصدفة لتصبح ثلاثة أضعاف المخاطرة. عند مستوى ثقة 0.95 وثلاث قواعد، يُعاد اختبار أقوى فشل عند 0.05 / 3، والذي يليه عند 0.05 / 2، والأخير عند 0.05. لا يُعاد اختبار إلا حالات الفشل: فالنجاح ليس رفضًا ولا يحتاج إلى تصحيح. هنا فشلت قاعدة واحدة، وأُعيد اختبارها عند 0.01667، وما زالت الفرنسية تفشل. لم تستطع القاعدة الإجمالية أن تحسم، والنصيحة تحتها تقول إن مزيدًا من الحالات لن يؤدي إلا إلى دفعها نحو FAIL.

القاعدة الخاصة بشريحة خارج أي عائلة تُرفض:

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

إلى أين بعد ذلك

المُصنِّفات ونماذج الانحدار الشرائح غير المعتمدة على البيانات الوصفية.