from langchain.memory import ConversationBufferWindowMemory
memory = ConversationBufferWindowMemory(k=1)
memory.save_context({"input": "Hi, LangChain!"}, {"output": "Hey!"})
memory.save_context({"input": "Where are you?"}, {"output": "By your side"})
memory.load_memory_variables({})
memory.chat_memory.messages
3.3 ConversationSummaryMemory
这种记忆类型利用LLM生成对话的摘要,适合长对话。
from langchain.memory import ConversationSummaryMemory
from langchain.llms import OpenAI
memory = ConversationSummaryMemory(llm=OpenAI(temperature=0, openai_api_key="您的有效openai api key"))
memory.save_context({"input": "Hi, LangChain!"}, {"output": "Hey!"})
memory.save_context({"input": "How to start with Next.js development?"}, {"output": "You can get started with its official developer guide."})
memory.save_context({"input": "Show me the link of the guide."}, {"output": "I'm looking for you now. Please stand by!"})
memory.load_memory_variables({})
第一部分:什么是记忆组件?
记忆组件是对话系统中的一项关键技术,它允许系统存储和引用对话历史中的信息。在LangChain中,记忆组件可以作为独立工具使用,也可以整合进链式处理中。记忆组件需要支持两个基本操作:读取和写入。
第二部分:他们是如何工作的?
在LangChain与LLM的每次交互中,链将执行两次记忆操作:
记忆组件的设计需考虑两个核心问题:如何存储历史信息,以及如何查询这些信息。
第三部分:三种基础记忆组件详解
LangChain提供了三种基本记忆组件类型:
以下是它们的具体用法示例:
3.1 ConversationBufferMemory
调用
load_memory_variables
函数可以获取对话历史的文本:3.2 ConversationBufferWindowMemory
这个组件使用滑动窗口机制,确保了记忆的容量管理。
3.3 ConversationSummaryMemory
这种记忆类型利用LLM生成对话的摘要,适合长对话。
随着交互次数的增加,ConversationSummaryMemory的Token开销相对平稳,这对于有许多交互的对话非常有效。
另外提到的Summary Buffer Memory结合了Summary和Buffer的优点,但本文未详细介绍。
以上内容提供了对LangChain记忆组件的概览和具体代码示例,您可以通过访问官方文档来学习更多。
LangChain 的记忆组件是其框架中的一个重要组成部分,它赋予了聊天机器人记住先前交互信息的能力,使其更智能、更具交互性。LangChain 提供多种类型的记忆组件,每种都有其独特的机制和适用场景。
让我们深入了解一下 LangChain 中常用的记忆组件:
1. ConversationBufferMemory
2. ConversationBufferWindowMemory
3. ConversationSummaryMemory
4. EntityMemory
5. Vector Database Memory
选择合适的记忆组件
选择合适的记忆组件取决于您的具体应用场景。需要考虑以下因素:
总而言之,LangChain 的记忆组件为构建智能聊天机器人提供了强大的支持。了解不同记忆组件的特点,选择合适的组件,可以帮助您构建更智能、更具交互性的聊天机器人。