02 วัดคุณภาพ
บันทึกสำหรับผู้สอนของโมดูล 02 — เวลา แนวการพูด ความล้มเหลวที่พบบ่อย และขั้นตอนรีเซ็ต
คู่มือของผู้ดำเนินกิจกรรมที่ใช้ควบคู่กับบทเรียน learner 02 วัดคุณภาพ
เวลา
รวมประมาณ 15 นาที
- 5 min — ความแม่นยำรายระดับและการแยกย่อยของ outcome บนมุมมองรายละเอียดใน Leaderboard ของคอนฟิกที่ชนะ
- 4 min — score รอง
agent-arena-llm-judgeและจุดที่มันไม่ตรงกับcorrectness - 6 min — เจาะลงไปใน Langfuse trace แต่ละรายการสองหรือสามอันสำหรับคำถามที่ตอบผิด/ได้ คะแนนต่ำ
แนวการพูด
- วางกรอบเป้าหมายใหม่: การชนะใน Arena บอกคุณว่าคอนฟิกหนึ่งเอาชนะที่เหลือในภาพรวม; โมดูลนี้เกี่ยวกับว่ามันชนะอย่างไรและอ่อนแอที่สุดตรงไหน — แนวคิดเดียวกับการรู้ไม่ใช่ แค่ว่าผู้สมัครผ่านสัมภาษณ์ แต่รู้ว่าคำถามไหนที่เขาตอบได้สวย
- พูดชัด ๆ ว่าโมดูลนี้ไม่ผลิตข้อมูลใหม่ — ทุกอย่างตรงนี้ถูกเก็บไว้แล้วโดย
correctnessและ scoreagent-arena-llm-judgeที่ evaluator definitionllm_judgeปล่อยในโมดูล 01 นี่คือ แบบฝึกการอ่าน ไม่ใช่การรันซ้ำ - ย้ำตัวหารอีกครั้ง: repo มีคำถาม YAML 20 ข้อ แต่
q019และq020เป็น few-shot holdout ดังนั้น Experiment มี dataset item ที่ให้คะแนน 18 รายการ - เรื่องความแม่นยำรายระดับ: ชี้ให้เห็นว่าคอนฟิกหนึ่งอาจดูแข็งแรงในภาพรวมขณะที่ สั่นคลอนในระดับที่ยากที่สุด และนั่นคือสิ่งที่ตัวเลขรวมบน leaderboard ซ่อนไว้เป๊ะ ๆ
- เรื่องการแยกย่อยของ outcome: เดินดูหมวดต่าง ๆ ออกเสียงให้ฟัง — SQL ที่ถูก sandbox ปฏิเสธ, error ของ ClickHouse, ผลลัพธ์ว่างเปล่า, result set ที่ผิด — และบอกว่าแต่ละอันเป็น ปัญหาต่างชนิดกันที่ต้องแก้ต่างกัน ไม่ใช่ "ความล้มเหลว" ก้อนเดียวที่ไม่แยกแยะ
- เรื่อง
agent-arena-llm-judge: มันเป็นพี่น้องที่ละเอียดกว่าของ correctness แบบไบนารี — คอนฟิกหนึ่งอาจ ถูกต้องตามความแม่นยำเชิงการรันขณะที่ยังเขียน SQL ที่ผู้ตรวจจะติงได้ ( subquery ที่ไม่จำเป็น การเทียบวันที่ที่เปราะบาง) หาจุดที่correctnessและagent-arena-llm-judgeไม่ตรงกันสด ๆ ให้ได้หนึ่งจุดถ้าทำได้ มันเป็นวิธีที่ชัดที่สุดที่จะทำให้เห็น ความต่างนี้ - ปิดท้ายด้วยการเลือกคำถามที่ตอบผิด/ได้คะแนนต่ำสองหรือสามข้อ แล้วอ่าน trace เต็มของมัน ตั้งแต่ต้นจนจบสด ๆ — prompt ที่ส่งไป, SQL ที่ถูกสร้างขึ้น, error หรือผลลัพธ์ — โดยมองหา รูปแบบออกเสียงให้ฟัง (ถ้อยคำ, join, ตัวกรองวันที่ที่โมเดลจัดการผิดซ้ำ ๆ) นี่คือทักษะการอ่าน trace แบบเดียวกับที่โมดูล 04 ใช้ซ้ำบนทราฟฟิกของ production
ความล้มเหลวที่พบบ่อย
- ไม่ได้ตั้งค่า Langfuse evaluator — ไม่มีคะแนน
agent-arena-llm-judgeหรือ correctness ให้สร้างโมดูลนี้ขึ้นรอบ ๆ มัน กลับไปที่โมดูล 01 แก้ target/ตัวกรองของ evaluator แล้วรันตารางเล็ก ๆ ใหม่ก่อนจะทำต่อ - ไม่มีคำตอบผิดให้เจาะดู — ถ้าคอนฟิกที่ชนะทำได้ 100% บนตารางเดโม ให้เลือกความล้มเหลวของคอนฟิกที่ไม่ชนะแทน; ทักษะการอ่าน trace คือ ประเด็น ไม่ใช่การหาข้อบกพร่องในผู้ชนะโดยเฉพาะ
- ยังไม่ได้ seed ClickHouse / harness ไม่เคยรัน — มุมมองรายละเอียดใน Leaderboard (ความแม่นยำ รายระดับ, การแยกย่อยของ outcome) จะว่างเปล่า นั่นหมายถึงโมดูล 01 ยังไม่จบ; ให้กลับไป รันมันใหม่ก่อนทำต่อ
- การคลิกเข้าไปที่ trace ได้ 404 หรือโหลดโปรเจกต์ผิด — มักหมายถึง
เบราว์เซอร์เล็งไปที่โปรเจกต์ Langfuse อีกอันที่ไม่ใช่อันใน
.envหรือLANGFUSE_BASE_URL/key ไม่ตรงกับบัญชีที่รัน harness ของโมดูล 01
ขั้นตอนรีเซ็ต
- ถ้ามุมมองรายละเอียดใน Leaderboard ว่างเปล่า ให้ seed ใหม่และรันชุดย่อยราคาถูกซ้ำ:
scripts/arena.sh upแล้วpython -m eval.harness --run-id demo2 --models qwen3.7-flash,gpt-5.6-luna --prompts P1_zeroshot,P3_dialect - ใช้
--run-idใหม่สำหรับการรันซ้ำ เพื่อให้ชัดเจนว่าแถวไหนบน Leaderboard และ Langfuse Experiment อันไหนที่คุณกำลังอ่านอยู่ในห้อง - ถ้าติดขัดแค่การเรนเดอร์ของ dashboard (Experiment มีอยู่ใน Langfuse) ให้รีสตาร์ต
เซิร์ฟเวอร์ในเครื่องโดยไม่ต้อง seed ใหม่:
scripts/arena.sh stop && scripts/arena.sh serve - ถ้า evaluator เป็นช่องว่าง ความลึกของโมดูลนี้ขึ้นอยู่กับการแก้เรื่องนั้นก่อนเซสชัน ถัดไป — ไม่มีอะไรมาแทนคะแนนฝั่ง Langfuse ได้ในเซสชัน