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

推荐订阅源

CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Cisco Talos Blog
Cisco Talos Blog
Help Net Security
Help Net Security
D
Darknet – Hacking Tools, Hacker News & Cyber Security
T
Threat Research - Cisco Blogs
AWS News Blog
AWS News Blog
The Last Watchdog
The Last Watchdog
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
T
Troy Hunt's Blog
A
About on SuperTechFans
The Hacker News
The Hacker News
B
Blog RSS Feed
Simon Willison's Weblog
Simon Willison's Weblog
宝玉的分享
宝玉的分享
小众软件
小众软件
博客园_首页
罗磊的独立博客
H
Hackread – Cybersecurity News, Data Breaches, AI and More
博客园 - 三生石上(FineUI控件)
Google DeepMind News
Google DeepMind News
TaoSecurity Blog
TaoSecurity Blog
Attack and Defense Labs
Attack and Defense Labs
G
GRAHAM CLULEY
A
Arctic Wolf
H
Hacker News: Front Page
博客园 - 叶小钗
PCI Perspectives
PCI Perspectives
W
WeLiveSecurity
月光博客
月光博客
阮一峰的网络日志
阮一峰的网络日志
N
News | PayPal Newsroom
Martin Fowler
Martin Fowler
N
Netflix TechBlog - Medium
Cloudbric
Cloudbric
NISL@THU
NISL@THU
H
Help Net Security
C
CERT Recently Published Vulnerability Notes
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Project Zero
Project Zero
The Register - Security
The Register - Security
S
Secure Thoughts
Vercel News
Vercel News
Security Archives - TechRepublic
Security Archives - TechRepublic
L
LINUX DO - 最新话题
Recent Announcements
Recent Announcements
L
Lohrmann on Cybersecurity
T
The Exploit Database - CXSecurity.com
Hacker News - Newest:
Hacker News - Newest: "LLM"
O
OpenAI News
Recent Commits to openclaw:main
Recent Commits to openclaw:main

博客园 - aqi00

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应用开发(十六)LangChain实现对话记忆功能
aqi00 · 2026-07-25 · via 博客园 - aqi00

模型本身是无状态的,也就是不具备记忆功能,单次对话无法留存上下文信息,多轮交互中会遗忘历史对话内容。用户之所以感觉AI工具拥有记忆,是因为AI工具给大模型封装了一层记忆。

LangChain作为主流的大模型应用开发框架,内置完善的记忆模块(Memory模块),能够高效管理对话历史记录,让AI实现逻辑连贯的多轮对话,接下来就介绍如何使用LangChain实现对话记忆功能。

一、记忆功能用到的组件说明

LangChain实现对话记忆功能要掌握下列三个核心组件,需三者配合才能完成上下文管理全流程:

1、对话历史存储组件

以ChatMessageHistory为核心,基于内存临时存储对话记录,无需安装额外的数据库,适合开发者快速编码和测试。对话数据仅在应用程序运行期间留存,重启应用程序后会清空对话数据,可满足AI应用的轻量化对话场景需求。

2、记忆绑定核心组件

RunnableWithMessageHistory是对话记忆架构的核心组件,可包装LangChain的任意执行链,自动实现对话历史记录的读取、拼接和更新,能够支持多个会话数据的相互隔离,解决了传统组件存在的多会话冲突问题。

3、提示词模板组件

聊天提示词模板ChatPromptTemplate用于规范向大模型输入的提示词格式,它固定采用“系统指令+历史对话+当前提问”的结构,让大模型能够精准识别上下文信息,保证当前用户的对话记忆功能逻辑统一,不会胡说八道。

二、实现记忆功能的环境准备

ChatMessageHistory组件来自于langchain_community,而RunnableWithMessageHistory和ChatPromptTemplate来自于langchain-core,故需提前安装相关的langchain包。
在命令行窗口执行下面命令,即可安装LangChain及其用到的Ollama插件,以及记忆功能需要的langchain_community:

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

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

三、AI记忆对话的编码实战

在Python代码开头添加下面的导包语句,表示引入ChatMessageHistory、RunnableWithMessageHistory、ChatPromptTemplate三个组件,以及LangChain的大模型工具OllamaLLM:

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

然后编写下面的LangChain调用代码,先利用ChatPromptTemplate构造给history变量占位的提示词模板,接着往ChatMessageHistory组件存储对话历史,再通过RunnableWithMessageHistory在封装执行链时带入历史数据,示例代码如下:

运行上面的Python代码,根据提示先后输入问题内容“你叫什么名字?”、“不对,你叫小明”、“你叫什么名字?”,输出日志结果如下:

由日志信息发现,AI应用一开始回答“我叫小冰”,后来被改名后回答自己叫“小明”。可见通过使用LangChain的记忆组件,初步实现了简单的AI对话记忆功能。

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