𝗖𝗼𝗻𝘃𝗲𝗿𝘀𝗮𝘁𝗶𝗼𝗻 𝗠𝗲𝗺𝗼𝗿𝘆 𝗳𝗼𝗿 𝗟𝗮𝗻𝗴𝗖𝗵𝗮𝗶𝗻 𝗔𝗴𝗲𝗻𝘁𝘀
คุณสามารถทำให้ LangChain agents ฉลาดขึ้นได้ด้วยการเพิ่มหน่วยความจำ (memory) ซึ่งจะช่วยให้พวกมันสามารถจดจำข้อมูลจากข้อความก่อนหน้าได้
ในโพสต์นี้ ผมจะเปลี่ยน support agent ให้กลายเป็นเครื่องมือที่รองรับการสนทนาหลายรอบ (multi-turn tool)
ในรอบแรก (turn one) agent จะทำการค้นหาข้อมูลลูกค้าและใบแจ้งหนี้ (invoice) ในรอบที่สอง (turn two) agent จะสร้าง ticket โดยไม่ต้องถามหา ID ซ้ำอีกครั้ง
3 แนวคิดสำคัญที่ควรรู้:
- Checkpointer: ทำหน้าที่เป็นหน่วยความจำระยะสั้น (short-term memory) โดยจะบันทึกข้อความและสถานะ (state) หลังจบในแต่ละขั้นตอน
- thread_id: คือคีย์สำหรับการสนทนาของคุณ ให้ใช้ ID เดิมเพื่อสนทนาต่อ และใช้ ID ใหม่เพื่อเริ่มเซสชันใหม่
- Store: คือหน่วยความจำระยะยาว (long-term memory) สำหรับข้อมูลต่างๆ เช่น ความชอบของผู้ใช้
ขั้นตอนการทำงานใน support flow:
- ผู้ใช้ขอให้ค้นหา customer ID 1042 และ invoice 8891 จากนั้น agent จะค้นหาข้อมูลดังกล่าว
- ผู้ใช้พูดว่า "Create the ticket" agent จะจดจำ ID จากขั้นตอนแรกและดำเนินการจนเสร็จสิ้น
สำหรับการทดสอบ ให้ใช้ MemorySaver ซึ่งจะเก็บสถานะไว้ใน local process ของคุณ
ข้อควรระวัง: MemorySaver จะถูกล้างข้อมูลเมื่อโค้ดของคุณหยุดทำงาน สำหรับการใช้งานจริง (production) ควรใช้ฐานข้อมูลอย่าง Postgres หรือ SQLite ซึ่งโค้ดจะยังคงเหมือนเดิมเนื่องจาก thread_id API ไม่มีการเปลี่ยนแปลง
แยกเซสชันออกจากกันโดยใช้ thread ID ที่ต่างกันสำหรับผู้ใช้แต่ละคน เพื่อป้องกันไม่ให้ข้อมูลของคนหนึ่งรั่วไหลไปยังการสนทนาของอีกคนหนึ่ง
ตรวจสอบโฟลเดอร์ langchain-agent-memory-nodejs-demo เพื่อดูสคริปต์ฉบับเต็ม
ที่มา: https://dev.to/zsevic/conversation-memory-for-langchain-agents-31pa
ชุมชนเพื่อการเรียนรู้เพิ่มเติม: https://t.me/GyaanSetuAi