【Langchain】memory所有类型介绍及代码示例

一、_chatMessageHistory

1.什么是_chatMessageHistory

AI记下你说了什, 它说了什么的"聊天记录本"

每次你问问题,它就往本子上写一条

AI 回答后,它也写一条

下次你再问问题,AI 可以翻开这个本子,看之前说过什么,这样回答就连贯了

2.代码中怎么用_chatMessageHistory

把memory传给chain时,它会自动调用 __chatMessageHistory,将结果都保存到_chatMessageHistory

示例

python 复制代码
from langchain.chat_models import ChatOpenAI
from langchain.memory import ConversationBufferMemory
from langchain.chains import ConversationChain

memory = ConversationBufferMemory()
llm = ChatOpenAI(temperature=0)

chain = ConversationChain(llm=llm, memory=memory)

# 自动保存
chain.run("你好")

可以获取到保存的消息
# 获取消息列表
messages = memory.chat_memory._chat_message_history.messages

# 打印每条消息
for msg in messages:
    print(f"{msg.role}: {msg.content}")

二、conversationBufferMemory

1.conversationBufferMemory是什么

1.记录消息,_chatMessageHistory = 具体的消息记录本

2.ConversationBufferMemory = 管理这个记录本的 Memory,负责把新消息写进去、提供历史给 Chain/Agent 用

2.conversationBufferMemory怎么用

ini 复制代码
#1.创建Memory
from langchain.memory import ConversationBufferMemory
memory = ConversationBufferMemory()

#2.让Chain/Agent使用它
llm = ChatOpenAI(temperature=0)
chain = ConversationChain(llm=llm, memory=memory)

#3.对话</br>
chain.run("你好")
chain.run("你还记得我刚才说的话吗?")

Memory 会自动把每轮消息记录到 _chatMessageHistory

下一轮对话 AI 会参考之前的消息

三、conversationChain

1.conversationChain是干啥的

Memory 记东西,Chain 用这些东西跟你聊天。

2.ConversationChain 怎么用

ini 复制代码
# 创建 Memory(自动记住对话)
memory = ConversationBufferMemory()

# 创建 LLM
llm = ChatOpenAI(temperature=0)

# 创建 ConversationChain
conversation = ConversationChain(llm=llm, memory=memory)
conversation.run("你好")  # 第一轮
conversation.run("你还记得我刚才说的话吗?")  # 第二轮,会参考第一轮的对话

四、conversationBufferWindowMemory

1.conversationBufferWindowMemory是干啥的

只保留几条记录

window:滑动窗口

2.conversationBufferWindowMemory怎么用

ini 复制代码
# 创建记忆对象 只记住最近三轮
memory = ConversionBufferWindowMemory(k=3) 
# 创建模型
llm = ChatOpenAI(model="gpt-3.5-turbo")
# 3. 创建对话链,挂上记忆
conversation = ConversationChain(
    llm=llm,
    memory=memory,
    verbose=True
)
#聊天
conversation.predict(input="你好")

五、ConversationTokenBufferMemory

1.ConversationTokenBufferMemory是什么

按token数量决定保留多少记录

2.怎么看最近用了多少token

比如你这次给AI发消息,消耗了10个token,和之前加起来token的消耗总数已经超过1000了, 会把之前的对话删除掉,让消耗token数小于1000

1 token ≈ 0.75 个汉字 或 4 个英文字符。

六、ConversationSummaryMemory

1.ConversationSummaryMemory是什么

把旧的对话总结为一句话或几句话 节省token 同时保留核心信息

旧的对话,之前需要全部发送给模型,生成答案

用ConversationSummaryMemory后,不用全部发过去,发过去总结就行,可以节省token

2.ConversationSummaryMemory怎么用

ini 复制代码
# 1. 创建模型
llm = ChatOpenAI(model="gpt-3.5-turbo")

# 2. 创建 Summary Memory
memory = ConversationSummaryMemory(
    llm=llm,                 # 用于生成 summary 的模型
    max_token_limit=1000,    # 可选,保留 summary 时总 token 上限
)

# 3. 创建对话链
conversation = ConversationChain(
    llm=llm,
    memory=memory,
    verbose=True
)

# 4. 连续聊天
conversation.predict(input="你好")

七、ConversationEntityMemory

1.ConversationEntityMemory是什么

专门记住对话中的 人,事,物 和它们的属性

2.ConversationEntityMemory怎么用

ini 复制代码
# 1. 创建模型
llm = ChatOpenAI(model="gpt-3.5-turbo")

# 2. 创建实体记忆对象
memory = ConversationEntityMemory(llm=llm)

# 3. 创建对话链
conversation = ConversationChain(
    llm=llm,
    memory=memory,
    verbose=True
)

# 4. 对话示例
conversation.predict(input="我叫张三,今年22岁,喜欢篮球,住北京。")
会记住对话中的
姓名=张三
年龄=22
兴趣=篮球
居住地=北京

八、ConversationKGMemory

1.ConversationKGMemory是什么

它不仅记实体,还记实体之间的关系,用结构化方式帮助模型更智能回答问题

2.ConversationKGMemory怎么用

ini 复制代码
# 1. 创建模型
llm = ChatOpenAI(model="gpt-3.5-turbo")

# 2. 创建知识图谱记忆对象
memory = ConversationKGMemory(
    llm=llm
)

# 3. 创建对话链
conversation = ConversationChain(
    llm=llm,
    memory=memory,
    verbose=True
)
相关推荐
树叶会结冰2 小时前
Milvus:可检索记忆的漂流瓶
langchain·milvus·llamaindex
西柚小萌新3 小时前
【人工智能:Agent】--5.Langchain模型+工具
langchain
2401_877274244 小时前
LangChain聊天模型---工具调用
langchain
万事可爱^4 小时前
LangChain v1.0学习笔记(4)—— 核心组件Models
人工智能·笔记·学习·langchain·大模型
AGI杂货铺5 小时前
零基础也能快速搭建的Deep Agents
ai·langchain·llm·agent·deepagent
进阶的鱼5 小时前
一文助你了解Langchain
python·langchain·agent
逸凡5 小时前
langchain核心组件 Model I/O(3)-OutputParser
langchain
工藤学编程6 小时前
零基础学AI大模型之个人助理智能体之tool_calling_agent实战
人工智能·langchain
喜欢吃豆7 小时前
LangChain 架构深度解析:从中间件机制到人机协同 SQL 智能体实战报告
人工智能·中间件·架构·langchain·大模型
学Linux的语莫7 小时前
初始化大模型的不同方式
langchain