AI Agents ในทางปฏิบัติ: การอ่านความล้มเหลวจาก Trace

AI agent ของคุณไม่ได้พัง แต่มันรายงานว่าทำงานสำเร็จ ทว่ายอดเงินในบัญชีธนาคารของคุณกลับแสดงความผิดพลาด

มีการคืนเงินสำหรับคำสั่งซื้อที่ไม่เคยถูกยกเลิก ลูกค้าได้ทั้งสินค้าและเงินไป ส่วน agent ก็คิดว่ามันทำหน้าที่ของมันเสร็จสิ้นแล้ว

อย่าเพิ่งรีบเปลี่ยนไปใช้โมเดลที่ใหญ่ขึ้น และอย่าแค่เพิ่ม loop การลองใหม่ (retry loop) เพราะทั้งสองอย่างเป็นเพียงการคาดเดา

แต่ให้ลองอ่าน trace แทน เพราะ agent ได้บันทึกสิ่งที่มันทำไว้เรียบร้อยแล้ว

Trace ที่ดีสำหรับการใช้งานจริง (production) จะต้องบันทึกขั้นตอนของ loop ทีละขั้น โดยต้องแสดงให้เห็นถึง:

  • สิ่งที่ agent สังเกตเห็น
  • สิ่งที่มันตัดสินใจ
  • เครื่องมือ (tool) ใดที่มันเรียกใช้
  • สิ่งที่ tool ส่งกลับมา
  • การอ่านข้อมูลเพื่อตรวจสอบจากแหล่งข้อมูลที่ถูกต้องที่สุด (source of truth)
  • สถานะสุดท้ายและค่าใช้จ่ายที่เกิดขึ้น

ส่วนที่สำคัญที่สุดคือช่องว่างระหว่างการตอบกลับของ tool กับการอ่านข้อมูลเพื่อตรวจสอบ แม้ tool จะบอกว่า "accepted" แต่นั่นไม่ได้หมายความว่าโลกได้เปลี่ยนไปจริงๆ การอ่านข้อมูลเพื่อตรวจสอบจะบอกคุณว่าการเปลี่ยนแปลงนั้นเกิดขึ้นจริงหรือไม่

ความล้มเหลวมักแบ่งออกเป็นสองกลุ่ม:

  1. ความล้มเหลวในการประมวลผล (Execution Failures)
  • ความล้มเหลวของ tool: อาร์กิวเมนต์ผิดพลาดหรือหมดเวลา (timeout)
  • ความล้มเหลวในการใช้เหตุผล: โมเดลเลือกการกระทำที่ผิด
  • ความล้มเหลวของสถานะการควบคุม (Control-state failures): agent เชื่อในสิ่งที่ไม่เป็นจริง เช่น มันคิดว่าคำสั่งซื้อถูกยกเลิกแล้วเพราะ tool บอกแบบนั้น ทั้งที่ข้อมูลในฐานข้อมูลระบุเป็นอย่างอื่น
  1. ความล้มเหลวเชิงโครงสร้างของ loop (Structural Loop Failures)
  • บริบทเสื่อมถอย (Context degradation): agent เริ่มหลุดประเด็นหรือลืมสิ่งที่ทำไปก่อนหน้า
  • Loop ทำงานวนซ้ำไม่สิ้นสุด (Loop runaway): agent ทำขั้นตอนเดิมซ้ำๆ โดยไม่มีความคืบหน้า
  • การหยุดชะงักแบบเงียบ (Silent stalls): agent ค้างโดยไม่มีการแจ้งข้อผิดพลาด คุณจำเป็นต้องมี watchdog เพื่อกำหนดให้การเงียบคือความล้มเหลวอย่างหนึ่ง

เมื่อคุณพบความล้มเหลว อย่าเพิ่งแค่สั่ง retry เพราะการ retry คือกลยุทธ์ ไม่ใช่การวินิจฉัยปัญหา

  • หากเป็นข้อผิดพลาดชั่วคราว เช่น timeout ให้ลองใหม่ (retry)
  • หากเป็นข้อผิดพลาดทางตรรกะ การ retry จะมีแต่ทำให้คุณเสียเงินไปกับการชนกำแพงเดิมๆ
  • หาก agent ติดปัญหาที่แก้ไม่ได้ (blocker) ให้หยุดและแจ้งมนุษย์

วิธีที่ดีที่สุดในการแก้ไขความล้มเหลวคือการเปลี่ยนมันให้เป็นบททดสอบ (test)

ใช้ trace เพื่อเขียนตัวตรวจคำตอบ (grader) หาก agent ล้มเหลวในการตรวจสอบการยกเลิก ให้เขียน test ที่จะแจ้งว่าล้มเหลวหากมีการคืนเงินเกิดขึ้นโดยที่สถานะการยกเลิกยังไม่ได้รับการยืนยัน จงเปลี่ยนความล้มเหลวที่คุณต้องจ่ายเงินซื้อมา ให้กลายเป็นความล้มเหลวที่คุณไม่ต้องจ่ายซ้ำสอง

Source: https://dev.to/gursharansingh/ai-agents-in-practice-part-7-when-the-loop-goes-wrong-reading-agent-failures-from-the-trace-5bdp

Optional learning community: https://t.me/GyaanSetuAi