استخدام LLM لتقييم مخرجات LLM
لماذا ينجح تحكيم LLM وأين يفشل مقارنة بالتقييم البشري
استخدام LLM لتقييم مخرجات LLM درس مجاني في AI Prompt Engineering على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في AI Prompt Engineering، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة AI Prompt Engineering 4 دروس في المجموع.
لماذا نستخدم LLM بوصفه حَكَمًا؟
تصلح مقاييس التقييم التقليدية — BLEU وROUGE والتطابق التام — للمخرجات المنظمة، لكنها تفشل في قياس خصائص دقيقة مثل مدى الإفادة، والدقة، والنبرة، والإبداع.
يستوعب التقييم البشري التفاصيل الدقيقة، لكنه بطيء ومكلف. ويقدم استخدام LLM بوصفه حَكَمًا حلًا وسطًا: تقييمًا آليًا يفهم المعنى الدلالي والسياق والجودة الذاتية — على نطاق واسع وبتكلفة منخفضة.
لماذا ينجح مقيّمو LLM؟
ينجح مقيّمو LLM لأنهم يشتركون مع النموذج الذي يُقيَّم في الفهم اللغوي نفسه. ويمكنهم تقييم ما يلي:
- ما إذا كانت الاستجابة دقيقة من الناحية الواقعية، لا مجرد تشابهها مع المرجع من الناحية المعجمية
- ما إذا كانت الاستجابة مفيدة للغرض المحدد
- ما إذا كانت النبرة توافق المتطلبات
- ما إذا كان الملخص يتضمن النقاط الرئيسية
هذه خصائص لا تستطيع مقاييس مطابقة السلاسل النصية البسيطة قياسها.
مقيّم LLM بسيط
أبسط صورة لمقيّم LLM هي أن تطلب من النموذج تقييم استجابة على مقياس رقمي مع تقديم تبرير موجز. ويشكّل ذلك الأساس الذي تُبنى عليه جميع أنماط المقيّمين الأكثر تقدمًا.
import anthropic
import json
client = anthropic.Anthropic(api_key='sk-ant-...')
def simple_llm_judge(question, response, criterion):
judge_prompt = (
f'Rate the following response on {criterion} from 1 to 5.\n\n'
f'Question: {question}\n'
f'Response: {response}\n\n'
f'Return JSON: {{"score": <1-5>, "reason": "<one sentence>"}}'
)
r = client.messages.create(
model='claude-opus-4-5',
max_tokens=100,
messages=[{'role': 'user', 'content': judge_prompt}]
)
try:
result = json.loads(r.content[0].text)
return result['score'], result['reason']
except Exception:
return None, r.content[0].text
score, reason = simple_llm_judge(
question='What is recursion in programming?',
response='Recursion is when a function calls itself.',
criterion='clarity and completeness'
)
print(f'Score: {score}/5 — {reason}')أين يفشل مقيّمو LLM: تحيز الموضع
تحيز الموضع: عند عرض استجابتين (A وB)، يفضّل مقيّمو LLM أيًّا منهما يظهر أولًا — بغض النظر عن الجودة. وتُظهر الدراسات أن هذا يؤثر في 60-70% من المقارنات الثنائية عند استخدام موجّه تقييم ساذج.
وهذا يعني أن ترتيب عرض الخيارات يغيّر حكم المقيّم.
import anthropic
client = anthropic.Anthropic(api_key='sk-ant-...')
def demonstrate_position_bias(question, response_a, response_b):
def ask_judge(first, second, order):
prompt = (
f'Question: {question}\n\n'
f'Response 1: {first}\n\n'
f'Response 2: {second}\n\n'
f'Which response is better? Reply with 1 or 2.'
)
r = client.messages.create(
model='claude-opus-4-5',
max_tokens=10,
messages=[{'role': 'user', 'content': prompt}]
)
choice = r.content[0].text.strip()
# Map back to original labels
if order == 'AB':
return 'A' if choice == '1' else 'B'
else: # BA
return 'B' if choice == '1' else 'A'
result_ab = ask_judge(response_a, response_b, 'AB')
result_ba = ask_judge(response_b, response_a, 'BA')
print(f'Order A-B: Judge picked {result_ab}')
print(f'Order B-A: Judge picked {result_ba}')
if result_ab != result_ba:
print('Position bias detected: different results!')
return result_ab, result_baأين يفشل مقيّمو LLM: تحيز الإطناب
تحيز الإطناب: يميل مقيّمو LLM إلى إعطاء تقييم أعلى للاستجابات الأطول والأكثر تفصيلًا — حتى عندما تكون الاستجابة الموجزة أفضل موضوعيًا. وغالبًا ما تحصل استجابة تستخدم 400 كلمة للتعبير عما يمكن قوله في 50 كلمة على درجة أعلى من النسخة الموجزة.
يمكن التخفيف من ذلك عبر توجيه المقيّم صراحةً إلى معاقبة الطول غير الضروري.
import anthropic
client = anthropic.Anthropic(api_key='sk-ant-...')
def length_aware_judge(question, response):
judge_prompt = (
f'Evaluate this response for quality. Be aware of verbosity bias: '
f'do NOT score longer responses higher just because they are longer.\n\n'
f'Question: {question}\n'
f'Response: {response}\n\n'
f'Evaluate on:\n'
f'1. Accuracy (does it correctly answer the question?)\n'
f'2. Conciseness (does it avoid unnecessary filler?)\n'
f'3. Helpfulness (does it serve the user well?)\n\n'
f'Penalize responses that add filler, repetition, or irrelevant information.\n'
f'Score each 1-5 and provide an overall score. Return JSON.'
)
r = client.messages.create(
model='claude-opus-4-5',
max_tokens=200,
messages=[{'role': 'user', 'content': judge_prompt}]
)
print(r.content[0].text)أين يفشل مقيّمو LLM: التفضيل الذاتي
تحيز التفضيل الذاتي: عندما يقيّم Claude استجابتين، يميل إلى تفضيل الاستجابات الشبيهة بـ Claude. وعندما يقيّم GPT-4، فإنه يفضّل الاستجابات الشبيهة بـ GPT-4. وهذا تحيز منهجي يؤثر في جميع مقيّمي LLM.
التخفيف: استخدم نماذج مختلفة متعددة بوصفها مقيّمين، واجمع درجاتها. ويشير عدم الاتفاق إلى حالة حدّية تتطلب مراجعة بشرية.
import anthropic
import openai
anthropic_client = anthropic.Anthropic(api_key='sk-ant-...')
openai_client = openai.OpenAI(api_key='sk-...')
def multi_model_judge(question, response):
judge_prompt = (
f'Rate this response 1-10 for overall quality.\n'
f'Q: {question}\nA: {response}\n'
f'Reply with only a number.'
)
# Judge 1: Claude
r_claude = anthropic_client.messages.create(
model='claude-opus-4-5',
max_tokens=10,
messages=[{'role': 'user', 'content': judge_prompt}]
)
score_claude = float(r_claude.content[0].text.strip())
# Judge 2: GPT-4o
r_gpt = openai_client.chat.completions.create(
model='gpt-4o',
max_tokens=10,
messages=[{'role': 'user', 'content': judge_prompt}]
)
score_gpt = float(r_gpt.choices[0].message.content.strip())
avg = (score_claude + score_gpt) / 2
print(f'Claude judge: {score_claude}, GPT judge: {score_gpt}, Average: {avg}')
if abs(score_claude - score_gpt) > 2:
print('WARNING: High disagreement — consider human review')
return avgتضخيم الدرجات
تضخيم الدرجات: يميل مقيّمو LLM إلى منح درجات مرتفعة (4-5 من 5) لمعظم الاستجابات، مما يضغط التوزيع ويجعل التمييز بين الجيد والممتاز صعبًا. وغالبًا ما تحصل الاستجابات التي يفترض أن تنال 3/5 على درجات تتراوح بين 4 و4.5/5.
الحل: استخدم rubric يفرض المعايرة، أو استخدم التقييم النسبي (الثنائي) بدلًا من التقييم المطلق.
# Anti-inflation judge prompt with explicit score anchors
CALIBRATED_JUDGE_PROMPT = (
'Rate this response 1-5 using these STRICT score definitions:\n'
'1 = Completely wrong, harmful, or completely off-topic\n'
'2 = Partially relevant but contains significant errors or omissions\n'
'3 = Correct and addresses the question but lacks depth or precision\n'
'4 = Correct, reasonably complete, and clearly expressed\n'
'5 = Exceptional: correct, complete, insightful, and concise\n\n'
'Only give 5 if the response is genuinely outstanding.\n'
'Give 3 for any adequate-but-not-impressive response.\n\n'
'Question: {question}\n'
'Response: {response}\n\n'
'Score (1-5) and one-sentence reason:'
)
# Compare to non-anchored prompt which tends to cluster at 4-5
print('Anchored rubrics force the judge to use the full scale')متى ينجح مقيّمو LLM على أفضل نحو؟
يكون مقيّمو LLM أكثر موثوقية عندما:
- تكون المعايير واضحة ومحددة جيدًا
- يكون الفرق في جودة الاستجابات كبيرًا (استجابة جيدة بوضوح مقابل استجابة سيئة بوضوح)
- يكون المجال ضمن نطاق معرفة نموذج التقييم
- تُقيَّم خصائص ذاتية (مثل النبرة ومدى الإفادة) يختلف بشأنها المقيّمون البشريون أيضًا
ويكونون أقل موثوقية عند تقييم المعرفة الحديثة، أو المجالات التقنية شديدة التخصص، أو الأخطاء الواقعية الدقيقة التي تتطلب معرفة متخصصة لاكتشافها.
متى يكون التقييم البشري ضروريًا؟
ينبغي إشراك البشر في الحالات التالية:
- تقييم الاستجابات في المجالات المتخصصة (الطبية، والقانونية، والأمنية)
- إنشاء معايرة مرجعية حقيقية لمقيّم LLM
- القرارات عالية المخاطر التي تترتب على أخطاء مقيّم LLM فيها عواقب حقيقية
- المهام الجديدة التي لم يتلقَّ نموذج التقييم إشارات تدريبية كافية بشأنها
- اكتشاف الأخطاء الواقعية الدقيقة التي تتطلب خبرة في المجال
def triage_for_human_review(question, response, llm_score, confidence_threshold=0.7):
"""
Route low-confidence or high-stakes evaluations to human review.
"""
# Route to human if judge is uncertain
if llm_score is None:
return 'human_review', 'LLM judge failed to produce a score'
# Route to human for borderline scores (near decision boundaries)
if 2.5 <= llm_score <= 3.5:
return 'human_review', f'Borderline score {llm_score} — needs human judgment'
# Route to human for domain-specific high-risk content
HIGH_RISK_KEYWORDS = ['medication', 'legal advice', 'financial advice', 'security']
if any(kw in question.lower() for kw in HIGH_RISK_KEYWORDS):
return 'human_review', 'High-risk domain — human verification required'
# Else: LLM score is sufficient
return 'auto_accept', f'Score {llm_score} — LLM judgment sufficient'
routing, reason = triage_for_human_review('What medication should I take?', 'Take aspirin.', 4.5)
print(f'{routing}: {reason}')إنشاء خط أنابيب للتقييم
يتضمن خط أنابيب عملي لاستخدام LLM بوصفه حَكَمًا ما يلي: توليد الاستجابات → تشغيل مقيّم LLM → إحالة الحالات الحدّية إلى البشر → جمع الدرجات → إعداد تقارير بمقاييس الجودة. سجّل كل شيء لإنشاء مسارات تدقيق.
import anthropic
import json
client = anthropic.Anthropic(api_key='sk-ant-...')
def evaluate_batch(examples, product_under_test, criteria):
results = []
for ex in examples:
response = product_under_test(ex['question'])
score, reason = simple_llm_judge(ex['question'], response, criteria)
results.append({
'question': ex['question'],
'response': response,
'score': score,
'reason': reason,
'needs_review': score is None or 2.5 <= (score or 0) <= 3.5
})
# Summarize
valid_scores = [r['score'] for r in results if r['score'] is not None]
avg_score = sum(valid_scores) / len(valid_scores) if valid_scores else 0
review_count = sum(1 for r in results if r['needs_review'])
print(f'Average score: {avg_score:.2f}/5')
print(f'Cases needing review: {review_count}/{len(results)}')
return results, avg_score
# results, avg = evaluate_batch(test_cases, my_product, 'helpfulness')التقييم القائم على مرجع مقابل التقييم الخالي من المرجع
يمكن لمقيّمي LLM العمل في وضعين:
- القائم على مرجع: يقارن المقيّم الاستجابة بإجابة صحيحة معروفة. دقته عالية، لكنه يتطلب بيانات معنونة.
- الخالي من المرجع: يقيّم المقيّم الاستجابة وفق مزاياها الذاتية (هل هي متسقة؟ مفيدة؟ مكتوبة جيدًا؟). وهو أكثر مرونة، لكنه أقل دقة في تقييم الصحة الواقعية.
استخدم التقييم القائم على مرجع عندما تتوفر لديك إجابات معيارية موثوقة. واستخدم التقييم الخالي من المرجع للمهام المفتوحة مثل التلخيص، أو تقييم النبرة، أو جودة الكتابة الإبداعية.
اختبار المعرفة: تحيز الموضع
ما المقصود بتحيز الموضع في تقييم LLM بوصفه مُحكِّمًا، وما الذي يسببه؟
مراجعة: تقييم LLM بوصفه مُحكِّمًا
يفهم مُحكِّمو LLM الفروق الدقيقة، والدقة الدلالية، والجودة subjective — وهي أمور لا تستطيع المقاييس التقليدية قياسها. لكنهم يخطئون في حالات: تحيز الموضع (تفضيل الخيار الأول)، وتحيز الإسهاب (تفضيل الإجابات الأطول)، والتفضيل الذاتي (تفضيل أسلوبهم الخاص)، وتضخيم الدرجات (تجمعها عند 4-5/5). يمكن الحد من ذلك عبر تبديل ترتيب الاستجابات عشوائيًا، وإضافة تعليمات صريحة لمناهضة الإسهاب، واستخدام معايير تقييم ذات أوصاف مرجعية تحدد كل مستوى من مستويات الدرجات، والاستعانة بعدة نماذج مختلفة بوصفها مُحكِّمين. أحِلوا الدرجات الحدية والمجالات عالية المخاطر إلى مُقيِّمين بشريين. استخدموا مُحكِّمي LLM للتقييم على نطاق واسع، والبشر للمعايرة واتخاذ القرارات عالية الأهمية.
الأسئلة الشائعة
هل درس «استخدام LLM لتقييم مخرجات LLM» مجاني؟
نعم — نص درس «استخدام LLM لتقييم مخرجات LLM» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة AI Prompt Engineering، انتقل إلى CoddyKit PRO. تتضمن دورة AI Prompt Engineering 4 دروس في المجموع.
ماذا ستتعلم في «استخدام LLM لتقييم مخرجات LLM»؟
لماذا ينجح تحكيم LLM وأين يفشل مقارنة بالتقييم البشري تتمرن على AI Prompt Engineering مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ AI Prompt Engineering؟
لا تُشترط خبرة سابقة. AI Prompt Engineering على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.
كم من الوقت يستغرق درس «استخدام LLM لتقييم مخرجات LLM»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس AI Prompt Engineering هذا؟
نعم. كل درس في AI Prompt Engineering يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- استخدام LLM لتقييم مخرجات LLM
- مطالبات التقييم القائمة على معايير
- التحكيم المقارن: A مقابل B
- المعايرة والتحيز في محكّمي LLM