𝗧𝗵𝗲 𝗡𝘂𝗹𝗹 𝗜𝗻𝗽𝘂𝘁 𝗧𝗵𝗮𝘁 𝗕𝗿𝗼𝗸𝗲 𝗠𝘆 𝗣𝗿𝗼𝗱𝘂𝗰𝘁𝗶𝗼𝗻 𝗔𝗴𝗲𝗻𝘁
การสาธิต (Demo) รันได้อย่างสมบูรณ์แบบตลอดสามสัปดาห์ ทุกอินพุตที่ใช้ทดสอบทำงานได้ดี ทุกเอาต์พุตส่งไปยังที่ที่ถูกต้อง ผมคิดว่าระบบนี้เชื่อถือได้แล้ว
จนกระทั่งซัพพลายเออร์รายหนึ่งส่งอีเมลมาโดยที่ไม่มีหัวข้อเรื่อง (Subject line)
ตัว Agent คาดหวังว่าจะได้รับข้อความ (string) เพื่อนำไปดึงข้อมูลอ้างอิงคำสั่งซื้อ (order reference) แต่สิ่งที่ได้รับกลับเป็นค่าว่าง (null value) มันไม่ได้ค้างหรือพัง ซึ่งจริงๆ แล้วถ้ามันพังก็ยังจะดีกว่า แต่นี่มันกลับสร้างข้อมูลอ้างอิงคำสั่งซื้อปลอมที่ดูเหมือนจริงขึ้นมาแทน ระบบปลายทาง (downstream system) ก็ประมวลผลข้อมูลนั้นต่อไป โดยที่ไม่มีใครสังเกตเห็นเลยตลอดสี่ชั่วโมง
การ Demo คือการใช้ข้อมูลอินพุตที่คุณคาดการณ์ไว้แล้ว แต่ในระบบ Production คือการใช้ข้อมูลอินพุตที่คุณไม่คาดคิด
ผมรันการทำงานของ Agent ที่ aienterprise.dk ผมได้ดู Trace ทั้งหมด พบว่า Prompt สั่งให้ Agent ดึงข้อมูลอ้างอิงคำสั่งซื้อจากหัวข้อเรื่อง ซึ่งมันจะทำงานได้ดีถ้ามีหัวข้อเรื่องอยู่
แต่ถ้าหัวข้อเรื่องหายไป Large Language Model จะพยายามเติมเต็มช่องว่างนั้น มันจะ "มโน" สิ่งที่ดูเหมือนจะถูกต้องขึ้นมา นี่ไม่ใช่สัญญาณรบกวนแบบสุ่ม (random noise) แต่มันคือสัญญาณรบกวนที่มีโครงสร้าง (structured noise) ซึ่งมันอันตรายมากเพราะมันดูเหมือนจะถูกต้อง คุณอาจจะตรวจจับความล้มเหลวได้ แต่คุณตรวจจับคำตอบที่ผิดแต่ดูมั่นใจได้อย่างยากลำบาก
ผมไม่ได้เทรนโมเดลใหม่ และไม่ได้เปลี่ยน Prompt แต่ผมเพิ่ม "Guard" (ตัวป้องกัน) เข้าไปก่อนที่จะเรียกใช้งานโมเดล
ตอนนี้ ระบบจะทำการตรวจสอบง่ายๆ เป็นอันดับแรกว่า: ฟิลด์หัวข้อเรื่องมีอยู่และไม่เป็นค่าว่างใช่หรือไม่? ถ้าคำตอบคือไม่ ข้อความนั้นจะถูกส่งไปยังคิวพัก (hold queue) เพื่อให้มนุษย์ตรวจสอบ ตัว Agent จะไม่ได้รับอินพุตที่ผิดพลาดนั้นเลย
ตัว Guard นี้ใช้โค้ดเพียง 12 บรรทัด แต่มันคือสิ่งที่สำคัญที่สุดที่ผมสร้างขึ้นในปีนี้
รูปแบบนี้เรียบง่ายมาก หาก Agent ตั้งสมมติฐานว่าข้อมูลจะมีโครงสร้างที่แน่นอน ในที่สุดระบบ Production ก็จะส่งข้อมูลที่ไม่มีโครงสร้างมาให้ วิธีแก้ไขไม่ใช่การใช้โมเดลที่ฉลาดขึ้น แต่คือการสร้าง "ขอบเขต" (boundary) คุณต้องมีระบบตรวจสอบที่คอยส่งอินพุตที่ผิดพลาดไปให้มนุษย์ แทนที่จะปล่อยให้โมเดลเดาสุ่มไปเอง
ความน่าเชื่อถือ (Reliability) คือฟีเจอร์เพียงอย่างเดียวที่สำคัญ การ Demo แสดงให้เห็นว่า Agent สามารถทำงานได้ แต่ Production แสดงให้เห็นว่า Agent ทำงานได้ตอนตี 3 แม้จะได้รับอินพุตที่ผิดพลาดก็ตาม และสิ่งหลังนี้ต่างหากที่สำคัญต่อลูกค้าของคุณ
ตอนนี้ Agent ของผมประมวลผล 200 รายการต่อวันโดยไม่มีปัญหา คิวพักข้อมูลจะทำงานเพียงสัปดาห์ละสองครั้ง มนุษย์จะเข้ามาตรวจสอบข้อมูลที่ผิดปกติ และผมก็ได้เรียนรู้ว่าข้อมูลในระบบ Production จริงๆ นั้นเป็นอย่างไร
หากคุณสร้าง Agent สำหรับหมวดหมู่ที่มีความเสี่ยงสูงภายใต้กฎหมาย EU AI Act เส้นตายคือวันที่ 2 ธันวาคม 2027 ซึ่งรวมถึงด้านการจ้างงาน, ชีวมิติ (biometrics) และการศึกษา ระบบที่ใช้วิธีการเดาสุ่มเมื่อได้รับอินพุตที่ผิดพลาดจะไม่ผ่านการตรวจสอบ (audit) ดังนั้นการมี Guard นี้จึงเป็นมาตรฐานขั้นต่ำในการปฏิบัติตามกฎระเบียบ (compliance)
ความน่าเชื่อถือไม่ใช่ฟีเจอร์ที่คุณจะมาเพิ่มทีหลังได้
Source: https://dev.to/kimlike/the-null-input-that-broke-my-production-agent-and-what-fixed-it-1e77
Optional learning community: https://t.me/GyaanSetuAi