AI Agent กำลังเผชิญกับปัญหาด้านความน่าเชื่อถือ
AI agent กำลังเปลี่ยนผ่านจากซอฟต์แวร์ที่ทำหน้าที่เพียงตอบสนอง ไปสู่ซอฟต์แวร์ที่สามารถลงมือทำได้จริง พวกมันสามารถเรียกใช้ API, โอนเงิน และอัปเดตฐานข้อมูลได้
แต่ยังมีช่องว่างขนาดใหญ่ระหว่าง "ความฉลาด" (intelligence) และ "ความน่าเชื่อถือ" (reliability)
เรามุ่งเน้นไปที่การพัฒนาโมเดลให้ดีขึ้นและการเขียน Prompt ที่ดีขึ้น แต่เรากลับละเลยเรื่องโครงสร้างพื้นฐาน (infrastructure) ความไม่สอดคล้องกันนี้เองที่ทำให้เกิดความล้มเหลวในโลกความเป็นจริง
ลองจินตนาการว่า Agent กำลังดำเนินการคืนเงิน มันเรียกใช้ Payment API และ API ทำงานสำเร็จ แต่แล้วเซิร์ฟเวอร์กลับเกิดการ Crash ก่อนที่ Agent จะบันทึกว่าการทำงานสำเร็จ ระบบจึงพยายามทำซ้ำ (retry) งานเดิม Agent จึงเรียกใช้ API อีกครั้ง ผลที่ตามมาคือลูกค้าได้รับเงินคืนซ้ำสอง
ไม่มีใครเขียนบั๊ก โมเดลก็ใช้เหตุผลได้อย่างถูกต้อง และ API ก็ทำงานได้ปกติ ความล้มเหลวเกิดขึ้นเพราะโครงสร้างพื้นฐานยังไม่สมบูรณ์
Agent ส่วนใหญ่ทำงานได้ดีในการสาธิต (demo) เพราะการ Demo มักรันใน Process เดียว ทำงานทีละอย่าง และไม่ต้องเผชิญกับปัญหาเซิร์ฟเวอร์ล่มหรือการทำงานพร้อมกัน (concurrency) แต่ในสภาพแวดล้อมการใช้งานจริง (Production) นั้นแตกต่างออกไป
เมื่อคุณนำ Agent ไปใช้ในระดับ Production จะมี 3 สิ่งที่พัง:
• Process Imortality: Agent ทึกทักเอาเองว่า Process จะไม่มีวันตาย แต่ในความเป็นจริง Host อาจล่มหรือมีการ Deploy ระบบใหม่ เมื่อ Process ตาย ข้อมูลที่อยู่ในหน่วยความจำ (in-memory state) ก็จะหายไปทันที • Pure Tool Calls: นักพัฒนามักมองว่าการเรียกใช้ Tool เป็นเพียงการอ่านข้อมูล (reads) แต่ Agent ทำการสร้างผลกระทบข้างเคียง (side effects) ด้วย เช่น การโอนเงินหรือการส่งอีเมล ซึ่งสิ่งเหล่านี้ไม่สามารถย้อนกลับ (undo) ได้โดยง่าย • Exactly-once Execution: การทำซ้ำ (Retries) เป็นสิ่งจำเป็นเพื่อความน่าเชื่อถือ แต่การทำซ้ำในลูปที่อยู่ในหน่วยความจำโดยไม่มี Durable Log จะทำให้เกิดการกระทำที่ซ้ำซ้อน
นี่ไม่ใช่ปัญหาเรื่อง Prompting แต่มันคือปัญหาของระบบกระจายตัว (distributed systems) การจะแก้ไขเรื่องนี้ได้ เราจำเป็นต้องมี Durable Execution
Agent ที่น่าเชื่อถือต้องมี 5 เสาหลัก ดังนี้:
- Event Sourcing: จัดเก็บ Log ของทุกการกระทำแบบไม่สามารถแก้ไขได้ (immutable log) โดยให้ Log เป็นแหล่งข้อมูลที่ถูกต้องที่สุด (source of truth) ไม่ใช่ข้อมูลในหน่วยความจำ
- Replayable Execution: ใช้ Log เพื่อสร้างสถานะ (state) ขึ้นมาใหม่หลังจากเกิดการ Crash โดยการเล่นซ้ำ (replay) ขั้นตอนที่เสร็จสิ้นไปแล้ว แทนที่จะเป็นการรันใหม่ทั้งหมด
- Durable Queues: ย้ายงานจากหน่วยความจำไปไว้ในที่จัดเก็บข้อมูลที่คงทน (persistent stores)
- Idempotency Keys: ทำให้มั่นใจว่าการกระทำเดิมซ้ำสองครั้ง จะให้ผลลัพธ์เหมือนกับการทำเพียงครั้งเดียว เพื่อป้องกันการจ่ายเงินซ้ำ
- Compensation Patterns: กำหนดการกระทำเพื่อย้อนคืน (undo) ขั้นตอนต่างๆ หากเวิร์กโฟลว์ที่มีหลายขั้นตอนเกิดล้มเหลวกลางคัน
โมเดลที่ดีขึ้นอาจช่วยให้ตัดสินใจได้ดีขึ้น แต่โมเดลที่ดีขึ้นไม่สามารถแก้ไขปัญหาเซิร์ฟเวอร์ล่มได้ ความน่าเชื่อถือเป็นคุณสมบัติของการประมวลผล (execution) ไม่ใช่คุณสมบัติของการตัดสินใจ (decisions)
Agent ที่คุณสามารถไว้วางใจให้ทำงานได้โดยไม่ต้องมีมนุษย์คอยควบคุม จะไม่ใช่แค่ Agent ที่ฉลาดที่สุดเท่านั้น แต่จะเป็น Agent ที่รันอยู่บนโครงสร้างพื้นฐานที่น่าเชื่อถือ
ความฉลาดคือสิ่งที่ตัดสินใจว่าจะทำอะไร ส่วนโครงสร้างพื้นฐานคือสิ่งที่ทำให้มั่นใจว่าสิ่งนั้นจะถูกดำเนินการอย่างถูกต้องจริง ๆ
ที่มา: https://dev.to/code_with_mwai/ai-agents-have-a-reliability-problem-nobody-is-talking-about-j40
ชุมชนการเรียนรู้เพิ่มเติม: https://t.me/GyaanSetuAi