为 LangChain Agents 添加对话记忆
通过添加记忆功能,你可以让 LangChain agents 变得更智能。这使它们能够记住之前消息中的事实。
在本文中,我将一个支持型 agent 变成了一个多轮对话工具。
在第一轮对话中,agent 会查询客户和发票信息。 在第二轮对话中,agent 会直接创建工单,而无需再次询问 ID。
需要了解的三个核心概念:
- Checkpointer:充当短期记忆。它在每一步之后保存消息和状态。
- thread_id:这是你的对话密钥。使用相同的 ID 来继续聊天,使用新的 ID 来开始一个全新的会话。
- Store:这是用于存储用户偏好等事实的长期记忆。
在支持流程中的工作原理:
- 用户要求查询客户 ID 1042 和发票 8891。agent 找到相关数据。
- 用户说“创建工单”。agent 会记住第一步中的 ID 并完成任务。
测试时,请使用 MemorySaver。它将状态保存在你的本地进程中。
重要提示:当代码停止运行时,MemorySaver 会被清空。在生产环境中,请使用 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