百度图片识别搜索引擎,宁波网站制作优化服务公司,站内seo和站外seo区别,室外设计网站推荐《AI Agent智能体开发实践玩转FastGPT 像搭积木一样构建智能体 LLM大语言模型AI Agent开发 智能体性能优化调试部署实施方法书籍 AIAgent智能体开发实践 无规格》【摘要 书评 试读】- 京东图书
本节将详细介绍LangChain框架中的记忆#xff08;Memory#xff09;系统#x…《AI Agent智能体开发实践玩转FastGPT 像搭积木一样构建智能体 LLM大语言模型AI Agent开发 智能体性能优化调试部署实施方法书籍 AIAgent智能体开发实践 无规格》【摘要 书评 试读】- 京东图书本节将详细介绍LangChain框架中的记忆Memory系统包括概念、接口实现和实际应用。8.4.1 记忆的概念在LangChain框架中记忆是一种机制用于存储和检索对话历史或其他上下文信息使得模型能够“记住”之前的交互内容。这对于构建有状态的聊天机器人尤为重要因为它允许对话具有连贯性和上下文感知能力。LangChain提供了多种记忆类型包括ConversationBufferMemory存储完整对话历史。ConversationBufferWindowMemory存储最近N条消息。ConversationSummaryMemory存储对话摘要。EntityMemory基于实体提取的记忆。VectorStoreRetrieverMemory使用向量数据库存储和检索记忆。记忆组件通常与ChatOpenAI等聊天模型结合使用通过memory_key参数将对话历史注入模型调用中。8.4.2 BaseChatMessageHistory接口及其子类BaseChatMessageHistory是LangChain中用于管理消息历史的抽象基类定义了消息存储和检索的标准接口。其主要方法包括add_user_message(message:str)添加用户消息。add_ai_message(message:str)添加AI回复。clear()清空消息历史。messages获取所有消息属性。其常见子类说明如下。1内存存储实现ChatMessageHistory内存中的存储消息临时存储。2持久化存储实现FileChatMessageHistory基于文件存储如JSON、CSV。RedisChatMessageHistory使用Redis存储。MongoDBChatMessageHistory使用MongoDB存储。SQLChatMessageHistory使用SQL数据库如SQLite、PostgreSQL。CassandraChatMessageHistory使用Cassandra存储。这些实现允许消息历史在会话间持久化或在分布式系统中共享。8.4.3 RunnableWithMessageHistoryRunnableWithMessageHistory是LangChain中用于构建带记忆功能的可运行组件的工具类。它允许将消息历史与链或模型结合自动管理对话上下文的注入和更新。其核心功能包括自动从用户输入和模型输出中提取消息。将历史消息格式化为模型可接受的输入格式。支持多种记忆类型和消息历史存储方式。【示例8.10】RunnableWithMessageHistoryLangChainQwen。#登录阿里云百炼平台创建 API-KEY 并替换代码中的 你的API密钥 #请确保你安装了最新版的 LangChain 相关包 #pip install -U langchain langchain-community langchain-core dashscope from langchain_community.chat_models import ChatTongyi from langchain.prompts import ChatPromptTemplate, MessagesPlaceholder from langchain_core.runnables import RunnablePassthrough, RunnableWithMessageHistory from langchain_community.chat_message_histories import ChatMessageHistory import os # 设置你的 DashScope API Key通义千问 os.environ[DASHSCOPE_API_KEY] 你的API密钥 # 替换为你的实际密钥 # 创建聊天模型使用 Qwen chat ChatTongyi(modelqwen-max) # 可选: qwen-turbo, qwen-plus, qwen-max # 创建提示模板包含历史消息占位符 prompt ChatPromptTemplate.from_messages([ (system, 你是一个有用的助手。), MessagesPlaceholder(variable_namehistory), (human, {input}) ]) # 创建链 chain prompt | chat # 包装为带有历史记录的链 chain_with_history RunnableWithMessageHistory( chain, lambda session_id: ChatMessageHistory(), # 历史记录工厂函数 input_messages_keyinput, history_messages_keyhistory ) # 使用链 response chain_with_history.invoke( {input: 你好}, config{configurable: {session_id: user123}} ) print(response.content)输出你好有什么我能帮助你的吗8.4.4 基于LangChain的聊天机器人使用LangChain构建聊天机器人时记忆组件是关键一环。以下是一个完整示例展示如何结合RunnableWithMessageHistory和ConversationBufferMemory构建一个简单的聊天机器人。【示例8.11】基于LangChain的聊天机器人适配LangChain最新版Qwen。#依赖安装确保版本兼容 #pip install --upgrade langchain langchain-community langchain-core dashscope #登录阿里云DashScope控制台创建API Key并替换代码中的your_dashscope_api_key from langchain_community.chat_models import ChatTongyi from langchain.prompts import ChatPromptTemplate, MessagesPlaceholder from langchain_community.chat_message_histories import ChatMessageHistory from langchain_core.runnables import RunnableWithMessageHistory # ✅ 修正导入路径 import os # 设置 DashScope API Key请替换为你自己的 api_keyos.getenv(DASHSCOPE_API_KEY) # 1. 创建聊天模型使用 Qwen chat_model ChatTongyi( modelqwen-plus, # 可选: qwen-turbo, qwen-plus, qwen-max api_keyapi_key, temperature0.7 ) # 2. 创建提示模板 prompt_template ChatPromptTemplate.from_messages([ (system, 你是一个友好的AI助手名字叫小智。), MessagesPlaceholder(variable_namechat_history), (human, {user_input}) ]) # 3. 创建处理链 chain prompt_template | chat_model # 4. 创建历史记录存储字典 store {} def get_session_history(session_id: str) - ChatMessageHistory: if session_id not in store: store[session_id] ChatMessageHistory() return store[session_id] # 5. 创建带有历史记录的链 chatbot RunnableWithMessageHistory( chain, get_session_history, input_messages_keyuser_input, history_messages_keychat_history ) # 6. 模拟对话 def chat(session_id, message): response chatbot.invoke( {user_input: message}, config{configurable: {session_id: session_id}} ) return response.content # 测试对话 session user_123 print(AI:, chat(session, 你好)) print(AI:, chat(session, 你叫什么名字)) print(AI:, chat(session, 我们刚才聊了什么))输出AI: 你好呀有什么我可以帮你的吗 AI: 我叫小智很高兴认识你 有什么问题或者需要帮助的吗 AI: 我们刚刚聊到我是小智一个友好且乐于助人的AI助手 你还问我我们之前聊了什么现在你看到的就是我们的最新对话啦有什么其他想知道的吗这个实现完整展示了LangChain的对话记忆功能能够跨多个交互回合保持上下文一致性。