AI Prompt Engineering · บทเรียน

ใช้ LLM ประเมินข้อมูลส่งออกของ LLM

เหตุใดผู้ตัดสินที่เป็น LLM จึงใช้ได้ผล และจุดใดที่ทำงานด้อยกว่าการประเมินโดยมนุษย์

บทเรียน 1 จาก 413 ขั้นตอน

ใช้ LLM ประเมินข้อมูลส่งออกของ LLM เป็นบทเรียน AI Prompt Engineering ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 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 คำมักได้คะแนนสูงกว่าฉบับกระชับ

ลดผลกระทบด้วยการกำชับผู้ตัดสินให้หักคะแนนจากความยาวที่ unnecessary

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 มักชอบคำตอบที่มีลักษณะคล้าย 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

วิธีแก้: ใช้เกณฑ์การให้คะแนนที่บังคับให้ปรับเทียบ หรือใช้การให้คะแนนแบบสัมพัทธ์ (เป็นคู่) แทนการให้คะแนนแบบสัมบูรณ์

# 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 เข้าใจรายละเอียดอันละเอียดอ่อน ความถูกต้องเชิงความหมาย และคุณภาพเชิงอัตวิสัย ซึ่งเป็นสิ่งที่ตัวชี้วัดแบบดั้งเดิมไม่สามารถวัดได้ ผู้ตัดสินมีข้อจำกัดในด้านต่อไปนี้: อคติด้านตำแหน่ง (ชอบตัวเลือกแรก) อคติด้านความยืดเยื้อ (ชอบคำตอบที่ยาวกว่า) การชอบรูปแบบของตนเอง (ชอบสไตล์ของตนเอง) และการให้คะแนนสูงเกินจริง (คะแนนกระจุกอยู่ที่ 4–5 จาก 5) ลดอคติเหล่านี้ด้วยการสุ่มลำดับคำตอบ การกำหนดคำสั่งอย่างชัดเจนให้ต่อต้านความยืดเยื้อ การใช้เกณฑ์อ้างอิงที่กำหนดความหมายของแต่ละระดับคะแนน และการใช้โมเดลที่แตกต่างกันหลายแบบเป็นผู้ตัดสิน ส่งต่อคะแนนที่ก้ำกึ่งและงานในขอบเขตที่มีความเสี่ยงสูงให้ผู้ประเมินมนุษย์ ใช้ผู้ตัดสิน LLM เพื่อรองรับการประเมินในวงกว้าง และใช้มนุษย์เพื่อการปรับเทียบและการตัดสินใจที่มีผลกระทบสูง

เริ่มต้นได้ฟรี

เรียนรู้ AI Prompt Engineering ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
53
บทเรียน
199

คำถามที่พบบ่อย

บทเรียน “ใช้ LLM ประเมินข้อมูลส่งออกของ LLM” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “ใช้ LLM ประเมินข้อมูลส่งออกของ LLM” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส AI Prompt Engineering ให้อัปเกรดเป็น CoddyKit PRO คอร์ส AI Prompt Engineering มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “ใช้ LLM ประเมินข้อมูลส่งออกของ LLM”

เหตุใดผู้ตัดสินที่เป็น LLM จึงใช้ได้ผล และจุดใดที่ทำงานด้อยกว่าการประเมินโดยมนุษย์ คุณปฏิบัติ AI Prompt Engineering ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน AI Prompt Engineering หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน AI Prompt Engineering บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน

บทเรียน “ใช้ LLM ประเมินข้อมูลส่งออกของ LLM” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน AI Prompt Engineering นี้ได้ไหม

ได้ บทเรียน AI Prompt Engineering ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. ใช้ LLM ประเมินข้อมูลส่งออกของ LLM
  2. พรอมต์ให้คะแนนตามเกณฑ์ประเมิน
  3. การตัดสินเชิงเปรียบเทียบ: A กับ B
  4. การปรับเทียบและอคติในผู้ตัดสินที่เป็น LLM
← กลับไปที่ AI Prompt Engineering