AI Prompt Engineering · บทเรียน

รูปแบบการวิจารณ์ตนเองและการแก้ไข

สั่งให้โมเดลประเมินและเขียนข้อมูลส่งออกของตนเองใหม่โดยเทียบกับธรรมนูญ

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

รูปแบบการวิจารณ์ตนเองและการแก้ไข เป็นบทเรียน AI Prompt Engineering ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน AI Prompt Engineering และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส AI Prompt Engineering มีบทเรียนทั้งหมด 4 บทเรียน

การวิจารณ์ตนเองในฐานะเทคนิคการใช้คำสั่ง

แม้ไม่มีขั้นตอนการฝึก CAI อย่างเป็นทางการ คุณก็สามารถใช้คำสั่งให้ LLM ที่มีความสามารถวิจารณ์และปรับปรุงผลลัพธ์ของตนเองได้ รูปแบบการวิจารณ์ตนเองนี้ช่วยเพิ่มคุณภาพได้อย่างมากสำหรับงานที่ต้องคำนึงถึงความถูกต้อง ความครบถ้วน หรือความปลอดภัย

ข้อสังเกตสำคัญคือ แบบจำลองมีความรู้มากกว่าที่แสดงออกมาในรอบแรก คำสั่งสำหรับการวิจารณ์จะช่วยดึงความรู้นั้นออกมา

รูปแบบการวิจารณ์ความถูกต้องขั้นพื้นฐาน

การวิจารณ์ตนเองที่ง่ายที่สุดคือ ขอให้แบบจำลองตรวจสอบคำตอบของตนเองว่าถูกต้องตามข้อเท็จจริงหรือไม่ และแก้ไขข้อผิดพลาดที่พบ

import anthropic

client = anthropic.Anthropic(api_key='sk-ant-...')

def generate_and_self_critique(question):
    # Step 1: Generate
    r1 = client.messages.create(
        model='claude-opus-4-5',
        max_tokens=512,
        messages=[{'role': 'user', 'content': question}]
    )
    initial = r1.content[0].text

    # Step 2: Accuracy critique
    critique_prompt = (
        f'Question: {question}\n\n'
        f'Your previous answer: {initial}\n\n'
        'Review your previous answer for factual accuracy. '
        'Identify any errors, unsupported claims, or missing important nuances. '
        'Then provide a corrected, improved answer.'
    )
    r2 = client.messages.create(
        model='claude-opus-4-5',
        max_tokens=512,
        messages=[{'role': 'user', 'content': critique_prompt}]
    )
    return r2.content[0].text

result = generate_and_self_critique('What caused the fall of the Roman Empire?')
print(result[:300])

รูปแบบการตรวจสอบความครบถ้วน

การวิจารณ์ความครบถ้วนจะขอให้แบบจำลองตรวจสอบว่าคำตอบของตนครอบคลุมทุกส่วนของคำถามอย่างสมบูรณ์หรือไม่ วิธีนี้มีประโยชน์อย่างยิ่งสำหรับคำถามหลายส่วน ซึ่งคำตอบในรอบแรกมักพลาดคำถามย่อยบางข้อ

COMPLETENESS_CRITIQUE = (
    'Original question: {question}\n\n'
    'Your previous answer: {answer}\n\n'
    'Check if your answer fully addresses the question:\n'
    '1. List each part or sub-question in the original question.\n'
    '2. For each part, indicate whether your answer addressed it.\n'
    '3. If any parts were missed or incomplete, provide a revised answer '
    'that covers everything.'
)

def check_completeness(question, initial_answer, client):
    prompt = COMPLETENESS_CRITIQUE.format(
        question=question,
        answer=initial_answer
    )
    response = client.messages.create(
        model='claude-opus-4-5',
        max_tokens=600,
        messages=[{'role': 'user', 'content': prompt}]
    )
    return response.content[0].text

รูปแบบการวิจารณ์อันตรายและความปลอดภัย

การวิจารณ์ด้านอันตรายจะขอให้แบบจำลองตรวจสอบคำตอบของตนเองว่ามีผลกระทบด้านลบที่อาจเกิดขึ้นหรือไม่ ก่อนแสดงคำตอบให้ผู้ใช้ นี่คือแก่นสำคัญของการใช้หลักการ CAI ในการใช้งานจริง

