西部数码创建子网站十大免费音乐网站
2026/5/21 14:18:14 网站建设 项目流程
西部数码创建子网站,十大免费音乐网站,做网站会什么软件,我的企业网站怎么seoQwen3-1.7B多轮对话实现#xff1a;LangChain记忆机制实战 1. Qwen3-1.7B 模型简介 Qwen3#xff08;千问3#xff09;是阿里巴巴集团于2025年4月29日开源的新一代通义千问大语言模型系列#xff0c;涵盖6款密集模型和2款混合专家#xff08;MoE#xff09;架构模型LangChain记忆机制实战1. Qwen3-1.7B 模型简介Qwen3千问3是阿里巴巴集团于2025年4月29日开源的新一代通义千问大语言模型系列涵盖6款密集模型和2款混合专家MoE架构模型参数量从0.6B至235B。其中Qwen3-1.7B 是该系列中的一款中等规模密集模型兼顾推理速度与生成质量特别适合部署在资源有限的边缘设备或开发环境中进行快速实验。这款模型不仅支持标准文本生成任务还具备较强的上下文理解能力尤其适用于需要低延迟响应的交互式场景如智能客服、个人助手、教育辅导等。得益于其轻量化设计Qwen3-1.7B 可以在单张消费级显卡上高效运行极大降低了开发者本地调试和原型验证的技术门槛。更重要的是Qwen3 系列全面支持开放调用接口兼容 OpenAI 类协议使得它能够无缝集成到主流 AI 开发框架中比如 LangChain、LlamaIndex 等。这为构建具备记忆能力、工具调用能力和流程编排能力的复杂应用提供了坚实基础。2. 环境准备与模型调用2.1 启动镜像并进入 Jupyter 环境要使用 Qwen3-1.7B 进行多轮对话开发首先需要启动一个预置了模型服务和依赖库的容器镜像。CSDN 提供的一键式 GPU 镜像已内置 Qwen3 推理服务和 LangChain 支持环境用户只需完成以下步骤即可快速上手登录 CSDN 星图平台选择“Qwen3 全系列模型”镜像创建实例并等待初始化完成打开 Web 终端确认服务是否正常启动启动 Jupyter Notebook 或 Lab通过浏览器访问指定端口通常是 8000新建 Python 脚本文件开始编写代码。此时模型推理服务已在本地8000端口监听请求可通过 HTTP 协议进行调用。2.2 使用 LangChain 调用 Qwen3-1.7BLangChain 是当前最流行的 LLM 应用开发框架之一提供了统一的接口抽象让不同来源的大模型可以像“插件”一样自由替换。由于 Qwen3 支持 OpenAI 兼容 API我们可以直接使用langchain_openai模块中的ChatOpenAI类来调用它。以下是具体的调用示例from langchain_openai import ChatOpenAI import os chat_model ChatOpenAI( modelQwen3-1.7B, temperature0.5, base_urlhttps://gpu-pod69523bb78b8ef44ff14daa57-8000.web.gpu.csdn.net/v1, # 替换为当前 Jupyter 实例的实际地址 api_keyEMPTY, extra_body{ enable_thinking: True, return_reasoning: True, }, streamingTrue, ) response chat_model.invoke(你是谁) print(response.content)说明base_url必须指向你当前运行的服务地址并确保端口号为8000api_keyEMPTY表示无需认证这是本地部署常见的配置extra_body中启用了“思维链”功能Thinking Mode允许模型返回中间推理过程增强可解释性streamingTrue开启流式输出提升用户体验尤其适合网页或聊天界面。执行上述代码后你会看到类似如下输出我是通义千问3Qwen3由阿里云研发的超大规模语言模型。我可以回答问题、创作文字、编程、表达观点等。这表明模型已经成功加载并响应了你的第一条消息。3. 实现多轮对话的关键LangChain 记忆机制虽然单次调用已经能完成基本问答但真正的智能对话系统必须具备“记住历史”的能力。否则每次提问都像是第一次见面无法维持连贯交流。LangChain 提供了多种记忆管理组件统称为Memory模块。我们可以通过这些模块自动保存和注入对话历史从而实现自然的多轮交互。3.1 对话缓冲记忆ConversationBufferMemory最简单的记忆方式是将所有过往对话内容拼接成一段文本作为上下文传给模型。这种策略称为“对话缓冲”对应ConversationBufferMemory类。from langchain.memory import ConversationBufferMemory from langchain.chains import LLMChain from langchain.prompts import PromptTemplate # 定义提示模板 template 你是一个友好的AI助手请根据以下对话历史回答用户问题。 历史对话 {chat_history} 用户{input} AI prompt PromptTemplate(input_variables[chat_history, input], templatetemplate) # 初始化记忆对象 memory ConversationBufferMemory(memory_keychat_history) # 构建带记忆的链 conversation_chain LLMChain( llmchat_model, promptprompt, memorymemory, verboseTrue # 显示内部执行过程 ) # 第一轮对话 output1 conversation_chain.invoke({input: 你好你能做什么}) print(AI:, output1[text]) # 第二轮对话 output2 conversation_chain.invoke({input: 你能帮我写一篇关于春天的短文吗}) print(AI:, output2[text])在这个例子中ConversationBufferMemory会自动记录每一次输入和输出并在下次调用时填充到{chat_history}字段中。这样模型就能感知到之前的交流内容做出更合理的回应。3.2 更高效的记忆方式ConversationSummaryBufferMemory当对话轮数增多时简单地拼接全部历史会导致上下文过长增加计算负担甚至超出模型最大长度限制。为此LangChain 提供了ConversationSummaryBufferMemory—— 它会用一个小模型对早期对话进行摘要只保留关键信息。from langchain.memory import ConversationSummaryBufferMemory summary_memory ConversationSummaryBufferMemory( llmchat_model, max_token_limit512, # 控制总上下文长度 memory_keyshort_memory ) # 单独测试记忆更新 summary_memory.save_context({input: 我喜欢看电影}, {output: 那你喜欢什么类型的电影呢}) summary_memory.save_context({input: 我喜欢科幻片}, {output: 《星际穿越》是个不错的选择}) # 查看自动生成的摘要 print(summary_memory.load_memory_variables({}))输出可能类似于{ short_memory: 用户表示喜欢看电影特别是科幻类AI推荐了《星际穿越》作为观影建议。 }这种方式既能保留语义核心又能有效控制 token 消耗非常适合长期对话场景。4. 完整的多轮对话系统实现结合前面的知识我们可以搭建一个完整的、可持续对话的交互系统。4.1 使用 RunnableWithMessageHistory 管理会话状态为了更好地组织多用户、多会话的应用结构LangChain 推荐使用RunnableWithMessageHistory配合内存存储InMemoryStore来管理多个独立的对话线程。from langchain_core.runnables.history import RunnableWithMessageHistory from langchain_community.chat_message_histories import InMemoryChatMessageHistory from langchain_core.messages import HumanMessage, AIMessage def get_session_history(session_id: str): store {} if session_id not in store: store[session_id] InMemoryChatMessageHistory() return store[session_id] # 构建可记忆的 runnable with_message_history RunnableWithMessageHistory( chat_model, get_session_history, input_messages_keyinput, history_messages_keyhistory, ) # 模拟两次不同会话 config1 {configurable: {session_id: user_001}} config2 {configurable: {session_id: user_002}} # 用户1提问 response_a1 with_message_history.invoke([HumanMessage(content讲个笑话)], configconfig1) print(User1 -, response_a1.content) # 用户1继续提问 response_a2 with_message_history.invoke([HumanMessage(content再讲一个)], configconfig1) print(User1 -, response_a2.content) # 用户2提问不受用户1影响 response_b1 with_message_history.invoke([HumanMessage(content你会唱歌吗)], configconfig2) print(User2 -, response_b1.content)这种方法天然支持多用户隔离每个session_id对应独立的历史记录非常适合构建 Web 聊天机器人或 API 服务。4.2 添加用户友好交互循环最后封装一个简单的命令行交互循环方便实时体验多轮对话效果print( 已启动与 Qwen3-1.7B 的多轮对话输入 quit 退出\n) session_id default while True: user_input input( 你说) if user_input.lower() in [quit, exit]: print( 对话结束) break response with_message_history.invoke( [HumanMessage(contentuser_input)], config{configurable: {session_id: session_id}} ) print(f AI{response.content}\n)运行后你可以连续提问例如 你说你是谁 AI我是通义千问3阿里巴巴推出的大型语言模型…… 你说你能帮我学习Python吗 AI当然可以我可以教你基础语法、函数定义、面向对象编程等内容。你想从哪部分开始 你说先讲讲列表吧。 AIPython 中的列表是一种有序、可变的数据结构用来存储多个元素……整个过程中AI 始终记得你们之前聊过的内容实现了真正意义上的“上下文感知”。5. 总结本文带你完整实践了如何利用 LangChain 的记忆机制实现基于 Qwen3-1.7B 的多轮对话系统。我们从最基础的模型调用入手逐步引入对话历史管理、摘要压缩、会话隔离等高级特性最终构建出一个具备真实交互能力的聊天应用。回顾关键点Qwen3-1.7B 是一款高性能、易部署的中型语言模型适合本地开发与测试通过 OpenAI 兼容接口 LangChain可快速接入主流生态无需额外封装LangChain 的 Memory 模块是实现多轮对话的核心包括缓冲记忆与摘要记忆两种主流策略使用RunnableWithMessageHistory可轻松管理多会话状态为后续扩展为 Web 服务打下基础开启streaming和thinking mode能显著提升交互体验和透明度。这套方案不仅适用于 Qwen3-1.7B也可迁移到其他支持 RESTful 接口的大模型上具有很强的通用性和工程价值。如果你正在尝试打造自己的 AI 助手、客服机器人或教育陪练系统那么今天学到的内容就是一个绝佳的起点。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询