การสร้างชุดทดสอบมาตรฐาน
คัดสรรคู่ข้อมูลคุณภาพสูง 50–200 คู่ในรูปแบบ (ข้อมูลเข้า, ผลลัพธ์ที่คาดหวัง) ให้ครอบคลุมกรณีใช้งานจริงที่พบไม่บ่อย
การสร้างชุดทดสอบมาตรฐาน เป็นบทเรียน AI Agents ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน AI Agents และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส AI Agents มีบทเรียนทั้งหมด 4 บทเรียน
บางส่วนของบทเรียนนี้ยังไม่ได้รับการแปล และแสดงเป็นภาษาอังกฤษ
ชุดข้อมูลมาตรฐานคืออะไร
"ชุดทดสอบมาตรฐาน" (หรือ "ชุดข้อมูลมาตรฐาน") คือชุดคู่ (ข้อมูลป้อนเข้า, ผลลัพธ์ที่คาดหวัง) ที่ผ่านการคัดสรร ซึ่งกำหนดว่าพฤติกรรมที่ดีควรเป็นอย่างไร
การเปลี่ยนแปลงทุกครั้งจะถูกวัดเทียบกับชุดนี้
คุณสมบัติของชุดข้อมูลมาตรฐานที่ดี
- หลากหลาย — ครอบคลุมกรณีทั่วไปและกรณีขอบเขต
- มนุษย์เป็นผู้คัดสรร — ไม่ได้สร้างขึ้นโดยอัตโนมัติ
- มีการกำหนดรุ่น — ตรึงไว้ในที่เก็บโค้ดของคุณ
- มีเอกสารประกอบ — แต่ละกรณีมีเหตุผลรองรับ
ควรมีกรณีจำนวนเท่าใด
หลักประมาณการทั่วไป:
- 50 กรณี — ขั้นต่ำที่ใช้งานได้
- 200 กรณี — ครอบคลุมได้ดี
- 1,000+ กรณี — ผลิตภัณฑ์ที่พัฒนาเต็มที่
คุณภาพ > ปริมาณ กรณีที่คัดเลือกมาอย่างดี 50 กรณีดีกว่า 500 กรณีที่สุ่มมา
การจัดหากรณี
- การสัมภาษณ์ผู้ใช้ — ผู้ใช้จริงถามอะไร
- บันทึกจากระบบจริง — มีคำถามใดถูกส่งเข้ามา
- รายงานข้อบกพร่อง — ข้อบกพร่องทุกข้อจะกลายเป็นการประเมิน
- การสร้างกรณีเชิงปรปักษ์ — ขอให้ LLM พยายามทำให้ตัวแทนล้มเหลว
Mining Bad Production Traces
for trace in last_week_traces():
if trace.has_thumbs_down or trace.had_error:
case = {
'input': trace.input,
'why_bad': trace.feedback_comment,
'expected': None # to be filled by human reviewer
}
save_to_review_queue(case)ผลลัพธ์ที่คาดหวัง: ตรงทุกประการเทียบกับใช้เกณฑ์ประมาณ
ผลลัพธ์ที่คาดหวังมีสองรูปแบบ:
- ตรงทุกประการ — สำหรับการดึงข้อมูล การจัดประเภท และการคำนวณ
- ใช้เกณฑ์ประมาณ — สำหรับคำถามและคำตอบปลายเปิด ให้ให้คะแนนว่ามีข้อเท็จจริงสำคัญปรากฏหรือไม่
Heuristic Scoring
def score_answer(actual, expected_facts):
return sum(1 for f in expected_facts if f.lower() in actual.lower()) / len(expected_facts)
case = {
'input': 'What is our refund policy?',
'expected_facts': ['30 days', 'unopened', 'receipt required'],
'min_score': 0.66 # at least 2 of 3 facts mentioned
}
actual_answer = "You can return items within 30 days if they are unopened."
score = score_answer(actual_answer, case['expected_facts'])
print(f"Score: {score:.2f} (min required: {case['min_score']})")
กรณีเชิงปรปักษ์
ควรรวมกรณีที่ยากด้วย:
- คำถามนอกขอบเขต ("สภาพอากาศบนดาวอังคารเป็นอย่างไร")
- คำถามกำกวม
- ความพยายามแทรกคำสั่งในพรอมต์
- ข้อมูลป้อนเข้าภาษาต่างประเทศ
- ข้อมูลป้อนเข้าที่ยาวมาก
การกำหนดรุ่นชุดข้อมูลมาตรฐาน
จัดเก็บเป็น JSON ในที่เก็บโค้ดของคุณ PR ทุกฉบับที่ปรับปรุงชุดข้อมูลต้องอธิบายเหตุผล:
// gold-set.json
[
{
"id": "refund-policy-001",
"input": "What is your refund policy?",
"expected_facts": ["30 days", "unopened", "receipt required"],
"added_by": "alice@",
"added_at": "2025-08-12",
"reason": "Top customer support question"
}
]การแบ่งชุดทดสอบ/ชุดกันไว้ตรวจสอบ
เพื่อตรวจจับการปรับให้เข้ากับข้อมูลมากเกินไป ให้แบ่งเป็น:
- ชุดพัฒนา — ใช้ปรับปรุงซ้ำ (คุณมองเห็นชุดนี้)
- ชุดทดสอบ — ใช้วัดผล (คุณต้องไม่ปรับแต่งให้เข้ากับชุดนี้)
- ชุดกันไว้ตรวจสอบ — ใช้เฉพาะก่อนการเผยแพร่ครั้งใหญ่
การติดป้ายกำกับพาเรโต
ติดป้ายกำกับกรณีตามหมวดหมู่ เพื่อให้เห็นว่าคุณถดถอยลงที่ใด:
tag1 = {'tags': ['policy', 'common-question']}
tag2 = {'tags': ['math', 'edge-case']}
print(tag1)
print(tag2)
# Run eval and report:
print("Category 'policy': 0.92")
print("Category 'math': 0.68 <- regression here")
เกณฑ์การประเมิน
สำหรับผลลัพธ์ที่ซับซ้อน ให้เขียนเกณฑ์การประเมินว่าอะไรต้องมี อะไรต้องไม่มี และอะไรเป็นสิ่งที่พึงประสงค์:
rubric = {
'must_include': ['30 days'],
'must_not_include': ['no refunds'],
'preferably_includes': ['receipt']
}
for k, v in rubric.items():
print(f"{k}: {v}")
แหล่งที่มาของกรณี
แหล่งที่มาของกรณีการประเมินที่ให้สัญญาณชัดเจนที่สุดคืออะไร
สรุป
กรณีที่ผ่านการคัดสรรมากกว่า 50 กรณี ซึ่งมาจากผู้ใช้จริงและความล้มเหลวในระบบจริง กำหนดรุ่น ติดป้ายกำกับ และแบ่งเป็นชุดพัฒนา/ทดสอบ/กันไว้ตรวจสอบ ขยายชุดนี้เมื่อพบข้อบกพร่องทุกครั้ง
คำถามที่พบบ่อย
บทเรียน “การสร้างชุดทดสอบมาตรฐาน” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การสร้างชุดทดสอบมาตรฐาน” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส AI Agents ให้อัปเกรดเป็น CoddyKit PRO คอร์ส AI Agents มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การสร้างชุดทดสอบมาตรฐาน”
คัดสรรคู่ข้อมูลคุณภาพสูง 50–200 คู่ในรูปแบบ (ข้อมูลเข้า, ผลลัพธ์ที่คาดหวัง) ให้ครอบคลุมกรณีใช้งานจริงที่พบไม่บ่อย คุณปฏิบัติ AI Agents ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน AI Agents หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน AI Agents บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “การสร้างชุดทดสอบมาตรฐาน” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน AI Agents นี้ได้ไหม
ได้ บทเรียน AI Agents ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การพัฒนาเอเจนต์โดยขับเคลื่อนด้วยการประเมิน
- การสร้างชุดทดสอบมาตรฐาน
- ข้อผิดพลาดของการใช้ LLM เป็นผู้ตัดสิน
- ชุดการทดสอบประสิทธิภาพ: SWE-Bench, GAIA, ToolBench