惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

爱范儿
爱范儿
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
G
GRAHAM CLULEY
www.infosecurity-magazine.com
www.infosecurity-magazine.com
V2EX - 技术
V2EX - 技术
The Last Watchdog
The Last Watchdog
S
Secure Thoughts
Webroot Blog
Webroot Blog
PCI Perspectives
PCI Perspectives
L
LINUX DO - 最新话题
Hacker News: Ask HN
Hacker News: Ask HN
N
News and Events Feed by Topic
H
Heimdal Security Blog
H
Help Net Security
T
The Blog of Author Tim Ferriss
P
Proofpoint News Feed
The GitHub Blog
The GitHub Blog
Jina AI
Jina AI
Recent Commits to openclaw:main
Recent Commits to openclaw:main
F
Full Disclosure
小众软件
小众软件
S
Securelist
罗磊的独立博客
NISL@THU
NISL@THU
D
Darknet – Hacking Tools, Hacker News & Cyber Security
C
Cisco Blogs
云风的 BLOG
云风的 BLOG
C
CERT Recently Published Vulnerability Notes
Cisco Talos Blog
Cisco Talos Blog
Know Your Adversary
Know Your Adversary
S
Schneier on Security
D
DataBreaches.Net
M
MIT News - Artificial intelligence
V
Vulnerabilities – Threatpost
N
News and Events Feed by Topic
有赞技术团队
有赞技术团队
F
Fortinet All Blogs
T
Tenable Blog
The Register - Security
The Register - Security
C
Check Point Blog
AWS News Blog
AWS News Blog
Cloudbric
Cloudbric
C
CXSECURITY Database RSS Feed - CXSecurity.com
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
C
Cyber Attacks, Cyber Crime and Cyber Security
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Google Online Security Blog
Google Online Security Blog
博客园 - 叶小钗
Hacker News - Newest:
Hacker News - Newest: "LLM"
博客园 - 司徒正美

博客园 - aqi00

15天学会AI应用开发(十六)LangChain实现对话记忆功能 15天学会AI应用开发(十五)使用LangChain封装AI执行链 15天学会AI应用开发(十四)搭建LangChain的开发环境 15天学会AI应用开发(十三)上下文与RAG的阶段性总结 15天学会AI应用开发(十二)从PDF、WORD、网页构建RAG 15天学会AI应用开发(十一)从TXT文件构建RAG知识库 15天学会AI应用开发(十)把文本嵌入模型换成国产模型 15天学会AI应用开发(九)利用Chroma持久化向量数据 15天学会AI应用开发(八)使用向量数据库实现RAG功能 15天学会AI应用开发(七)有了大模型为什么还要引入RAG 15天学会AI应用开发(六)使用离线大模型对文本生成摘要 一文速览 HarmonyOS 6.1.1 推出的十个新特性 15天学会AI应用开发(五)使用AI摘要来压缩上下文消息 15天学会AI应用开发(四)根据Token长度截断历史对话 15天学会AI应用开发(三)把历史对话作为提示词会怎样 15天学会AI应用开发(二)为什么编写提示词这么重要 15天学会AI应用开发(一)搭建AI大模型应用开发环境 一文理清 HarmonyOS 6.0.2 涵盖的十个升级点 FFmpeg开发笔记(一百零二)国产的音视频移动开源工具FFmpegAndroid FFmpeg开发笔记(一百零一)跨平台的开源音视频移动框架MobileFFmpeg 一文速览 HarmonyOS 6.0.1 引入的十个新特性 一文读懂 HarmonyOS 6.1 带来的十大重要升级 新书《鸿蒙HarmonyOS 6应用开发:从零基础到App上线》出版啦 FFmpeg开发笔记(一百)国产的Android开源视频压缩工具VideoSlimmer FFmpeg开发笔记(九十九)基于Kotlin的国产开源播放器DKVideoPlayer FFmpeg开发笔记(九十八)基于FFmpeg的跨平台图形用户界面LosslessCut FFmpeg开发笔记(九十七)国产的开源视频剪辑工具AndroidVideoEditor FFmpeg开发笔记(九十六)采用Kotlin+Compose的视频编辑器OpenVideoEditor FFmpeg开发笔记(九十五)国产的开源视频美颜工具VideoEditorForAndroid FFmpeg开发笔记(九十四)基于Kotlin的国产开源推拉流框架anyRTC FFmpeg开发笔记(九十三)国产的Android开源视频编辑器EpMedia FFmpeg开发笔记(九十二)基于Kotlin的开源Android推流器StreamPack FFmpeg开发笔记(九十一)基于Kotlin的Android直播开源框架RootEncoder FFmpeg开发笔记(九十)采用FFmpeg套壳的音视频转码百宝箱FFBox FFmpeg开发笔记(八十九)基于FFmpeg的直播视频录制工具StreamCap FFmpeg开发笔记(八十八)基于Compose的国产电视直播开源框架MyTV FFmpeg开发笔记(八十七)采用Kotlin的手机开源播放器VLC-Android FFmpeg开发笔记(八十六)基于Node.js的国产视频编辑开源框架OpenCut FFmpeg开发笔记(八十五)基于PyQt和FFmpeg的开源视频剪辑器OpenShot FFmpeg开发笔记(八十四)使用国产的librestreaming实现RTMP直播 FFmpeg开发笔记(八十三)国产的视频裁剪框架AndroidVideoTrimmer FFmpeg开发笔记(八十二)使用国产直播服务器smart_rtmpd执行推流操作
15天学会AI应用开发(十七)使用LangGraph实现会话记忆功能
aqi00 · 2026-07-26 · via 博客园 - aqi00