HARM_CRITIQUE_PROMPT = (
    'Review the following assistant response for potential harms:\n\n'
    'User message: {user_message}\n'
    'Assistant response: {response}\n\n'
    'Consider:\n'
    '- Could this response enable harmful actions?\n'
    '- Could it be misused by someone with bad intentions?\n'
    '- Does it respect the privacy and dignity of individuals?\n'
    '- Could it cause psychological harm to vulnerable users?\n\n'
    'If the response has issues, explain them and provide a revised '
    'version that addresses the concerns while still being helpful. '
    'If the response is fine, say "Response is appropriate" and quote it back.'
)

def safety_check(user_message, response, client):
    prompt = HARM_CRITIQUE_PROMPT.format(
        user_message=user_message,
        response=response
    )
    result = client.messages.create(
        model='claude-opus-4-5',
        max_tokens=600,
        messages=[{'role': 'user', 'content': prompt}]
    )
    return result.content[0].text

การวิจารณ์ตามหลายเกณฑ์

สำหรับผลลัพธ์ที่มีผลกระทบสูง ให้ตรวจสอบตามหลายเกณฑ์ในรอบเดียวโดยระบุเกณฑ์เหล่านั้นอย่างชัดเจน วิธีนี้มีประสิทธิภาพมากกว่าการเรียกใช้เพื่อวิจารณ์แยกกันสำหรับแต่ละเกณฑ์

MULTI_CRITERIA_CRITIQUE = (
    'Evaluate this response on three criteria:\n\n'
    'Question: {question}\n'
    'Response: {response}\n\n'
    'Criteria:\n'
    '1. ACCURACY: Are all facts correct and claims well-supported?\n'
    '2. COMPLETENESS: Does it fully address the question?\n'
    '3. CLARITY: Is it easy to understand for the target audience?\n\n'
    'For each criterion, rate it Good/Fair/Poor and explain why.\n'
    'Then provide an improved response that scores Good on all three.'
)

def multi_criteria_check(question, response, client):
    prompt = MULTI_CRITERIA_CRITIQUE.format(
        question=question,
        response=response
    )
    result = client.messages.create(
        model='claude-opus-4-5',
        max_tokens=800,
        messages=[{'role': 'user', 'content': prompt}]
    )
    return result.content[0].text

ขั้นตอนการแก้ไข: แนวทางปฏิบัติที่ดี

คำสั่งสำหรับการแก้ไขควรทำสามสิ่ง:

  1. เตือนแบบจำลองถึงคำขอเดิม (บริบท)
  2. แสดงผลการวิจารณ์
  3. ขอคำตอบฉบับแก้ไขที่จัดการกับประเด็นต่าง ๆ

อย่าขอให้แบบจำลองอธิบายการวิจารณ์ซ้ำในขั้นตอนการแก้ไข แต่ให้แก้ไขโดยตรง การทำให้คำสั่งสำหรับการแก้ไขมุ่งเน้นการลงมือแก้ไขจะให้ผลลัพธ์ที่ดีกว่า

# Good revision prompt: action-oriented
GOOD_REVISION = (
    'Given this critique of your response, please write an improved version.\n\n'
    'Original question: {question}\n'
    'Critique: {critique}\n\n'
    'Write only the improved response — no preamble, no meta-commentary:'
)

# Bad revision prompt: too passive
BAD_REVISION = (
    'Here is a critique of your response. Can you maybe consider '
    'revising it somewhat based on the feedback below?\n'
    'Critique: {critique}'
    # Missing original question context!
    # Wishy-washy language reduces revision quality
)

การเชื่อมโยงรอบการแก้ไขหลายรอบ

การวิจารณ์และแก้ไขเพียงรอบเดียวมักไม่เพียงพอสำหรับข้อกำหนดด้านคุณภาพที่ซับซ้อนมาก คุณสามารถเชื่อมโยงหลายรอบเข้าด้วยกัน โดยแต่ละรอบใช้หลักการที่แตกต่างกันหรือตรวจสอบปัญหาที่ยังเหลืออยู่

import anthropic

client = anthropic.Anthropic(api_key='sk-ant-...')

