LLM-को-जज के रूप में कैलिब्रेशन
एक या अधिक LLM जजों से अपने डेटा को स्वतः लेबल करें, फिर सटीकता, सहमति और कैलिब्रेशन त्रुटि मापने के लिए एक ब्लाइंड मानव कैलिब्रेशन पास चलाएँ। यह क्या मुझे इस LLM जज पर भरोसा करना चाहिए? का उत्तर एक बचाव-योग्य और पुनरुत्पादनीय वर्कफ़्लो से देता है।
जज कैलिब्रेशन आपके डेटा को एक या अधिक LLM जजों से स्वतः लेबल करता है, फिर उन्हें ब्लाइंड मानव लेबलों के विरुद्ध कैलिब्रेट करता है, ताकि आप यह आँक सकें कि किसी LLM-को-जज पर कितना भरोसा करना है। आप एक जज प्रॉम्प्ट लिखते हैं, मॉडल चुनते हैं, और Potato आपके डेटा पर प्रत्येक मॉडल को k बार सैंपल करता है। फिर आप मॉडल के उत्तर देखे बिना एक सैंपल को ब्लाइंड-लेबल करते हैं, और Potato प्रति-मॉडल सटीकता, मानव↔मॉडल तथा मॉडल↔मॉडल सहमति, कैलिब्रेशन त्रुटि और कन्फ़्यूज़न मैट्रिक्स की रिपोर्ट देता है।
मॉडल आउटपुट को आँकने के लिए LLM का उपयोग अब एजेंट और मॉडल मूल्यांकन में आम है, लेकिन कोई जज तभी उपयोगी है जब आप जानते हों कि वह मानव निर्णय का कितना अनुसरण करता है। कैलिब्रेशन वह मापन-चरण है जो उस भरोसे को बचाव-योग्य बनाता है।
यह कैसे काम करता है
SETUP → GENERATING → HUMAN_CALIBRATION → REPORT → COMPLETED
- जनरेटिंग — प्रत्येक मॉडल को प्रति आइटम k बार क्वेरी किया जाता है। बहुलक लेबल पूर्वानुमान होता है; k सैंपलों में से जो अंश उससे सहमत होता है वह मॉडल का आत्मविश्वास है। परिणाम एक समर्पित स्टोर में जाते हैं, कभी भी एनोटेशन डेटा में मिश्रित नहीं होते, इसलिए मानव उन्हें नहीं देख सकते।
- मानव कैलिब्रेशन — Potato लेबल किए गए आइटमों का एक यादृच्छिक या स्तरित सैंपल निकालता है, और एक या अधिक मानव सामान्य एनोटेशन इंटरफ़ेस के माध्यम से उन्हें ब्लाइंड-लेबल करते हैं।
- रिपोर्ट — मेट्रिक्स मानव∩मॉडल अतिव्यापन पर गणना किए जाते हैं और आउटपुट डायरेक्टरी में लिखे जाते हैं।
चूँकि मॉडल लेबल एक अलग स्टोर में रहते हैं और कभी UI में इंजेक्ट नहीं किए जाते, ब्लाइंडनेस संरचनात्मक है, न कि एनोटेटर के अनुशासन का मामला।
त्वरित आरंभ
रिपॉज़िटरी रूट से शामिल उदाहरण चलाएँ:
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 चलाएँ।
कॉन्फ़िगरेशन
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 सैंपलों में वोट-अंश) का उपयोग करता है, और मानव को कड़ाई से ब्लाइंड रखता है। जज अलाइनमेंट एक एकल जज को मौजूदा मानव गोल्ड लेबलों के विरुद्ध कैलिब्रेट करता है, एनोटेशन के दौरान उसका निर्णय इनलाइन दिखाता है, और एक रूब्रिक पर पुनरावृत्ति के इर्द-गिर्द बना है। जब आप उम्मीदवार जजों की जाँच कर रहे हों तब कैलिब्रेशन चुनें; जब आप किसी स्थिर गोल्ड सेट के विरुद्ध एक जज को ट्यून कर रहे हों तब अलाइनमेंट चुनें।
संबंधित
- जज ↔ मानव अलाइनमेंट — एकल-जज इनलाइन कैलिब्रेशन
- सोलो मोड — पूर्ण मानव-LLM सहयोगी लेबलिंग
- एनोटेटर-अंतर सहमति मार्गदर्शिका — kappa और alpha मेट्रिक्स विस्तार से
कार्यान्वयन विवरण के लिए, स्रोत दस्तावेज़ीकरण देखें।