【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
)
相关推荐
Sirius Wu4 小时前
深入浅出:Tongyi DeepResearch技术解读
人工智能·语言模型·langchain·aigc
boonya9 小时前
Langchain 和LangGraph 为何是AI智能体开发的核心技术
人工智能·langchain
大模型真好玩18 小时前
LangChain1.0速通指南(三)——LangChain1.0 create_agent api 高阶功能
人工智能·langchain·mcp
FreeCode2 天前
LangChain1.0智能体开发:结构化输出
人工智能·langchain·agent
FreeCode2 天前
LangChain1.0智能体开发:中间件(Middleware)
人工智能·langchain·agent
再会呀2 天前
[Ai Agent] 07 RAG 进阶:持久化 · 精排序 · Agent 集成
langchain·agent
王国强20092 天前
LangChain的哲学
langchain
FreeCode3 天前
LangChain1.0智能体开发:流输出组件
人工智能·langchain·agent
cooldream20093 天前
LangChain 构建智能多工具 Agent实践
langchain·agent·智能问答助手
FreeCode3 天前
LangChain 1.0智能体开发:记忆组件
人工智能·langchain·agent