วิธีที่ผมทำ A/B Test Prompt ของ LLM โดยไม่หลอกตัวเอง
ครั้งหนึ่งผมเคยสร้างผู้ช่วยสนับสนุน (support assistant) และคิดว่าผมเจอตัวที่เจ๋งที่สุดแล้ว ผมรันเคสทดสอบไป 30 เคส พบว่า Prompt ใหม่ได้คะแนนสูงกว่า ผมจึงตัดสินใจปล่อยใช้งานจริง (ship it)
หกชั่วโมงต่อมา คิวงานสนับสนุนก็เต็มไปด้วยคำร้องเรียน ผมต้องย้อนกลับ (roll back) การเปลี่ยนแปลงนั้นภายในคืนเดียวกัน
คะแนนที่สูงกว่านั้นเป็นของปลอม ตัวอย่างเพียง 30 เคสไม่เพียงพอที่จะแยกแยะระหว่างการพัฒนาที่เกิดขึ้นจริงกับการสุ่มดวง ตัวเลขนั้นเป็นเพียงสัญญาณรบกวน (noise) เท่านั้น
นี่คือวิธีที่คุณจะทดสอบ Prompt โดยไม่ทำผิดพลาดแบบนั้น
การทดสอบขนาดเล็กจะตรวจพบได้เฉพาะการเปลี่ยนแปลงขนาดใหญ่เท่านั้น หากคุณต้องการหาการพัฒนาเพียงเล็กน้อย คุณต้องใช้ตัวอย่างจำนวนมากขึ้น หากต้องการหาการเปลี่ยนแปลงที่น้อยมาก คุณอาจต้องใช้ตัวอย่างมากกว่าหนึ่งพันเคส
ใช้คำถามชุดเดียวกันสำหรับทั้งสองเวอร์ชัน อย่าให้ Version A ใช้คำถามชุดหนึ่ง และ Version B ใช้คำถามอีกชุดหนึ่ง เพราะคำถามบางข้อก็ยากกว่าข้ออื่น หาก Version B ได้รับคำถามที่ง่ายกว่า มันจะดูดีกว่าแม้ว่าจริงๆ แล้วมันจะแย่กว่าก็ตาม จงรันทั้งสองเวอร์ชันผ่านชุดคำถามที่เหมือนกันทุกประการ
ดูที่ช่วงของผลลัพธ์ (range) ไม่ใช่แค่ค่าเฉลี่ย ค่าเฉลี่ยไม่ได้บอกอะไรคุณเลยว่าชัยชนะนั้นยิ่งใหญ่แค่ไหน ให้รายงานช่วงของการพัฒนาที่น่าจะเป็นไปได้ตั้งแต่ค่าที่น้อยที่สุดไปจนถึงค่าที่มากที่สุด หากช่วงนั้นครอบคลุมถึงเลขศูนย์ อย่าเพิ่งปล่อยใช้งาน
เลือกวิธีการให้คะแนนที่เหมาะสม • ใช้ Checklist สำหรับคุณภาพที่วัดผลได้แน่นอน (absolute quality) • ใช้การเปรียบเทียบแบบเคียงข้างกัน (side-by-side comparison) สำหรับคุณภาพที่วัดผลได้ยาก (fuzzy quality) เช่น น้ำเสียง (tone) หรือความมีประโยชน์ (helpfulness)
ใช้ Bandit สำหรับกรณีที่มีหลายเวอร์ชัน หากคุณมีตั้งแต่สามเวอร์ชันขึ้นไปและต้องการจำกัดความหงุดหงิดของผู้ใช้ ให้ใช้ Bandit ซึ่งจะส่ง Traffic ไปยังเวอร์ชันที่ชนะมากขึ้นเรื่อยๆ เมื่อมันเรียนรู้ วิธีนี้จะช่วยป้องกันไม่ให้ผู้ใช้ต้องเจอคำตอบแย่ๆ เป็นเวลาหลายสัปดาห์
หลีกเลี่ยงกับดักเหล่านี้:
- การเปรียบเทียบค่าเฉลี่ยโดยไม่มีการดูช่วงของผลลัพธ์ (range)
- การใช้ชุดคำถามที่ต่างกันสำหรับแต่ละเวอร์ชัน
- การเปลี่ยนตัวให้คะแนน (scorer) ในระหว่างการทดสอบ
- การหยุดการทดสอบทันทีที่ตัวเลขดูดี
- การดูตัวชี้วัด (metrics) มากเกินไปในคราวเดียว ซึ่งจะเพิ่มโอกาสที่คุณจะเห็นชัยชนะที่หลอกลวง
- การเชื่อใจตัวให้คะแนนก่อนที่คุณจะตรวจสอบความถูกต้องเทียบกับการตัดสินของมนุษย์
ส่วนที่ยากไม่ใช่การรันการทดสอบ แต่ส่วนที่ยากคือการรู้ว่าเมื่อไหร่ที่ผลลัพธ์นั้นเป็นของจริง
Source: https://dev.to/kartik-nvjk/how-i-ab-test-llm-prompts-without-fooling-myself-528f
Optional learning community: https://t.me/GyaanSetuAi
