الانتقال إلى المحتوى

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

رأي ثانٍ في درجات أداة أخرى

ارتفعت درجة التقييم لديك. هل الارتفاع حقيقي؟ وهل يمكنك الوثوق بالحَكَم الذي قاسها؟ إن كنت تقيّم بالفعل بأداة أخرى، فصدِّر نتائجها لكل حالة قبل تغيير ما وبعده، ويجيب Oloproof عن السؤالين معًا بناءً عليها دون أن يعيد تشغيل أي شيء.

ما الذي يقرؤه

ملف واحد لكل نسخة من النظام، بصيغة CSV أو JSON Lines، فيه صف واحد لكل حالة ومعيار:

العمودما يحتويه
case_idمعرِّف الحالة. لا يُقرَن ملفان إلا على معرِّف موجود في كليهما
criterionاسم المقياس، الذي يصبح المقياس الذي تسمّيه القاعدة
scoreعدد على مدى المقياس، أو فارغ إن لم تمنح الأداة تلك الحالة درجة
passedtrue أو false بدلًا من الدرجة، أو فارغ
score_min، score_maxالمدى الذي تقع عليه الدرجة (0 و1 في معظم الأدوات)، وهو مطلوب مع الدرجة
judge، judge_versionالنموذج الذي حكم، إن كان الحاكم نموذجًا. اختياري

لا يُقرأ شيء آخر، ويُرفض الملف الذي فيه أي عمود آخر: فالملف يحمل معرِّفات الحالات والدرجات، ولا يحمل أبدًا سؤالًا أو إجابة أو أي محتوى آخر. وتحوّل الوصفات أدناه نتائج كل أداة إلى هذا الملف.

شغِّله

oloproof init --example second-opinion second-opinion
cd second-opinion

يحتوي المثال على تصديرين لأمانة (faithfulness) مساعد دعم على 150 سؤالًا، قبل تغيير في الموجِّه (prompt) وبعده، كما منحها حَكَم أداة أخرى درجاتها: درجة من 0 إلى 1، وحكمه بالنجاح أو الإخفاق عند 0.7. وmake_exports.py هو المحاكاة التي كتبتهما. ارتفع متوسط الدرجة بنحو 0.02.

oloproof scores import before.csv after.csv --policy release.yaml
faithfulness: +0.023 [-0.024, +0.068] · 150 paired · 0 missing · 0 excluded
faithfulness_passed: +5.3 points [-6.9, +18.0] · 150 paired · 0 missing · 0 excluded
Decisions
  score-went-up  faithfulness  superiority  INSUFFICIENT_EVIDENCE  evaluator_not_validated
  more-answers-pass  faithfulness_passed  superiority  INSUFFICIENT_EVIDENCE  evaluator_not_validated
Gate: BLOCK (exit 3)
score-went-up, more-answers-pass: the judge (or model or custom evaluator) behind these rules has not been measured against people yet, so it may not decide.

صار كل ملف تشغيلًا، وقورن التشغيلان حالةً بحالة. وللإجابة شقّان.

  • هل الارتفاع حقيقي؟ ليس بعد. ارتفعت الدرجة بمقدار 0.023، لكن الفترة تمتد من 0.024 أدنى إلى 0.068 أعلى: فمع 150 سؤالًا لا يمكن تمييز تغيير بهذا الصغر عن الضجيج. وارتفعت نسبة الإجابات التي يُجيزها الحَكَم 5.3 نقطة، بفترة تمتد من 6.9 نقطة أدنى إلى 18.0 أعلى.
  • هل يمكنك الوثوق بالحَكَم؟ لم يفحصه أحد. لا يسمح release.yaml لحَكَم بأن يحسم إصدارًا إلا بعد أن تقيسه وسوم الأشخاص (require_validated_evaluators: true)، لذا تتوقف القاعدتان كلتاهما عند evaluator_not_validated قبل أن تبلغا الفترة.

لرؤية الشق الأول وحده، كما لو أن الحَكَم قد فُحص:

oloproof scores import before.csv after.csv --policy statistics-only.yaml
  score-went-up  faithfulness  superiority  INSUFFICIENT_EVIDENCE  interval_overlaps_zero
  more-answers-pass  faithfulness_passed  superiority  INSUFFICIENT_EVIDENCE  interval_overlaps_zero

في CI، أضف --summary markdown >> "$GITHUB_STEP_SUMMARY": يبدأ طلب الدمج عندئذ بـ «Is it real?» وبسطر لكل قاعدة يقول «not established» ولماذا، ويبقى رمز الخروج نفسه. تذهب أسطر الاستيراد نفسها إلى الخطأ القياسي، فلا يتلقى الملخص إلا الإجابة (CI).

من دون --policy يُبلغ الأمر بالمقارنة ولا يحسم شيئًا. ومع ملف واحد يُبلغ بذلك التشغيل، ويُخضعه --policy للبوابة وفق قواعد التشغيل في السياسة.

