Skip to content

LLM-को-जज के रूप में कैलिब्रेशन

एक या अधिक LLM जजों से अपने डेटा को स्वतः लेबल करें, फिर सटीकता, सहमति और कैलिब्रेशन त्रुटि मापने के लिए एक ब्लाइंड मानव कैलिब्रेशन पास चलाएँ। यह क्या मुझे इस LLM जज पर भरोसा करना चाहिए? का उत्तर एक बचाव-योग्य और पुनरुत्पादनीय वर्कफ़्लो से देता है।

जज कैलिब्रेशन आपके डेटा को एक या अधिक LLM जजों से स्वतः लेबल करता है, फिर उन्हें ब्लाइंड मानव लेबलों के विरुद्ध कैलिब्रेट करता है, ताकि आप यह आँक सकें कि किसी LLM-को-जज पर कितना भरोसा करना है। आप एक जज प्रॉम्प्ट लिखते हैं, मॉडल चुनते हैं, और Potato आपके डेटा पर प्रत्येक मॉडल को k बार सैंपल करता है। फिर आप मॉडल के उत्तर देखे बिना एक सैंपल को ब्लाइंड-लेबल करते हैं, और Potato प्रति-मॉडल सटीकता, मानव↔मॉडल तथा मॉडल↔मॉडल सहमति, कैलिब्रेशन त्रुटि और कन्फ़्यूज़न मैट्रिक्स की रिपोर्ट देता है।

मॉडल आउटपुट को आँकने के लिए LLM का उपयोग अब एजेंट और मॉडल मूल्यांकन में आम है, लेकिन कोई जज तभी उपयोगी है जब आप जानते हों कि वह मानव निर्णय का कितना अनुसरण करता है। कैलिब्रेशन वह मापन-चरण है जो उस भरोसे को बचाव-योग्य बनाता है।

यह कैसे काम करता है

text
SETUP → GENERATING → HUMAN_CALIBRATION → REPORT → COMPLETED
  1. जनरेटिंग — प्रत्येक मॉडल को प्रति आइटम k बार क्वेरी किया जाता है। बहुलक लेबल पूर्वानुमान होता है; k सैंपलों में से जो अंश उससे सहमत होता है वह मॉडल का आत्मविश्वास है। परिणाम एक समर्पित स्टोर में जाते हैं, कभी भी एनोटेशन डेटा में मिश्रित नहीं होते, इसलिए मानव उन्हें नहीं देख सकते।
  2. मानव कैलिब्रेशन — Potato लेबल किए गए आइटमों का एक यादृच्छिक या स्तरित सैंपल निकालता है, और एक या अधिक मानव सामान्य एनोटेशन इंटरफ़ेस के माध्यम से उन्हें ब्लाइंड-लेबल करते हैं।
  3. रिपोर्ट — मेट्रिक्स मानव∩मॉडल अतिव्यापन पर गणना किए जाते हैं और आउटपुट डायरेक्टरी में लिखे जाते हैं।

चूँकि मॉडल लेबल एक अलग स्टोर में रहते हैं और कभी UI में इंजेक्ट नहीं किए जाते, ब्लाइंडनेस संरचनात्मक है, न कि एनोटेटर के अनुशासन का मामला।

त्वरित आरंभ

रिपॉज़िटरी रूट से शामिल उदाहरण चलाएँ:

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प्रयोगात्मकIoU-मिलान किए गए P/R/F1, माध्य IoU, span-F1 सहमति, span-स्तरीय कैलिब्रेशन

span समर्थन जज के कैरेक्टर-ऑफ़सेट स्पैनों को k सैंपलों में क्लस्टर करता है और उन्हें इंटरसेक्शन-ओवर-यूनियन द्वारा गोल्ड से मिलाता है; इसकी ह्यूरिस्टिक्स दिशात्मक हैं, सटीक नहीं।

रिपोर्ट में क्या होता है

  • प्रत्येक मॉडल की मानव गोल्ड लेबल के विरुद्ध सटीकता, परिशुद्धता, रिकॉल और F1
  • मानव↔मॉडल, मॉडल↔मॉडल और मानव↔मानव जोड़ों में विभाजित Cohen का κ
  • सभी रेटरों में Fleiss का κ और Krippendorff का α
  • अपेक्षित कैलिब्रेशन त्रुटि (ECE), विश्वसनीयता बिन और Brier स्कोर, जो दर्शाते हैं कि वोट-अंश आत्मविश्वास शुद्धता का कितना अनुसरण करता है।
  • प्रत्येक मॉडल की मानव गोल्ड के विरुद्ध एक कन्फ़्यूज़न मैट्रिक्स

मेट्रिक्स अतिव्यापन पर गणना किए जाते हैं: वे आइटम जिन्हें मॉडलों और मानव(ओं) दोनों ने लेबल किया, और जब कोई कैलिब्रेशन सैंपल निकाला गया हो तो उसी तक सीमित।

आउटपुट output.dir के अंतर्गत लिखा जाता है: llm_labels.jsonl (प्रति मॉडल, आइटम और स्कीमा एक पंक्ति), report.json, और एक मानव-पठनीय report.html

जज कैलिब्रेशन बनाम जज अलाइनमेंट

जज कैलिब्रेशन अनेक जजों, अनुभवजन्य आत्मविश्वास (k सैंपलों में वोट-अंश) का उपयोग करता है, और मानव को कड़ाई से ब्लाइंड रखता है। जज अलाइनमेंट एक एकल जज को मौजूदा मानव गोल्ड लेबलों के विरुद्ध कैलिब्रेट करता है, एनोटेशन के दौरान उसका निर्णय इनलाइन दिखाता है, और एक रूब्रिक पर पुनरावृत्ति के इर्द-गिर्द बना है। जब आप उम्मीदवार जजों की जाँच कर रहे हों तब कैलिब्रेशन चुनें; जब आप किसी स्थिर गोल्ड सेट के विरुद्ध एक जज को ट्यून कर रहे हों तब अलाइनमेंट चुनें।

संबंधित

कार्यान्वयन विवरण के लिए, स्रोत दस्तावेज़ीकरण देखें।