Skip to content

معايرة نموذج LLM بوصفه حَكَمًا

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

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

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

كيف تعمل

text
SETUP → GENERATING → HUMAN_CALIBRATION → REPORT → COMPLETED
  1. التوليد — يُستعلَم كل نموذج k مرات لكل عنصر. التسمية المنوالية هي التنبؤ، ونسبة العيّنات الـ k المتوافقة معها هي ثقة النموذج. تذهب النتائج إلى مخزن مخصص، ولا تُخلط أبدًا ببيانات التوصيف، فلا يمكن للبشر رؤيتها.
  2. المعايرة البشرية — يسحب Potato عيّنة عشوائية أو طبقية من العناصر الموسومة، ويضع شخص واحد أو أكثر عليها تسميات معماة عبر واجهة التوصيف المعتادة.
  3. التقرير — تُحسَب المقاييس على تقاطع الإنسان∩النموذج وتُكتَب في دليل المخرجات.

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

بداية سريعة

شغّل المثال المرفق من جذر المستودع:

bash
python potato/flask_server.py start examples/ai-assisted/judge-calibration/config.yaml -p 8000 --debug
  • افتح http://localhost:8000/judge_calibration/admin للتهيئة والتشغيل.
  • عند انتهاء التوليد، ضع تسميات معماة على العيّنة عند http://localhost:8000/annotate.
  • انقر Build report، ثم افتح http://localhost:8000/judge_calibration/report.

يستخدم المثال نموذج Ollama محليًا، لذا لا حاجة لمفتاح API. ابدأ تشغيل Ollama ونفّذ ollama pull llama3.2:3b أولًا.

التهيئة

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 | openrouter | huggingface
      model: gpt-4o-mini
      api_key: ${OPENAI_API_KEY}   # env-var expansion supported
      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]             # annotation_scheme names to evaluate ([] = all)
  output:
    dir: judge_calibration_output

يمكنك تجاوز معظم هذه القيم في معالج الإدارة وإعادة التشغيل.

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

أنواع التوصيف المدعومة

النوعالحالةالمقاييس
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 ويطابقها مع المرجع الذهبي عبر التقاطع على الاتحاد، وإرشاداته الاستدلالية اتجاهية وليست دقيقة.

ما يحتويه التقرير

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

تُحسَب المقاييس على التقاطع: العناصر التي وسمها كل من النماذج والبشر، مع الاقتصار على عيّنة المعايرة عند سحب واحدة منها.

تُكتَب المخرجات ضمن output.dir: ملف llm_labels.jsonl (سطر لكل نموذج وعنصر ومخطط)، و report.json، وملف report.html قابل للقراءة البشرية.

معايرة الحَكَم مقابل مواءمة الحَكَم

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

ذات صلة

للاطلاع على تفاصيل التنفيذ، راجع وثائق المصدر.