สั่ง AI แยกฟิลด์ด้วย <TAB> พลาดทำข้อมูลสูญหาย 79%
นักพัฒนาแชร์ประสบการณ์สั่งโมเดล AI แยกฟิลด์ด้วยตัวอักษร literal <TAB> แทนที่จะเป็นอักขระควบคุม ส่งผลให้ข้อมูลหายเกลี้ยง 79% พร้อมแชร์บทเรียนวิธีแก้ปัญหา

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
- นักพัฒนาสั่ง AI แยกข้อมูลด้วยตัวอักษรพิมพ์ใหญ่
แทนแท็บจริง ทำให้ข้อมูลหายไป 79% - ระบบตรวจจับข้อผิดพลาดนับรวมข้อมูลที่พังเป็นตัวเดียวกับการ hallucination จนเข้าใจผิดว่าระบบปกติ
- การเปลี่ยนมาใช้ตัวอย่างแบบจำลอง (worked example) ด้วยเครื่องหมาย pipe (|) ช่วยแก้ปัญหาการแยกฟิลด์ได้ทันที
- การเพิ่มฟลาก --probe เพื่อรันดูผลลัพธ์ดิบใน 7 วินาทีช่วยประหยัดเวลาการเทสต์จาก 40 นาที
ในโลกของการพัฒนาซอฟต์แวร์และการสั่งงานปัญญาประดิษฐ์ ความผิดพลาดเล็กน้อยในคำสั่ง (prompt) มักส่งผลกระทบที่คาดไม่ถึง ล่าสุดมีนักพัฒนาซอฟต์แวร์รายหนึ่งได้ออกมาแชร์บทเรียนราคาแพง หลังจากที่เขาบอกให้โมเดล AI ทำการแยกฟิลด์ข้อมูลโดยใช้ตัวอักษรพิมพ์ใหญ่
เรื่องราวเริ่มต้นขึ้นเมื่อคำสั่งระบุให้อุปกรณ์แยกฟิลด์ด้วยข้อความ literal 5 ตัวอักษร ได้แก่ เครื่องหมายน้อยกว่า, ตัวอักษร T, A, B และเครื่องหมายมากกว่า (

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
ผลลัพธ์ที่ได้คือจากเอกสารจำนวน 310 เรคอร์ด มีเรคอร์ดถูกทิ้งไปมากถึง 246 เรคอร์ด โดยมีเพียง 5 เรคอร์ดเท่านั้นที่ถูกคัดทิ้งด้วยเหตุผลจริงๆ ที่ระบบถูกสร้างขึ้นมาเพื่อตรวจสอบ ความผิดพลาดนี้ไม่ได้เกิดจากการทำงานที่ผิดพลาดของโมเดล แต่เกิดจากตัวผู้พัฒนาเองที่ระบุคำสั่งผิดพลาดตั้งแต่ต้นทาง
สิ่งที่ทำให้บั๊กนี้ตรวจจับได้ยากและอยู่รอดมาได้นานก็คือ ตัวนับจำนวนเรคอร์ดที่ถูกปฏิเสธ (rejected) ในตอนแรกถูกใช้ร่วมกันระหว่างเรคอร์ดที่ตรวจสอบข้อมูลไม่ผ่านกับเรคอร์ดที่ไม่สามารถแยกวิเคราะห์ได้ ทำให้อัตราการปฏิเสธที่สูงขึ้นกลับถูกเข้าใจผิดว่าเป็นประสิทธิภาพการทำงานของระบบตรวจสอบความถูกต้องที่กำลังทำงานอย่างหนัก ตัวเลขที่พุ่งสูงขึ้นจึงเป็นทิศทางที่ผู้พัฒนาต้องการเห็นในตอนนั้น
"The model did what I asked. I asked for the wrong thing."
นักพัฒนาซอฟต์แวร์เจ้าของบทความ
เหตุการณ์นี้นับเป็นกรณีศึกษาที่สะท้อนปัญหา Prompt Engineering ในทางปฏิบัติได้อย่างชัดเจน โมเดลภาษาขนาดใหญ่ (LLM) มีแนวโน้มที่จะทำตามคำสั่งในระดับตัวอักษรอย่างตรงไปตรงมา การใช้อักขระที่สื่อความหมายกำกวม เช่น การเขียนคำว่า
หลังจากที่ทำการแก้ไขด้วยการแยกตัวนับให้ออกมาจากกัน และเปลี่ยนมาใช้เครื่องหมาย pipe (|) เป็นตัวคั่นแทน พร้อมกับระบุตัวอย่างการทำงานที่ชัดเจนโดยใช้ชื่อสมมติที่ไม่ปรากฏในวรรณกรรมใดๆ เพื่อป้องกันไม่ให้โมเดลทำการคัดลอกข้อความตัวอย่างไปตอบตรงๆ อัตราความสำเร็จในการแยกฟิลด์จึงพุ่งสูงขึ้น และความสูญหายจากปัญหาการแยกข้อมูลก็ลดลงเหลือศูนย์ในที่สุด
ที่มา: Dev.to
พบข้อมูลผิดพลาดในบทความนี้? แจ้งปัญหาบทความนี้
ความคิดเห็น
แสดงความคิดเห็น