当前位置: 首页 > news >正文

基于LangChain的RAG与Agent智能体开发 - 持久化会话记忆功能实现(RunnableWithMessageHistory+RedisChatMessageHistory)

大家好,我是小锋老师,最近更新《2027版 基于LangChain的RAG与Agent智能体 开发视频教程》专辑,感谢大家支持。

本课程主要介绍和讲解RAG,LangChain简介,接入通义千万大模型 ,Ollama简介以及安装和使用,OpenAI 库介绍和使用,以及最重要的基于LangChain实现RAG与Agent智能体开发技术。

视频教程+课件+源码打包下载 :

链接:https://pan.baidu.com/s/1_NzaNr0Wln6kv1rdiQnUTg
提取码:0000

基于LangChain的RAG与Agent智能体开发 - 持久化会话记忆功能实现(RunnableWithMessageHistory+RedisChatMessageHistory)

前面我们实现的示例会话历史记录存在内存里的,当程序关闭就没有了。我们实际企业级项目需要持久化会话历史记录,比如存redis,postgres等。

我们用RedisChatMessageHistory来实现下持久化会话记忆功能。

首先我们电脑上要安装redis server端。

直接双击安装即可,都默认配置。

接着我们项目里要安装redis客户端库。

pip install redis -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn

我们来实现下代码,基于上一讲的示例:

import redis from langchain_community.chat_message_histories import RedisChatMessageHistory from langchain_community.llms.tongyi import Tongyi from langchain_core.chat_history import InMemoryChatMessageHistory from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder from langchain_core.runnables import RunnableWithMessageHistory ​ # 1. 定义聊天提示模板(和图片结构一致) prompt = ChatPromptTemplate.from_messages([ ("system", "你是一个友好的AI助手,会结合对话历史回答用户问题。"), # 系统消息:设定AI基础角色 MessagesPlaceholder("history"), # 对话历史占位符:后续会被真实历史数据替换 ("human", "请回答如下问题:{question}") # 当前用户的提问(带变量占位) ]) ​ model = Tongyi(model="qwen-plus") # 创建模型 ​ chain = prompt | model ​ ​ # 实现根据session_id获取RedisChatMessageHistory类对象 def get_session_history(session_id): return RedisChatMessageHistory( url="redis://localhost:6379/0", session_id=session_id, key_prefix="chat_history:" # Redis key 前缀 ) ​ ​ # 创建带有会话历史数据的链 message_history_chain = RunnableWithMessageHistory( chain, # 被增强的原有链 get_session_history, # 根据会话id获取InMemoryChatMessageHistory类对象 input_messages_key="question", # 输入消息的键名 history_messages_key="history" # 历史消息的键名 ) ​ if __name__ == '__main__': session_config = { "configurable": { "session_id": "user01" } } result = message_history_chain.invoke({"question": "IT行业里哪个细分领域职位最有前途,直接告诉我职位名称即可"}, session_config) print("第一次AI大模型回答:", result) ​ result = message_history_chain.invoke({"question": "这个职位需要多少技术积累?简单回答即可"}, session_config) print("第二次AI大模型回答:", result) ​ result = message_history_chain.invoke({"question": "这个职位在北京5年经验年薪平均多少万?简单回答即可"}, session_config) print("第三次AI大模型回答:", result)
运行下:效果一样。

我们用redis desktop Manager打开,可以看到redis里存了会话历史记录了。

http://www.jsqmd.com/news/541038/

相关文章:

  • Basscss终极部署指南:从开发到生产环境的完整流程
  • Scrollama性能优化终极指南:确保滚动动画流畅运行的7个关键点
  • 盘式制动器总成(step+x_t))三维图
  • 如何用Blade框架快速开发电商网站API接口:从搭建到部署的完整指南
  • 终极指南:如何让MacBook Touch Bar在Windows上全功能运行
  • 爬楼梯机器人制作模型(solidworks+stp)
  • SSHFS-Win许可证完全指南:GPLv2+、GPLv3与FLOSS异常条款解析
  • OpenClaw问题排查:GLM-4.7-Flash连接失败解决方案
  • Papercups开源客服聊天系统:完整社区支持与资源获取指南
  • React-LazyLoad无障碍访问终极指南:让懒加载内容对所有人可见的10个关键技巧
  • Java高频面试题:RocketMQ有哪些使用场景?
  • 避坑指南:关系数据库设计中90%人会犯的完整性约束错误(附真实案例)
  • 基于Transformer的锂离子电池剩余使用寿命预测模型(Pytorch实现,含丰富数据集及...
  • vim插件AI结对编程辅助编程插件
  • Ubuntu20.04下FAST_LIO与livox_ros_driver联合编译避坑指南(附实测数据集对比)
  • clmystery终极教程制作指南:如何创建高质量的命令行侦探游戏视频
  • 基于动力学模型MPC的‘加入规划层的轨迹跟踪避障控制‘在双障碍物避障中的应用
  • 利用快马平台快速构建mcporter数据转换工具原型,十分钟验证数据管道设计
  • GNN实战:Cora、Citeseer、PubMed三大文献数据集保姆级使用指南(附代码)
  • 济南脱发白发理疗哪家效果好?黑奥秘四大专利成分从根源解决问题 - 美业信息观察
  • Fast-Android-Networking与HTTP/2协议:现代Android网络通信的终极指南 [特殊字符]
  • 终极devin.cursorrules贡献指南:如何快速参与开源AI开发
  • Gorgonia性能优化终极指南:10个技巧让你的深度学习模型运行速度翻倍
  • 揭秘7-Zip ZS:六种压缩算法如何重塑文件压缩体验
  • kinova jaco2 机械臂控制器故障灯闪烁(双绿灯)问题解决方法
  • 终极Objective-C代码规范指南:纽约时报的企业级最佳实践解析
  • s2-pro开源大模型部署教程:supervisor服务管理与日志排查详解
  • 内核利用终极指南:10个内存管理漏洞实战技巧
  • Windows任务栏透明化技术解析:TranslucentTB架构设计与优化实践
  • htop终极性能监控指南:10个高效系统管理技巧