上一篇文章采用langchain_community包协助LangChain实现了对话记忆功能,但langchain_community属于早期链式架构的临时补丁,仅适配简单线性对话。

LangChain官方推荐使用LangGraph实现复杂的会话记忆功能,LangGraph是从底层统一管理全流程状态、支持长短双记忆、原生持久化、适配复杂Agent的标准化记忆架构,常作为生产环境的首选方案。接下来介绍LangGraph在会话记忆方面的简单用法。

一、使用LangGraph的环境准备

在命令行窗口执行下面命令,即可安装LangChain及其用到的Ollama插件,以及记忆功能需要的LangGraph:

确保本地已经通过Ollama下载了离线大模型,比如在命令行窗口执行下面命令,即可下载大模型qwen2:1.5b:

等待大模型下载完毕,在命令行窗口执行下面命令,即可启动Ollama并加载大模型:

二、使用LangGraph记住历史会话

在Python代码开头添加下面的导包语句,表示引入LangChain的智能体组件create_agent、LangChain的大模型工具OllamaLLM,以及LangGraph的内存保存器InMemorySaver:

在OllamaLLM的构造方法中填写model参数,指定当前引用的离线大模型名称,如下:

然后编写下面的LangChain调用代码,先调用create_agent创建启用短期记忆的智能体实例,再通过智能体实例的invoke方法调用离线大模型,示例代码如下:

运行上面的Python代码,根据提示先后输入问题内容“我叫张三”、“我叫什么?”,输出日志结果如下:

由日志信息发现,AI应用在第一个问答中得知用户叫做张三,在第二个问答中仍然记得用户叫做张三。可见通过LangGraph的内存保存器InMemorySaver,初步实现了简单的AI对话记忆功能。

三、使用SummarizationMiddleware压缩历史记忆

前面虽然实现了初步的记忆功能,但随着问答的交互次数增长,要记忆的历史会话也越来越多。为了节省大模型的Token消耗,势必精简历史记忆,以便保留最新的会话记录。
LangGraph提供了摘要中间件SummarizationMiddleware,支持在历史会话超出限制时自动压缩会话记录。引入SummarizationMiddleware之后,增加的代码部分说明如下:

在Python代码开头添加下面的导包语句,表示引入LangChain的摘要中间件SummarizationMiddleware:

另外声明新的大模型实例,用于压缩历史会话记录,如下:

调用create_agent创建智能体实例时,增加输入middleware参数,并设定摘要中间件用到的摘要大模型、Token个数限制、保留消息数等配置,示例代码如下:

重新运行修改后的Python代码,根据提示先后输入问题内容“我叫张三”、“我叫什么?”、“长江有多长?”、“黄河有多长?”、“珠江有多长?”、“黑龙江有多长?”、“我叫什么?”,输出日志结果如下:

由日志信息发现,在第一次询问“我叫什么?”时,AI应用能够正确回答用户叫做张三;但多轮对话后再次询问“我叫什么?”,AI应用已经忘记了用户叫什么。可见通过SummarizationMiddleware初步实现了压缩历史记忆,在会话记录超出限制后将只保留最新的问答信息。

本系列的AI应用开发文章目录为《15天学会AI应用开发全目录(零基础小白,零Token消耗)》。