ระบบทดสอบของคุณจะหลอกคุณ ก่อนที่โมเดลของคุณจะหลอกเสียอีก
ตารางคะแนนการประเมินของคุณระบุว่าทั้งสองเอนจินล้มเหลว
Llama3.2 ล้มเหลว 5 จาก 6 กรณี Anthropic Sonnet ล้มเหลว 6 จาก 6 กรณี
ป้ายกำกับระบุว่า "malformed" แต่สาเหตุนั้นแตกต่างกัน
ความล้มเหลวหนึ่งเกิดจากข้อผิดพลาดของ API เนื่องจากเครดิตหมด ความล้มเหลวหนึ่งเกิดจาก ANSI control bytes จากคำสั่ง CLI ที่ทำให้ข้อความเสียหาย ความล้มเหลวหนึ่งคือ JSON ที่ถูกต้องแต่ถูกหุ้มด้วย markdown fences ซึ่งตัว parser ไม่สามารถอ่านได้
หากผมเผยแพร่สรุปผลครั้งแรกนั้น ผมคงจะกำลังโกหกอยู่ เพราะผมจะไปโทษโมเดล ทั้งที่ความล้มเหลวเกิดจากโค้ดของผมเอง
ผมพบข้อผิดพลาดเหล่านี้จากการดูข้อมูลดิบ (raw records) แทนที่จะเชื่อแค่บทสรุป
บั๊กแรกเกิดขึ้นเพราะผมใช้ CLI subprocess ในการเรียก Ollama ซึ่งคำสั่งนั้นสร้างแอนิเมชันบนเทอร์มินัล เช่น ตัวหมุน (spinners) และการเคลื่อนที่ของเคอร์เซอร์ ทำให้ ANSI control bytes เหล่านี้หลุดเข้าไปในข้อมูลของผม เมื่อ parser เจอตัวอักษรที่มองไม่เห็นจึงเกิดการ crash
วิธีแก้ไข: เปลี่ยนจากการใช้ CLI subprocess มาเป็นการใช้ HTTP API โดยตรง
บั๊กที่สองเกิดขึ้นเพราะ LLM มักจะหุ้ม JSON ไว้ใน markdown fences โดยที่ parser ของผมใช้ json.loads() กับสตริงดิบ เมื่อมันเจอเครื่องหมาย backticks จึงทำงานล้มเหลว
วิธีแก้ไข: เพิ่มฟังก์ชันสำหรับลบ code fences ออกก่อนที่จะทำการ parse
เมื่อผมแก้ไขระบบส่งต่อข้อมูล (pipe) เรียบร้อยแล้ว ผลลัพธ์ที่แท้จริงจึงปรากฏขึ้น
โมเดลไม่ได้ "ตาย" แต่มันแค่ถูกทำให้ข้อมูลผิดเพี้ยนโดยระบบทดสอบ (harness) หลังจากแก้ไขแล้ว ช่องว่างของคุณภาพระหว่างโมเดลทั้งสองก็ปรากฏให้เห็นและสามารถวัดผลได้
บทเรียนสำหรับ AI evaluation pipeline ของคุณ:
- เก็บข้อมูลดิบ (raw output) ไว้เสมอ หากบทสรุปบอกว่า malformed ข้อมูลดิบคือแหล่งข้อมูลความจริงเพียงหนึ่งเดียวของคุณ
- บันทึกสาเหตุของความล้มเหลว อย่าบอกแค่ว่า "malformed" แต่ให้ระบุว่าเป็น "API error" หรือ "parse error"
- กำหนดมาตรฐานการทดสอบให้คงที่ อย่าเปลี่ยนกฎเพื่อให้ผลลัพธ์ดูดีขึ้น
- ปฏิบัติกับระบบทดสอบ (harness) เสมือนเป็นส่วนหนึ่งของระบบที่กำลังทดสอบ
โมเดลไม่ใช่สิ่งเดียวที่กำลังถูกทดสอบ แต่โค้ดของคุณก็เช่นกัน
Source: https://dev.to/kenielzep97/your-harness-will-lie-to-you-before-your-model-does-662
Optional learning community: https://t.me/GyaanSetuAi
