هل يمكنك الوثوق بنموذجك الحَكَم؟ معايرة LLM-as-Judge مقابل البشر
استخدام نموذج لغوي لتقييم مخرجات النماذج أمر سهل، أما معرفة هل تصدّقه فهي الجزء الصعب. جولة في المعايرة البشرية المعمّاة في Potato 2.6: تصويت بـ k عيّنات، ومعاملا Cohen وFleiss، وخطأ المعايرة المتوقَّع.
أصبح استخدام نموذج لغوي كبير لتقييم مخرجات نماذج أخرى هو الخطوة الافتراضية في التقييم. تكتب معيار تصحيح، وتطلب من GPT-4o أو Claude تسجيل آلاف الردود، ثم تقرأ رقم الدقة. الطريقة سريعة ورخيصة وتتوسّع إلى ما يتجاوز أي شيء يستطيع فريق بشري وسمه يدويًا.
لكنها أيضًا تفترض بهدوء الشيء الذي أنت في أمسّ الحاجة إلى التحقق منه: أن الحَكَم يتفق مع البشر. إن النموذج اللغوي كحَكَم (LLM-as-a-judge) الذي يخطئ بثقة يُنتج لوحة صدارة تبدو نظيفة لكنها مبنية على رمال متحركة. قبل أن تثق بأحكام الحَكَم، عليك أن تقيس مدى تتبّعه للحكم البشري. خطوة القياس هذه هي المعايرة، وقد أضاف Potato 2.6 سير عمل خاصًا بها.
تتناول هذه التدوينة Judge Calibration (معايرة الحَكَم): كيف تأخذ عيّنات من النماذج، وكيف تُبقي المرور البشري نزيهًا، وما الذي يخبرك به التقرير فعلًا. تحتوي الوثائق المرجعية على قائمة الخيارات الكاملة.
معايرة الحَكَم المضمَّنة في Potato
شكل المشكلة
يمكن للحَكَم أن يفشل بطريقتين مختلفتين، وأنت تريد التقاط كلتيهما.
الأولى هي الاختلاف: يصف الحَكَم أشياء بأنها «صحيحة» بينما يصفها إنسان متأنٍّ بأنها «خاطئة». هذا ما تقيسه مقاييس الدقة والاتفاق.
الثانية هي الثقة الخاطئة: يقول الحَكَم إنه واثق بنسبة 95% بينما يكون مصيبًا في 60% من الحالات. يمكن أن تكون دقّة الحَكَم لا بأس بها ومع ذلك تكون معايرته سيئة للغاية، وهذا ما يصبح مهمًّا في اللحظة التي تبدأ فيها باستخدام ثقته لتوجيه العمل أو ضبط العتبات. هذا ما يقيسه خطأ المعايرة.
صُمِّم مرور المعايرة في Potato لإظهار الأمرين معًا في آنٍ واحد.
كيف يعمل
يعمل سير العمل بوصفه آلة حالات قصيرة:
SETUP → GENERATING → HUMAN_CALIBRATION → REPORT → COMPLETED
التوليد (Generating). يُستعلَم من كل نموذج k مرة لكل عنصر. التسمية الأكثر تكرارًا عبر تلك العيّنات الـ k هي تنبّؤ النموذج، ونسبة العيّنات المتفقة معها هي ثقة النموذج. أخذ العيّنات k مرة بدلًا من مرة واحدة هو ما يمنحك إشارة ثقة تجريبية بدلًا من رقم اختلقه النموذج عن نفسه. تذهب هذه النتائج إلى مخزن مخصّص ولا تُكتب أبدًا في بيانات الوسم.
المعايرة البشرية (Human calibration). يسحب Potato عيّنة عشوائية أو طبقية من العناصر ويوجّهها إلى إنسان واحد أو أكثر، يقومون بوسمها عبر واجهة الوسم الاعتيادية دون أن يروا أبدًا إجابات النموذج.
التقرير (Report). تُحتسب المقاييس على التداخل بين ما وسمته النماذج وما وسمه البشر، ثم تُكتب على القرص.
التعمية هنا هي الجزء المهم. لأن وسوم النموذج تعيش في مخزن منفصل ولا تُحقَن أبدًا في الواجهة، لا يمكن أن يتأثّر الإنسان بها حتى عرضًا. التعمية بنيوية، وليست مسألة الطلب من الواسمين أن يغضّوا الطرف.
كيف يعاير Potato حَكَمًا مقابل وسوم بشرية معمّاة
الإعداد
معايرة الحَكَم هي كتلة إعداد واحدة. تكتب موجّه الحَكَم، وتُدرج النماذج، وتضبط كم مرة تأخذ عيّنة من كل منها:
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_outputWarning: اضبط
temperature > 0. معk_samples > 1ودرجة حرارة 0، تكون العيّنات متطابقة، وتثبت الثقة عند 1.0، ويصبح تقرير المعايرة بلا معنى. يصدر Potato تحذيرًا عند بدء التشغيل حين يرى هذا المزيج.
يمكنك إدراج أكثر من نموذج ومعايرتها جنبًا إلى جنب، وهي الطريقة الطبيعية للاختيار بين حَكَم محلي رخيص وآخر مُستضاف باهظ الثمن.
تجربته دون مفتاح API
يستخدم المثال المرفق نموذج Ollama محليًّا، فيمكنك تشغيل الحلقة كاملةً دون اتصال. شغّل Ollama، واجلب النموذج، ثم أطلق التشغيل:
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 بعمق.