การวินิจฉัยผลลัพธ์ที่ไม่คาดคิด
จำแนกรูปแบบความล้มเหลว: คำตอบผิด รูปแบบผิด นอกหัวข้อ และการสร้างข้อมูลหลอน
การวินิจฉัยผลลัพธ์ที่ไม่คาดคิด เป็นบทเรียน AI Prompt Engineering ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน AI Prompt Engineering และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส AI Prompt Engineering มีบทเรียนทั้งหมด 4 บทเรียน
เมื่อพรอมต์ล้มเหลว
แม้แต่พรอมต์ที่สร้างขึ้นอย่างรอบคอบก็อาจให้ผลลัพธ์ผิดพลาดได้ การวินิจฉัยความล้มเหลวต้องใช้ระบบจำแนกประเภทว่าความล้มเหลวที่เกิดขึ้นเป็นประเภทใด หากไม่มีการจำแนกประเภท การแก้จุดบกพร่องก็ไม่ต่างจากการคาดเดา ความล้มเหลวหลักมีสี่ประเภท ได้แก่ คำตอบผิด รูปแบบผิด คำตอบไม่ตรงประเด็น และการสร้างข้อมูลหลอน
ประเภทความล้มเหลวที่ 1: คำตอบผิด
คำตอบผิด คือข้อผิดพลาดด้านข้อเท็จจริง กล่าวคือ โมเดลให้คำตอบในรูปแบบที่ถูกต้องและตรงหัวข้อ แต่เนื้อหาไม่ถูกต้อง
ตัวอย่างเช่น วันที่ สถิติ ชื่อ หรือโค้ดที่มีข้อบกพร่องด้านตรรกะ นี่เป็นความล้มเหลวที่ตรวจจับโดยอัตโนมัติได้ยากที่สุด เพราะผลลัพธ์ดูถูกต้องเมื่อมองจากภายนอก
- สาเหตุ: จุดตัดข้อมูลฝึกสอน ข้อเท็จจริงที่พบได้ยาก หรือข้อผิดพลาดในการให้เหตุผลหลายขั้นตอน
- การตรวจจับ: เปรียบเทียบกับข้อมูลอ้างอิงที่ถูกต้อง ตรวจสอบโดยมนุษย์ หรือเรียก LLM เพื่อตรวจสอบ
# Example: wrong answer failure
prompt = 'What year was Python first released?'
response = 'Python was first released in 1994.' # Wrong — it was 1991
# Ground truth check
GROUND_TRUTH = '1991'
correct = GROUND_TRUTH in response
print(f'Correct: {correct}') # Falseประเภทความล้มเหลวที่ 2: รูปแบบผิด
ความล้มเหลวแบบรูปแบบผิดเกิดขึ้นเมื่อโมเดลตอบคำถามถูกต้องและให้ข้อมูลถูกต้อง แต่ไม่ปฏิบัติตามคำสั่งด้านรูปแบบ
ตัวอย่างเช่น ส่งคืนข้อความธรรมดาเมื่อขอ JSON เพิ่มมาร์กดาวน์เมื่อกำหนดให้ใช้ข้อความธรรมดา หรือส่งคืนรายการเมื่อขอค่าเดียว
- สาเหตุ: คำสั่งด้านรูปแบบถูกซ่อนไว้ในพรอมต์ที่ยาว คำสั่งขัดแย้งกัน หรือโมเดลไม่สนใจคำสั่งที่มีลำดับความสำคัญต่ำ
- การตรวจจับ: ข้อผิดพลาดในการแยกวิเคราะห์ JSON นิพจน์ปกติไม่ตรงกัน หรือการตรวจสอบโครงสร้างข้อมูลล้มเหลว
import json
response_text = 'Sure! Here is the result: {"name": "Alice", "age": 30}'
try:
data = json.loads(response_text)
print('Format OK:', data)
except json.JSONDecodeError as e:
print(f'FORMAT FAILURE: {e}')
# 'Sure! Here is the result:' prefix broke JSON parsingประเภทความล้มเหลวที่ 3: คำตอบไม่ตรงประเด็น
ความล้มเหลวแบบไม่ตรงประเด็นหมายความว่าโมเดลตอบคำถามคนละข้อกับที่ถาม คำตอบอาจถูกต้องตามข้อเท็จจริงและมีรูปแบบดี แต่ไม่ตอบเจตนาที่แท้จริงของผู้ใช้
ตัวอย่างเช่น ขอฟังก์ชันภาษาไพธอน แต่ได้รับฟังก์ชัน JavaScript ขอคำตอบหนึ่งบรรทัด แต่ได้รับเรียงความฉบับเต็ม หรือขอให้แก้ข้อบกพร่อง แต่ได้รับคำอธิบายข้อบกพร่องแทนวิธีแก้
- สาเหตุ: คำสั่งกำกวม บริบทขัดแย้งกัน หรืองานเบี่ยงเบนระหว่างการสนทนาที่ยาว
# Off-topic example
prompt = 'Write a Python function that reverses a list.'
response = '''
In JavaScript, you can reverse an array like this:
const reversed = arr.reverse();
'''
# Detection: check that output contains the correct language keyword
def check_language(response, expected_lang='def '):
if expected_lang not in response:
print(f'OFF-TOPIC FAILURE: expected {expected_lang} in response')
return False
return True
check_language(response) # False — no Python defประเภทความล้มเหลวที่ 4: การสร้างข้อมูลหลอน
การสร้างข้อมูลหลอนเป็นความล้มเหลวที่อันตรายที่สุด โมเดลแต่งข้อเท็จจริงที่ไม่มีอยู่จริงขึ้นมา ข้อมูลเหล่านี้ดูน่าเชื่อถือและมีความมั่นใจ จึงสังเกตได้ยาก
ตัวอย่างเช่น การอ้างอิงที่แต่งขึ้น (ชื่อบทความฟังดูเหมือนมีอยู่จริงแต่ไม่มีอยู่จริง) จุดปลายทาง API ที่แต่งขึ้น สถิติปลอม หรือบุคคลที่ไม่มีอยู่จริง
- สาเหตุ: โมเดลเติมช่องว่างทางความรู้ด้วยข้อความที่ดูเป็นไปได้จากการจับคู่รูปแบบ
- การตรวจจับ: ตรวจสอบข้อเท็จจริงกับแหล่งข้อมูลที่เชื่อถือได้ ตรวจสอบการอ้างอิงข้ามแหล่ง และทดสอบการเรียก API
# Hallucination detection via external verification
import requests
def verify_doi(doi):
url = f'https://doi.org/{doi}'
resp = requests.head(url, allow_redirects=True, timeout=5)
return resp.status_code == 200
# Model claimed this paper exists:
fabricated_doi = '10.1234/fake.paper.2023.99999'
if not verify_doi(fabricated_doi):
print('HALLUCINATION DETECTED: DOI does not exist')ระบบจำแนกประเภทความล้มเหลวในทางปฏิบัติ
เมื่อพบความล้มเหลว ให้จำแนกประเภทก่อนพยายามแก้ไข ประเภทความล้มเหลวจะเป็นตัวกำหนดกลยุทธ์การแก้ไข:
- คำตอบผิด: เพิ่มบริบท ใช้การเรียกคืนข้อมูล หรือเปลี่ยนไปใช้โมเดลที่มีความสามารถสูงกว่า
- รูปแบบผิด: ทำให้คำสั่งด้านรูปแบบชัดเจนขึ้น เพิ่มตัวอย่างผลลัพธ์ หรือใช้ผลลัพธ์แบบมีโครงสร้าง / การเรียกใช้ฟังก์ชัน
- ไม่ตรงประเด็น: เขียนคำสั่งใหม่ให้เฉพาะเจาะจงขึ้น และทำให้พรอมต์เรียบง่าย
- การสร้างข้อมูลหลอน: เพิ่มบริบทที่ใช้เป็นหลักยึด สั่งให้ตอบว่า 'ไม่ทราบ' เมื่อไม่รู้ และเปิดใช้การอ้างอิงแหล่งที่มา
การบันทึกความล้มเหลวอย่างมีโครงสร้าง
บันทึกความล้มเหลวทุกครั้งพร้อมประเภทของความล้มเหลว เมื่อเวลาผ่านไปจะเห็นรูปแบบ เช่น ส่วนใดส่วนหนึ่งของพรอมต์ทำให้เกิดข้อผิดพลาดรูปแบบผิดเป็นส่วนใหญ่ หรือหัวข้อใดหัวข้อหนึ่งกระตุ้นให้เกิดการสร้างข้อมูลหลอนบ่อยครั้ง บันทึกที่มีโครงสร้างช่วยให้การแก้จุดบกพร่องอาศัยข้อมูลเป็นหลัก
import json
from datetime import datetime
def log_failure(prompt, response, failure_type, details=''):
entry = {
'timestamp': datetime.utcnow().isoformat(),
'failure_type': failure_type, # wrong_answer | wrong_format | off_topic | hallucination
'prompt_hash': hash(prompt),
'response_snippet': response[:200],
'details': details
}
with open('prompt_failures.jsonl', 'a') as f:
f.write(json.dumps(entry) + '\n')
log_failure(
prompt=my_prompt,
response=bad_response,
failure_type='wrong_format',
details='JSON prefix text broke parsing'
)การจำแนกประเภทความล้มเหลวโดยอัตโนมัติ
สำหรับการทดสอบในขนาดใหญ่ ให้ใช้การเรียก LLM สำหรับจำแนกประเภทเพื่อกำกับป้ายกำกับประเภทความล้มเหลวให้กับคำตอบแต่ละรายการโดยอัตโนมัติ วิธีนี้ช่วยให้ประเมินกรณีทดสอบหลายร้อยกรณีเป็นชุดได้
def classify_failure(prompt, expected, actual):
classification_prompt = (
f'You are a QA evaluator for LLM outputs.\n'
f'Prompt: {prompt}\n'
f'Expected behavior: {expected}\n'
f'Actual output: {actual}\n\n'
'Classify the failure as one of: CORRECT, WRONG_ANSWER, WRONG_FORMAT, OFF_TOPIC, HALLUCINATION.\n'
'Reply with only the label.'
)
resp = client.chat.completions.create(
model='gpt-4o-mini',
messages=[{'role': 'user', 'content': classification_prompt}]
)
return resp.choices[0].message.content.strip()เมทริกซ์ระดับความรุนแรง
ความล้มเหลวแต่ละประเภทไม่ได้ส่งผลกระทบเท่ากันทั้งหมด เมทริกซ์ระดับความรุนแรงช่วยจัดลำดับความสำคัญของการแก้ไข:
- การสร้างข้อมูลหลอนในบริบททางการแพทย์หรือกฎหมาย: ระดับวิกฤต — แก้ไขทันที
- รูปแบบผิดในเครื่องมือภายใน: ระดับสูง — ทำให้การแยกวิเคราะห์ในขั้นถัดไปล้มเหลว
- คำตอบผิดในกรณีขอบเขตที่พบได้ยาก: ระดับปานกลาง — ติดตามความถี่
- คำตอบไม่ตรงประเด็นเมื่อข้อมูลเข้ากำกวม: ระดับต่ำ — ยอมรับได้หากเกิดขึ้นไม่บ่อย
ติดตามอัตราความล้มเหลวแยกตามประเภทในแต่ละสัปดาห์ หากหมวดหมู่ใดมีจำนวนเพิ่มขึ้นอย่างฉับพลัน แสดงว่ามีการถดถอยที่ต้องให้ความสนใจ
การสร้างแผงควบคุมความล้มเหลว
แผงควบคุมความล้มเหลวอย่างง่ายจะอ่านบันทึกความล้มเหลวและรายงานจำนวนแยกตามประเภทและส่วนของพรอมต์:
import json
from collections import Counter
def failure_report(log_path='prompt_failures.jsonl'):
entries = []
with open(log_path) as f:
for line in f:
entries.append(json.loads(line))
counts = Counter(e['failure_type'] for e in entries)
total = len(entries)
print(f'Total failures: {total}')
for ftype, count in counts.most_common():
pct = 100 * count / total
print(f' {ftype}: {count} ({pct:.1f}%)')
failure_report()การป้องกันความล้มเหลวเชิงรุก
กลยุทธ์เชิงรุกเพื่อลดความล้มเหลวแต่ละประเภทก่อนที่จะเกิดขึ้น:
- คำตอบผิด: ให้ข้อความอ้างอิงไว้ในพรอมต์ (RAG) และขอให้โมเดลอ้างอิงแหล่งที่มา
- รูปแบบผิด: ใช้โหมด JSON หรือการเรียกใช้ฟังก์ชัน และให้ตัวอย่างรูปแบบไว้ในพรอมต์
- ไม่ตรงประเด็น: วางงานไว้ในประโยคแรก และหลีกเลี่ยงบทเกริ่นนำยาวที่ทำให้เจตนาจางลง
- การสร้างข้อมูลหลอน: สั่งว่า 'ใช้เฉพาะข้อมูลที่ให้ไว้ด้านล่างเท่านั้น' และเพิ่มว่า 'หากไม่แน่ใจ ให้บอกว่าไม่ทราบ'
ตรวจสอบความรู้
ความล้มเหลวประเภทใดเกิดขึ้นเมื่อโมเดลแต่งข้อเท็จจริงที่ไม่มีอยู่จริงขึ้นมา เช่น แต่งการอ้างอิงหรือจุดปลายทาง API ที่ไม่มีอยู่จริง
สรุปทบทวน: การวินิจฉัยผลลัพธ์ที่ไม่คาดคิด
ความล้มเหลวของ LLM สี่ประเภทและลักษณะสำคัญ:
- คำตอบผิด: รูปแบบถูกต้อง หัวข้อถูกต้อง แต่เนื้อหาผิด — ตรวจสอบข้อเท็จจริงกับข้อมูลอ้างอิงที่ถูกต้อง
- รูปแบบผิด: เนื้อหาถูกต้อง แต่ไม่ปฏิบัติตามคำสั่งด้านรูปแบบ — การตรวจสอบโครงสร้างข้อมูลจะตรวจพบปัญหานี้
- ไม่ตรงประเด็น: รูปแบบถูกต้อง แต่ตอบคำถามคนละข้อ — ตรวจสอบว่าภาษาและงานสอดคล้องกัน
- การสร้างข้อมูลหลอน: แต่งข้อเท็จจริงขึ้นมา — ตรวจสอบกับแหล่งข้อมูลภายนอก
บันทึกและจำแนกประเภทความล้มเหลวทุกครั้ง ติดตามอัตราแยกตามประเภทเมื่อเวลาผ่านไป บทเรียนถัดไปคือการวิเคราะห์สาเหตุราก เพื่อค้นหาว่าส่วนใดของพรอมต์ทำให้เกิดความล้มเหลว
เรียนรู้ 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 ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “การวินิจฉัยผลลัพธ์ที่ไม่คาดคิด” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน AI Prompt Engineering นี้ได้ไหม
ได้ บทเรียน AI Prompt Engineering ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การวินิจฉัยผลลัพธ์ที่ไม่คาดคิด
- การวิเคราะห์สาเหตุรากของพรอมป์ต
- แนวทางการแก้ไขข้อบกพร่องอย่างเป็นระบบ
- กลยุทธ์การบันทึกข้อมูลและจัดทำเอกสาร