Skip to content
Guides6 min read

هل يمكنك الوثوق بنموذجك الحَكَم؟ معايرة LLM-as-Judge مقابل البشر

استخدام نموذج لغوي لتقييم مخرجات النماذج أمر سهل، أما معرفة هل تصدّقه فهي الجزء الصعب. جولة في المعايرة البشرية المعمّاة في Potato 2.6: تصويت بـ k عيّنات، ومعاملا Cohen وFleiss، وخطأ المعايرة المتوقَّع.

Potato Team

أصبح استخدام نموذج لغوي كبير لتقييم مخرجات نماذج أخرى هو الخطوة الافتراضية في التقييم. تكتب معيار تصحيح، وتطلب من GPT-4o أو Claude تسجيل آلاف الردود، ثم تقرأ رقم الدقة. الطريقة سريعة ورخيصة وتتوسّع إلى ما يتجاوز أي شيء يستطيع فريق بشري وسمه يدويًا.

لكنها أيضًا تفترض بهدوء الشيء الذي أنت في أمسّ الحاجة إلى التحقق منه: أن الحَكَم يتفق مع البشر. إن النموذج اللغوي كحَكَم (LLM-as-a-judge) الذي يخطئ بثقة يُنتج لوحة صدارة تبدو نظيفة لكنها مبنية على رمال متحركة. قبل أن تثق بأحكام الحَكَم، عليك أن تقيس مدى تتبّعه للحكم البشري. خطوة القياس هذه هي المعايرة، وقد أضاف Potato 2.6 سير عمل خاصًا بها.

تتناول هذه التدوينة Judge Calibration (معايرة الحَكَم): كيف تأخذ عيّنات من النماذج، وكيف تُبقي المرور البشري نزيهًا، وما الذي يخبرك به التقرير فعلًا. تحتوي الوثائق المرجعية على قائمة الخيارات الكاملة.

حكم نموذج LLM معروض بجانب وسم بشري، مع معامل kappa يُحتسب آنيًامعايرة الحَكَم المضمَّنة في Potato

شكل المشكلة

يمكن للحَكَم أن يفشل بطريقتين مختلفتين، وأنت تريد التقاط كلتيهما.

الأولى هي الاختلاف: يصف الحَكَم أشياء بأنها «صحيحة» بينما يصفها إنسان متأنٍّ بأنها «خاطئة». هذا ما تقيسه مقاييس الدقة والاتفاق.

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

صُمِّم مرور المعايرة في Potato لإظهار الأمرين معًا في آنٍ واحد.

كيف يعمل

يعمل سير العمل بوصفه آلة حالات قصيرة:

text
SETUP → GENERATING → HUMAN_CALIBRATION → REPORT → COMPLETED

التوليد (Generating). يُستعلَم من كل نموذج k مرة لكل عنصر. التسمية الأكثر تكرارًا عبر تلك العيّنات الـ k هي تنبّؤ النموذج، ونسبة العيّنات المتفقة معها هي ثقة النموذج. أخذ العيّنات k مرة بدلًا من مرة واحدة هو ما يمنحك إشارة ثقة تجريبية بدلًا من رقم اختلقه النموذج عن نفسه. تذهب هذه النتائج إلى مخزن مخصّص ولا تُكتب أبدًا في بيانات الوسم.

المعايرة البشرية (Human calibration). يسحب Potato عيّنة عشوائية أو طبقية من العناصر ويوجّهها إلى إنسان واحد أو أكثر، يقومون بوسمها عبر واجهة الوسم الاعتيادية دون أن يروا أبدًا إجابات النموذج.

التقرير (Report). تُحتسب المقاييس على التداخل بين ما وسمته النماذج وما وسمه البشر، ثم تُكتب على القرص.

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

خط أنابيب المعايرة: تصويت النموذج بـ k عيّنات، ومرور بشري معمّى، وتقرير مقارنةكيف يعاير Potato حَكَمًا مقابل وسوم بشرية معمّاة

الإعداد

معايرة الحَكَم هي كتلة إعداد واحدة. تكتب موجّه الحَكَم، وتُدرج النماذج، وتضبط كم مرة تأخذ عيّنة من كل منها:

yaml
judge_calibration:
  enabled: true
  prompt: |                       # supports {text}, {labels}, {description}
    You are an impartial expert annotator. Classify the sentiment as exactly
    one of: positive, negative, neutral.
  models:
    - endpoint_type: openai        # openai | anthropic | ollama | vllm | gemini | ...
      model: gpt-4o-mini
      api_key: ${OPENAI_API_KEY}
      temperature: 0.7             # must be > 0 so the k samples vary
    - endpoint_type: ollama
      model: llama3.1:8b
      base_url: http://localhost:11434
      temperature: 0.7
  k_samples: 5                     # samples per model per item
  max_items: 1000                  # cap on items the LLMs label (null = all)
  sampling:
    strategy: stratified           # random | stratified | all
    sample_size: 200               # how many items humans blind-label
    seed: 42
  human:
    num_raters: 1                  # 1 = solo researcher; N adds human-human IAA
    gold: single                   # single | majority
  schemas: [sentiment]
  output:
    dir: judge_calibration_output

