基于LangChain的RAG与Agent智能体开发 - 持久化会话记忆功能实现(RunnableWithMessageHistory+RedisChatMessageHistory)
大家好我是小锋老师最近更新《2027版 基于LangChain的RAG与Agent智能体 开发视频教程》专辑感谢大家支持。本课程主要介绍和讲解RAGLangChain简介接入通义千万大模型 Ollama简介以及安装和使用OpenAI 库介绍和使用以及最重要的基于LangChain实现RAG与Agent智能体开发技术。视频教程课件源码打包下载 链接https://pan.baidu.com/s/1_NzaNr0Wln6kv1rdiQnUTg提取码0000基于LangChain的RAG与Agent智能体开发 - 持久化会话记忆功能实现(RunnableWithMessageHistoryRedisChatMessageHistory)前面我们实现的示例会话历史记录存在内存里的当程序关闭就没有了。我们实际企业级项目需要持久化会话历史记录比如存redispostgres等。我们用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(modelqwen-plus) # 创建模型 chain prompt | model # 实现根据session_id获取RedisChatMessageHistory类对象 def get_session_history(session_id): return RedisChatMessageHistory( urlredis://localhost:6379/0, session_idsession_id, key_prefixchat_history: # Redis key 前缀 ) # 创建带有会话历史数据的链 message_history_chain RunnableWithMessageHistory( chain, # 被增强的原有链 get_session_history, # 根据会话id获取InMemoryChatMessageHistory类对象 input_messages_keyquestion, # 输入消息的键名 history_messages_keyhistory # 历史消息的键名 ) 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.coloradmin.cn/o/2452515.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!