【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
)
相关推荐
花千树_0101 天前
多工具调用只是开始:用 Regnexe 构建真正会反思的 Java Agent
langchain·agent
大模型真好玩5 天前
LangChain DeepAgents 速通指南(九)—— 生产级智能体框架 DeepAgents Code 源码导读
人工智能·langchain·agent
早点睡啊7 天前
精读 LangChain 官方文档(二)Model 篇:把模型调用升级成工程化推理接口
人工智能·langchain
星始流年9 天前
从 Tool 到 Skill——基于 LangChain 的服务端Skill实现
前端·langchain·agent
codedx9 天前
LangChain 和 LangGraph 构建的 Agent 项目模版
后端·langchain·agent
颜酱10 天前
LangGraph 入门指南
langchain
武子康11 天前
调查研究-186 LangChain 和 LangGraph 的区别:从快速构建 Agent 到生产级工作流编排
人工智能·langchain·llm
葫芦和十三14 天前
渐进发现|代码库不是文档库
langchain·agent·ai编程
柒和远方14 天前
LangGraph 深度解析:从增强型 LLM 到生产级 Agent
langchain·llm·agent
沪漂阿龙15 天前
《LangChain》成本、限流、缓存、降级:AI 应用上线要考虑的问题
人工智能·langchain