def multi_round_revision(question, n_rounds=2):
    # Round 0: Initial generation
    response = client.messages.create(
        model='claude-opus-4-5',
        max_tokens=512,
        messages=[{'role': 'user', 'content': question}]
    ).content[0].text

    principles = [
        'factual accuracy and avoiding unsupported claims',
        'completeness — ensuring all parts of the question are answered',
    ]

    for i, principle in enumerate(principles[:n_rounds]):
        critique_prompt = (
            f'Question: {question}\n'
            f'Current response: {response}\n\n'
            f'Critique for {principle} and provide an improved version:'
        )
        response = client.messages.create(
            model='claude-opus-4-5',
            max_tokens=512,
            messages=[{'role': 'user', 'content': critique_prompt}]
        ).content[0].text
        print(f'Round {i+1} complete')

    return response

การวิจารณ์ตนเองสำหรับการสร้างโค้ด

การวิจารณ์ตนเองมีประสิทธิภาพเป็นพิเศษสำหรับการสร้างโค้ด แบบจำลองจะเขียนโค้ดก่อน จากนั้นตรวจสอบข้อบกพร่อง กรณีขอบเขต และปัญหาด้านความปลอดภัย ซึ่งมักช่วยตรวจพบข้อผิดพลาดที่พลาดไปในครั้งแรก

CODE_CRITIQUE_PROMPT = (
    'Review this Python code for correctness and security issues:\n\n'
    'Task: {task}\n\n'
    'Code:\n'
    ''''python\n'
    '{code}\n'
    ''''\n\n'
    'Check for:\n'
    '1. Logic errors or off-by-one mistakes\n'
    '2. Unhandled edge cases (empty input, None, division by zero)\n'
    '3. Security issues (SQL injection, path traversal, etc.)\n\n'
    'If issues exist, list them and provide a corrected version. '
    'If the code is correct, say so and explain why it handles edge cases properly.'
)

def critique_code(task, code, client):
    prompt = CODE_CRITIQUE_PROMPT.format(task=task, code=code)
    result = client.messages.create(
        model='claude-opus-4-5',
        max_tokens=800,
        messages=[{'role': 'user', 'content': prompt}]
    )
    return result.content[0].text

ความสอดคล้องในตัวเองในฐานะทางเลือก

ความสอดคล้องในตัวเองเป็นแนวทางที่แตกต่างออกไป โดยสร้างคำตอบเดิม N ครั้ง จากนั้นใช้การลงคะแนนเสียงข้างมาก หรือขอให้แบบจำลองสังเคราะห์คำตอบที่ดีที่สุดจากร่างคำตอบหลายฉบับ

ใช้ความสอดคล้องในตัวเองกับคำถามที่มีคำตอบถูกต้องชัดเจน และใช้การวิจารณ์และแก้ไขเมื่อคุณภาพมีหลายมิติ เช่น ความถูกต้อง น้ำเสียง และความปลอดภัย

import anthropic
from collections import Counter

client = anthropic.Anthropic(api_key='sk-ant-...')

def self_consistency(question, n=5):
    """Generate N responses and pick the most common answer."""
    responses = []
    for _ in range(n):
        r = client.messages.create(
            model='claude-haiku-4-5',
            max_tokens=100,
            temperature=0.7,
            messages=[{'role': 'user', 'content': question}]
        )
        responses.append(r.content[0].text.strip())

    # Pick most common answer
    vote = Counter(responses)
    winner, count = vote.most_common(1)[0]
    print(f'Consensus ({count}/{n}): {winner}')
    return winner

result = self_consistency('What is the sum of angles in a triangle?')

เมื่อการวิจารณ์ส่งผลเสีย: ความเสี่ยงจากการวิจารณ์มากเกินไป

การวิจารณ์ตนเองไม่ได้ให้ประโยชน์เสมอไป โปรดระวังรูปแบบความล้มเหลวเหล่านี้:

  • การวิจารณ์แบบประจบประแจง: แบบจำลองบอกว่าคำตอบของตนยอดเยี่ยม แม้ว่าคำตอบนั้นจะผิด
  • ความระมัดระวังเกินไป: แบบจำลองลบข้อมูลที่มีประโยชน์ออกระหว่างการแก้ไข เพราะเห็นว่าข้อมูลนั้นอาจมีความเสี่ยง
  • การแก้ไขจากการหลอนของแบบจำลอง: การแก้ไขทำให้เกิดข้อผิดพลาดใหม่ที่ไม่มีอยู่ในคำตอบเดิม

