ConversationBufferMemory(对话缓存内存)

本笔记本介绍了如何使用ConversationBufferMemory(对话缓存内存)。这种记忆方式允许存储消息,并将消息提取到一个变量中。

我们首先将其提取为字符串。

from langchain.memory import ConversationBufferMemory
memory = ConversationBufferMemory()
memory.save_context({"input": "hi"}, {"output": "whats up"})
memory.load_memory_variables({})
    {'history': 'Human: hi\nAI: whats up'}

我们还可以将历史记录作为消息列表获取(如果你正在与聊天模型一起使用,这非常有用)。

memory = ConversationBufferMemory(return_messages=True)
memory.save_context({"input": "hi"}, {"output": "whats up"})
memory.load_memory_variables({})
    {'history': [HumanMessage(content='hi', additional_kwargs={}),
      AIMessage(content='whats up', additional_kwargs={})]}

在链式结构中使用

最后,让我们看看如何在链式结构中使用它(将verbose=True以便我们可以看到提示)。

from langchain.llms import OpenAI
from langchain.chains import ConversationChain


llm = OpenAI(temperature=0)
conversation = ConversationChain(
    llm=llm, 
    verbose=True, 
    memory=ConversationBufferMemory()
)
conversation.predict(input="Hi there!")

进入新的 ConversationChain 链... 格式化后的提示: 下面是一个友好对话,涉及到一个人类和一个 AI。AI 很健谈,提供了许多上下文中的具体细节。如果 AI 对某个问题不知道答案,它会真实地说自己不知道。

当前对话:

人类:嗨! AI:

链结束。

"嗨!很高兴见到你。我今天能帮你做些什么?"

conversation.predict(input="I'm doing well! Just having a conversation with an AI.")

进入新的 ConversationChain 链... 格式化后的提示: 下面是一个友好对话,涉及到一个人类和一个 AI。AI 很健谈,提供了许多上下文中的具体细节。如果 AI 对某个问题不知道答案,它会真实地说自己不知道。

当前对话: 人类:嗨! AI:嗨!很高兴见到你。我今天能帮你做些什么? 人类:我过得很好!只是和一个 AI 对话而已。 AI:

链结束。

"That's great! It's always nice to have a conversation with someone new. What would you like to talk about?"

conversation.predict(input="Tell me about yourself.")

进入新的 ConversationChain 链... 格式化后的提示: 下面是一个友好对话,涉及到一个人类和一个 AI。AI 很健谈,提供了许多上下文中的具体细节。如果 AI 对某个问题不知道答案,它会真实地说自己不知道。

当前对话: 人类:嗨! AI:嗨!很高兴见到你。我今天能帮你做些什么? 人类:我过得很好!只是和一个 AI 对话而已。 AI:太棒了!和新朋友对话总是很愉快的。你想聊些什么呢? 人类:告诉我关于你自己的事情。 AI:

链结束。

"当然!我是一个被创建来帮助人们完成日常任务的 AI。我被编程为理解自然语言并提供有用的信息。我还在不断学习和更新我的知识库,以便能够提供更准确和有帮助的答案。"

这就是入门的全部内容!还有许多不同类型的记忆,可以查看我们的示例以了解全部内容。

Last Updated:
Contributors: 刘强