การเพิ่มหน่วยความจำให้กับ Agent
การสร้าง AI agent ต้องใช้มากกว่าแค่โมเดล เพราะมันจำเป็นต้องมีวิธีจดจำว่าคุณคือใคร
ในซีรีส์การสร้าง AWS Briefing Agent ของผม ผมกำลังสำรวจวิธีการเปลี่ยนจากการโต้ตอบแบบไร้สถานะ (stateless) ไปสู่ประสบการณ์ที่ปรับแต่งให้เข้ากับแต่ละบุคคล (personalized experiences)
ปัญหาของ microVMs มาตรฐานคือพวกมันเป็นแบบ stateless เมื่อเซสชันสิ้นสุดลง สภาพแวดล้อมจะถูกทำลายทิ้ง สิ่งนี้ช่วยป้องกันข้อมูลรั่วไหล แต่ก็หมายความว่า agent จะลืมทุกอย่างเช่นกัน หากไม่มีหน่วยความจำ ผู้ใช้จะต้องระบุความต้องการ (preferences) ของตนเองซ้ำทุกครั้งที่เข้าสู่ระบบ
ผมแก้ปัญหานี้โดยใช้ AgentCore Memory และ Strands Agents
นี่คือหลักการทำงานของสถาปัตยกรรมนี้:
- Short-term memory: จัดเก็บข้อมูลการโต้ตอบดิบเป็นเวลา 90 วัน เพื่อรักษาบริบท (context) ในระหว่างการแชท
- Long-term memory: ใช้สองกลยุทธ์เฉพาะเพื่อเปลี่ยนการสนทนาให้เป็นความรู้ที่คงอยู่ถาวร
- Semantic Strategy: ดึงข้อมูลข้อเท็จจริง เช่น บริการ AWS ใดบ้างที่ผู้ใช้ใช้งานจริงใน production
- User Preference Strategy: ระบุสไตล์และความสนใจ เช่น ความชอบในการใช้เครื่องมือแบบ serverless
เพื่อรักษาความปลอดภัยของข้อมูล ระบบจะใช้ namespaces โดยการใช้ตัวแปร {actorId} ผมจึงมั่นใจได้ว่าข้อมูลของผู้ใช้คนหนึ่งจะไม่รั่วไหลไปยังเซสชันของผู้ใช้คนอื่น
ผมยังได้รวม AWS Cognito เข้ามาเพื่อการยืนยันตัวตนที่ปลอดภัย โดย agent จะตรวจสอบ JWT tokens เพื่อยืนยันตัวตน เมื่อยืนยันแล้ว ระบบจะดึง 'sub' claim ที่ไม่ซ้ำกันจาก token นั้น ซึ่ง ID นี้จะกลายเป็น actor_id ที่ agent ใช้ในการดึงบันทึกหน่วยความจำที่ถูกต้อง
การรวมระบบทำได้อย่างราบรื่น เมื่อใช้ AgentCoreMemorySessionManager ตัว agent จะดำเนินการโดยอัตโนมัติ:
- โหลดประวัติการสนทนาจากหน่วยความจำระยะสั้น
- ค้นหาข้อเท็จจริงและความต้องการที่เกี่ยวข้องจากหน่วยความจำระยะยาว
- ใส่บริบทเหล่านั้นลงในสถานะของ agent (agent state) ก่อนที่จะตอบกลับ
ผลลัพธ์ที่ได้คือ agent ที่ให้ความรู้สึกเป็นส่วนตัว มันรู้ถึงระดับความเชี่ยวชาญและความสนใจเฉพาะด้านใน AWS ของคุณ โดยที่คุณไม่ต้องพูดซ้ำเลย
Source: https://dev.to/aws-heroes/adding-memory-to-the-agent-181k
Optional learning community: https://t.me/GyaanSetuAi