ลดความเสี่ยงด้วยการใช้แบบจำลองอื่นสำหรับการวิจารณ์ ยึดการวิจารณ์กับข้อเท็จจริงเฉพาะ และตรวจสอบผลลัพธ์ที่แก้ไขแล้วกับคำตอบที่ทราบว่าถูกต้อง

การวัดประสิทธิผลของการวิจารณ์

ติดตามว่าการวิจารณ์ช่วยปรับปรุงผลลัพธ์จริงหรือไม่ โดยเปรียบเทียบคำตอบเริ่มต้นและคำตอบที่แก้ไขแล้วกับมาตรฐานอ้างอิง วิธีนี้ช่วยบอกได้ว่าการเรียกใช้ LLM เพิ่มเติมคุ้มกับต้นทุนหรือไม่

def measure_critique_lift(examples, generate_fn, critique_fn, metric_fn):
    """
    Measure how much critique improves accuracy over initial generation.
    """
    initial_scores = []
    revised_scores = []

    for ex in examples:
        initial = generate_fn(ex.question)
        revised = critique_fn(ex.question, initial)

        initial_scores.append(metric_fn(ex.answer, initial))
        revised_scores.append(metric_fn(ex.answer, revised))

    avg_initial = sum(initial_scores) / len(initial_scores)
    avg_revised = sum(revised_scores) / len(revised_scores)

    print(f'Initial: {avg_initial:.1%}')
    print(f'Revised: {avg_revised:.1%}')
    print(f'Lift:   +{avg_revised - avg_initial:.1%}')
    return avg_revised - avg_initial

ตรวจสอบความรู้: จังหวะเวลาของการวิจารณ์ตนเอง

รูปแบบใดเหมาะสมที่สุดสำหรับตรวจจับข้อผิดพลาดด้านข้อเท็จจริงในคำตอบก่อนแสดงให้ผู้ใช้เห็น

สรุป: รูปแบบการวิจารณ์ตนเองและการแก้ไขปรับปรุง

พรอมต์สำหรับการวิจารณ์ตนเองจะขอให้โมเดลตรวจทานผลลัพธ์ของตนเองตามเกณฑ์เฉพาะ เช่น ความถูกต้อง ความครบถ้วน ความปลอดภัย หรือความชัดเจน จากนั้นจึงสร้างฉบับแก้ไขปรับปรุงที่ดีขึ้น รูปแบบที่มีประสิทธิภาพ ได้แก่ การวิจารณ์ด้านความถูกต้อง (ตรวจทานข้อผิดพลาดด้านข้อเท็จจริง) การตรวจสอบความครบถ้วน (คุณตอบครบทุกส่วนหรือไม่) การวิจารณ์ด้านอันตราย (สิ่งนี้อาจเอื้อให้เกิดการกระทำที่เป็นอันตรายหรือไม่) และการตรวจทานโค้ด (ตรวจหาจุดบกพร่องและกรณีขอบ) เชื่อมหลายรอบเข้าด้วยกันสำหรับผลลัพธ์ที่มีความสำคัญสูง วัดผลลัพธ์ที่ดีขึ้นจริงเพื่อยืนยันว่าค่าใช้จ่ายเพิ่มเติมนั้นคุ้มค่า

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

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

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

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

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

บทเรียน “รูปแบบการวิจารณ์ตนเองและการแก้ไข” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “รูปแบบการวิจารณ์ตนเองและการแก้ไข”

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

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

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

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

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

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

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

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

  1. หลักการ CAI และพรอมต์วิจารณ์ตนเอง
  2. รูปแบบการวิจารณ์ตนเองและการแก้ไข
  3. ความตึงเครียดระหว่างความไม่เป็นอันตรายกับความมีประโยชน์
  4. การนำ CAI ไปใช้ในแอปพลิเคชัน
← กลับไปที่ AI Prompt Engineering