LangChain - Memory
临时记忆
如果想要封装历史记录,除了自行维护历史消息外,也可以借助LangChain内置的历史记录附加功能。
LangChain提供了History功能,帮助模型在有历史记忆的情况下回答。
- 基于RunnableWithMessageHistory在原有链的基础上创建带有历史记录功能的新链(新Runnable实例)
- 基于InMemoryChatMessageHistory为历史记录提供内存存储(临时用)
运行dmeo

长期会话记忆
FileChatMessageHistory类实现,核心思路:基于文件存储会话记录,以session_id为文件名,不同session_id有不同文件存储消息。
继承BaseChatMessageHistory实现如下3个方法:
- add_messages: 同步模式,添加消息
- messages: 同步模式,获取消息
- clear:同步模式,清除消息如右侧代码
官方在BaseChatMessageHistory类的注释中提供了一个基于文件存储的示例代码:

运行demo
通过第一次运行将历史对话保存到本地文件;
第二次运行直接提问“我有多少宠物”,也能完美解答问题。