فحص الحَكَم

يَسِم أشخاصٌ عينةً عشوائية من حالات تشغيل مستورَد، دون أن يروا حكم الحَكَم، ويقيس Oloproof الحَكَم مقابلهم:

oloproof labels export RUN_ID --criterion faithfulness_passed --sample 60 --out sample.csv
oloproof labels import sample.csv
oloproof evaluators validate EVALUATOR_ID --by NAME

تعرض العينة معرِّف كل حالة ولا شيء من حكم الحَكَم. ويقرأ الواسم الحالة في الأداة التي تحفظها، بمعرِّفها، ويكتب pass أو fail في passed. ويعطي oloproof evaluators list معرِّف المُقيِّم. وبعد التحقق منه، تحسم القواعد التي تقرأ ذلك الحَكَم بناءً على الأدلة وحدها.

الوسوم نجاح أو إخفاق، لذا فهي تفحص حكم الحَكَم بالنجاح أو الإخفاق، لا درجته. استورد الحكم إلى جانب الدرجة، كما يفعل المثال مع faithfulness_passed: فذلك هو المعيار الذي يستطيع الأشخاص التحقق منه.

من أداتك

يحتوي مجلد recipes/ في المثال على سكربت قصير لكل أداة. يقرأ كل منها نتائج تلك الأداة ويكتب الملف، محتفظًا بالمعرِّفات والدرجات فقط. شغِّل واحدًا لكل نسخة، ثم استورد الملفين.

الأداةالوصفةما الذي يعرّف الحالة عبر تشغيلينملاحظات
DeepEvaldeepeval_results.py RESULTS_JSON OUTname حالة الاختباراحفظ النتائج باستخدام DisplayConfig(results_folder=...) وسمِّ كل LLMTestCase. يعطي كل مقياس درجته وحكمه بالنجاح أو الإخفاق بوصفه <metric>_passed، مع النموذج الحَكَم
Braintrustbraintrust_experiment.py PROJECT EXPERIMENT OUTسجل مجموعة البيانات الذي شُغِّلت عليه التجربة (origin.id)درجات من 0 إلى 1؛ ويسمّي --judge النموذج إن كان نموذج واحد قد حكم عليها كلها
LangSmithlangsmith_experiment.py EXPERIMENT OUT --scale LOW HIGHمثال مجموعة البيانات (reference_example_id)تصير الدرجة الصحيحة أو الخاطئة (true أو false) نجاحًا أو إخفاقًا؛ ويحتاج العدد إلى مداه
Langfuselangfuse_experiment.py EXPERIMENT SINCE OUTعنصر مجموعة البيانات (experiment_item_id)تجارب Langfuse 5؛ درجات عددية على مدى إعدادات الدرجات الخاصة بها، أو --scale

تتبع الوصفات حزمة SDK لكل أداة كما نُشرت في 16 أكتوبر 2026 (DeepEval 4.3.1، وbraintrust 0.46.1، وlangsmith 0.14.11، وlangfuse 5.0.2)، وهي مُختبَرة على نتائج بهذا الشكل، لا على حساب حقيقي. والأداة التي تعيد تسمية حقل تكسر وصفتها، لا الاستيراد: فالملف الذي تكتبه هو العقد.

ما يجب أن يصيب فيه الملف

  • الحالة الموجودة في ملف واحد فقط تكون مفقودة في الجانب الآخر، فتُحتسب وتُحَدّ عند أسوأ قيمها؛ ولا تُقرَن أبدًا بحالة أخرى.
  • يُرفض كلٌّ من: صف ثانٍ للحالة والمعيار نفسيهما، ودرجة خارج score_min وscore_max، وصف فيه درجة وحكم بالنجاح أو الإخفاق معًا، ومعيار يكون درجة في ملف ونجاحًا أو إخفاقًا في الآخر، مع ذكر الصف.
  • يجب أن تتفق الملفات المقارَنة على مدى كل معيار وحَكَمه: فدرجات حَكَمين هي أداتا قياس مختلفتان، وسيكون الفرق بينهما راجعًا جزئيًا إلى أداتي القياس.
  • كل ملف نسخة من النظام تُعرَّف بمحتواها. واستيراد الملف نفسه مرة أخرى يعيد استخدام ما خُزِّن؛ ولا يُشغَّل شيء أبدًا، لذا لا يمكن لأي إعادة تشغيل أن تعيد إنتاج درجة مستورَدة أو أن تغيّرها.
  • يسجّل --tool مصدر الدرجات، ويسمّي --name نظام كل ملف؛ ويُحفَظ كلاهما مع التشغيل.

ما لم يُبنَ

  • قراءة صيغة التصدير الخاصة بالأداة مباشرة: تحوّلها وصفة إلى الملف الموصوف أعلاه.
  • رفع الملفات إلى الموقع المستضاف دون تثبيت أي شيء.
  • التحقق من درجات الحَكَم، لا من أحكامه بالنجاح أو الإخفاق.

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