Warning: اضبط temperature > 0. مع k_samples > 1 ودرجة حرارة 0، تكون العيّنات متطابقة، وتثبت الثقة عند 1.0، ويصبح تقرير المعايرة بلا معنى. يصدر Potato تحذيرًا عند بدء التشغيل حين يرى هذا المزيج.

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

تجربته دون مفتاح API

يستخدم المثال المرفق نموذج Ollama محليًّا، فيمكنك تشغيل الحلقة كاملةً دون اتصال. شغّل Ollama، واجلب النموذج، ثم أطلق التشغيل:

bash
ollama pull llama3.2:3b
python potato/flask_server.py start examples/ai-assisted/judge-calibration/config.yaml -p 8000 --debug

افتح http://localhost:8000/judge_calibration/admin للإعداد والتشغيل، وقم بوسم العيّنة بشكل معمّى على /annotate، ثم ابنِ التقرير واقرأه على /judge_calibration/report.

ما الذي يخبرك به التقرير

بُني التقرير للإجابة عن «هل يجدر بي الوثوق بهذا الحَكَم؟» بأرقام يمكنك وضعها في قسم المنهجية:

  • الدقة والإحكام والاستدعاء وF1 لكل نموذج مقابل التسمية الذهبية البشرية.
  • Cohen's κ مفصّلة إلى أزواج إنسان↔نموذج، ونموذج↔نموذج، وإنسان↔إنسان، حتى ترى هل يتفق الحَكَم مع البشر بقدر ما يتفق البشر فيما بينهم.
  • Fleiss' κ وKrippendorff's α عبر جميع المقيّمين.
  • خطأ المعايرة المتوقَّع (ECE)، وحُزَم الموثوقية، ودرجة Brier: الإجابة عن نمط فشل الثقة الخاطئة.
  • مصفوفة ارتباك لكل نموذج، وهي عادةً ما تروي القصة الحقيقية: حَكَم جيّد في الفئات السهلة ينهار في تمييز صعب واحد.

كل شيء يُحتسب على التداخل: العناصر التي وسمها كلٌّ من النماذج والبشر، مقيّدةً بعيّنة المعايرة. تستقرّ المخرجات تحت output.dir بصيغة llm_labels.jsonl وreport.json وreport.html القابل للقراءة.

ما الذي يتعامل معه

المعايرة مدعومة بالكامل في المخططات التصنيفية التي تستخدمها معظم الحُكّام، وتمتدّ إلى أنواع أصعب:

النوعالحالةالمقاييس
radio / selectمدعومالدقة، P/R/F1، Cohen/Fleiss κ، Krippendorff α، ECE، الارتباك
likertمدعومما سبق إضافةً إلى MAE وKrippendorff α الترتيبي
multiselectمدعومP/R/F1 لكل تسمية، متوسط Jaccard، دقة التطابق التام، المعايرة
spanتجريبيP/R/F1 المطابَقة بـ IoU، متوسط IoU، span-F1، معايرة على مستوى المقطع

تجمّع معايرة المقاطع مقاطع الإزاحة الحرفية للحَكَم عبر العيّنات الـ k وتطابقها مع الذهبي عبر التقاطع على الاتحاد (intersection-over-union)؛ عامِل أرقامها بوصفها إرشادية لا دقيقة.

المعايرة في مقابل المحاذاة

يأتي Potato مع سير عمل ثانٍ ذي صلة يسهل الخلط بينه وبين هذا. تعاير محاذاة الحَكَم (Judge Alignment) حَكَمًا واحدًا مقابل مجموعة ذهبية بشرية قائمة، وتعرض حكمه مضمَّنًا أثناء الوسم، وهي مبنية حول تكرار معيار التصحيح حتى يرتفع الاتفاق.

القاعدة العامة: اِلجأ إلى المعايرة حين تفحص حُكّامًا مرشّحين وتريد رقم ثقة تجريبيًّا معمّى؛ واِلجأ إلى المحاذاة حين تستقرّ على حَكَم واحد وتضبط معيار تصحيحه مقابل مجموعة ذهبية ثابتة. ويُتناول الاثنان معًا في إغلاق الحلقة (Closing the Loop).

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

تغطّي وثائق Judge Calibration كل خيار، ويشرح دليل الاتفاق بين الواسمين مقاييس kappa وalpha بعمق.