รูปแบบ PRG สำหรับ AI Agents

AI agents กำลังทำความผิดพลาดเดิมที่เคยเกิดขึ้นเมื่อ 25 ปีที่แล้วซ้ำอีกครั้ง

ในยุค 90 เว็บฟอร์มมีบั๊กที่ร้ายแรงอย่างหนึ่ง คือเมื่อผู้ใช้สั่งซื้อสินค้าแล้วกดรีเฟรช เบราว์เซอร์จะส่งคำสั่งซื้อนั้นซ้ำอีกครั้ง ส่งผลให้เกิดการเรียกเก็บเงินสองครั้งและทำให้ลูกค้าไม่พอใจ

วิธีแก้ไขคือการใช้รูปแบบ Post/Redirect/Get (PRG) ซึ่งมีหลักการทำงานดังนี้:

  • ผู้ใช้ส่งคำขอแบบ POST เพื่อส่งข้อมูล
  • เซิร์ฟเวอร์ประมวลผลข้อมูล
  • เซิร์ฟเวอร์ส่งการ Redirect ไปยัง URL ใหม่
  • เบราว์เซอร์ส่งคำขอแบบ GET เพื่อแสดงผลลัพธ์

หากผู้ใช้กดรีเฟรช พวกเขาจะทำเพียงแค่ส่งคำขอ GET ซ้ำเท่านั้น ส่วนคำขอ POST ที่เป็นอันตรายจะหายไปแล้ว

AI agents ได้นำบั๊กนี้กลับมาอีกครั้ง

เมื่อเอเจนต์เรียกใช้เครื่องมือ (tool) เพื่อตัดบัตรเครดิตหรือสร้างบันทึกข้อมูล หากเครือข่ายขัดข้อง เอเจนต์จะไม่ทราบว่าการดำเนินการนั้นสำเร็จหรือไม่ และจะพยายามทำซ้ำอีกครั้ง ซึ่งจะทำให้ลูกค้าถูกเรียกเก็บเงินซ้ำสองครั้ง

คุณสามารถแก้ไขปัญหานี้ได้โดยการใช้ Idempotency Key ซึ่งทำหน้าที่เหมือนการ Redirect โดยจะแยกส่วนระหว่าง "การลงมือทำ" ออกจาก "การแสดงผลลัพธ์"

รูปแบบสำหรับเอเจนต์ควรเป็นดังนี้:

  • เอเจนต์สร้างคีย์ที่ไม่ซ้ำกัน (unique key) ก่อนการพยายามครั้งแรก
  • โดยใช้ค่าที่คงที่ เช่น User ID และ Cart ID
  • ส่งคีย์นี้ไปพร้อมกับการเรียกใช้เครื่องมือทุกครั้ง
  • เซิร์ฟเวอร์จะตรวจสอบคีย์ หากพบคีย์เดิมอีกครั้ง เซิร์ฟเวอร์จะส่งผลลัพธ์เดิมกลับไปแทนที่จะดำเนินการซ้ำเป็นครั้งที่สอง

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

ปฏิบัติตามกฎเหล่านี้สำหรับเครื่องมือของเอเจนต์ใดๆ ที่มีการเปลี่ยนแปลงข้อมูล:

  • เครื่องมือที่มีการเปลี่ยนแปลงข้อมูล (mutating tool) ทุกชนิดต้องรองรับ Idempotency Key
  • สร้างคีย์จากเจตนาของผู้ใช้ (user intent) ไม่ใช่จาก Timestamp
  • สร้างคีย์ก่อนการพยายามครั้งแรก
  • ใช้คีย์เดิมในการพยายามใหม่ทุกครั้ง
  • สำหรับงานที่ใช้เวลานาน ให้ทำ Checkpoint ในทุกขั้นตอนระหว่างทาง

เลเยอร์อาจเปลี่ยนไป แต่ตรรกะยังคงเดิม

ที่มา: https://dev.to/ravikiran438/the-prg-pattern-for-ai-agents-a-25-year-old-fix-coming-of-age-in-a-new-era-23fh

ชุมชนแห่งการเรียนรู้ (ไม่บังคับ): https://t.me/GyaanSetuAi