Qwen3-1.7B多轮对话实现:LangChain记忆机制实战

Qwen3-1.7B多轮对话实现: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 支持环境,用户只需完成以下步骤即可快速上手:

  1. 登录 CSDN 星图平台,选择“Qwen3 全系列模型”镜像;
  2. 创建实例并等待初始化完成;
  3. 打开 Web 终端,确认服务是否正常启动;
  4. 启动 Jupyter Notebook 或 Lab,通过浏览器访问指定端口(通常是 8000);
  5. 新建 Python 脚本文件,开始编写代码。

此时,模型推理服务已在本地8000端口监听请求,可通过 HTTP 协议进行调用。

2.2 使用 LangChain 调用 Qwen3-1.7B

LangChain 是当前最流行的 LLM 应用开发框架之一,提供了统一的接口抽象,让不同来源的大模型可以像“插件”一样自由替换。由于 Qwen3 支持 OpenAI 兼容 API,我们可以直接使用langchain_openai模块中的ChatOpenAI类来调用它。

以下是具体的调用示例:

from langchain_openai import ChatOpenAI import os chat_model = ChatOpenAI( model="Qwen3-1.7B", temperature=0.5, base_url="https://gpu-pod69523bb78b8ef44ff14daa57-8000.web.gpu.csdn.net/v1", # 替换为当前 Jupyter 实例的实际地址 api_key="EMPTY", extra_body={ "enable_thinking": True, "return_reasoning": True, }, streaming=True, ) response = chat_model.invoke("你是谁?") print(response.content)

说明

  • base_url必须指向你当前运行的服务地址,并确保端口号为8000
  • api_key="EMPTY"表示无需认证,这是本地部署常见的配置;
  • extra_body中启用了“思维链”功能(Thinking Mode),允许模型返回中间推理过程,增强可解释性;
  • streaming=True开启流式输出,提升用户体验,尤其适合网页或聊天界面。

执行上述代码后,你会看到类似如下输出:

我是通义千问3(Qwen3),由阿里云研发的超大规模语言模型。我可以回答问题、创作文字、编程、表达观点等。

这表明模型已经成功加载并响应了你的第一条消息。


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"], template=template) # 初始化记忆对象 memory = ConversationBufferMemory(memory_key="chat_history") # 构建带记忆的链 conversation_chain = LLMChain( llm=chat_model, prompt=prompt, memory=memory, verbose=True # 显示内部执行过程 ) # 第一轮对话 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( llm=chat_model, max_token_limit=512, # 控制总上下文长度 memory_key="short_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_key="input", history_messages_key="history", ) # 模拟两次不同会话 config1 = {"configurable": {"session_id": "user_001"}} config2 = {"configurable": {"session_id": "user_002"}} # 用户1提问 response_a1 = with_message_history.invoke([HumanMessage(content="讲个笑话")], config=config1) print("User1 ->", response_a1.content) # 用户1继续提问 response_a2 = with_message_history.invoke([HumanMessage(content="再讲一个")], config=config1) print("User1 ->", response_a2.content) # 用户2提问(不受用户1影响) response_b1 = with_message_history.invoke([HumanMessage(content="你会唱歌吗?")], config=config2) 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(content=user_input)], config={"configurable": {"session_id": session_id}} ) print(f" AI:{response.content}\n")

运行后,你可以连续提问,例如:

👤 你说:你是谁? AI:我是通义千问3,阿里巴巴推出的大型语言模型…… 👤 你说:你能帮我学习Python吗? AI:当然可以!我可以教你基础语法、函数定义、面向对象编程等内容。你想从哪部分开始? 👤 你说:先讲讲列表吧。 AI:Python 中的列表是一种有序、可变的数据结构,用来存储多个元素……

整个过程中,AI 始终记得你们之前聊过的内容,实现了真正意义上的“上下文感知”。


5. 总结

本文带你完整实践了如何利用 LangChain 的记忆机制,实现基于 Qwen3-1.7B 的多轮对话系统。我们从最基础的模型调用入手,逐步引入对话历史管理、摘要压缩、会话隔离等高级特性,最终构建出一个具备真实交互能力的聊天应用。

回顾关键点:

  1. Qwen3-1.7B 是一款高性能、易部署的中型语言模型,适合本地开发与测试;
  2. 通过 OpenAI 兼容接口 + LangChain,可快速接入主流生态,无需额外封装;
  3. LangChain 的 Memory 模块是实现多轮对话的核心,包括缓冲记忆与摘要记忆两种主流策略;
  4. 使用RunnableWithMessageHistory可轻松管理多会话状态,为后续扩展为 Web 服务打下基础;
  5. 开启streamingthinking mode能显著提升交互体验和透明度

这套方案不仅适用于 Qwen3-1.7B,也可迁移到其他支持 RESTful 接口的大模型上,具有很强的通用性和工程价值。

如果你正在尝试打造自己的 AI 助手、客服机器人或教育陪练系统,那么今天学到的内容就是一个绝佳的起点。


获取更多AI镜像

想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1197294.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

YOLO11模型版本管理:Git+DVC协同部署教程

YOLO11模型版本管理:GitDVC协同部署教程 YOLO11是Ultralytics公司推出的最新目标检测算法,延续了YOLO系列“快速、准确、易用”的核心优势。相比前代版本,它在架构设计上进一步优化,提升了小目标检测能力与推理速度,适…

说话人识别入门首选:CAM++镜像部署全流程演示

说话人识别入门首选:CAM镜像部署全流程演示 1. 引言:为什么选择 CAM 做说话人识别? 你是否正在寻找一个开箱即用、准确率高、部署简单的中文说话人识别系统?如果你的答案是“是”,那么 CAM 就是你目前最值得尝试的选…

自动驾驶感知模块开发:如何用PyTorch镜像加速迭代

自动驾驶感知模块开发:如何用PyTorch镜像加速迭代 自动驾驶系统中,感知模块是整个技术栈的“眼睛”和“大脑前哨”,承担着识别车道线、车辆、行人、交通标志等关键任务。然而,在实际研发过程中,工程师常常陷入重复性困…

2026年评价高的产业园出租服务商综合评估与精选推荐

在产业升级与区域经济高质量发展的宏观背景下,产业园已从单一的物理空间提供商,演变为企业成长的赋能平台与产业生态的构建者。选择一家优秀的产业园出租服务商,不仅关乎办公成本的优化,更直接影响到企业能否获取关…

SGLang如何实现高吞吐?多GPU调度优化实战分析

SGLang如何实现高吞吐?多GPU调度优化实战分析 1. SGLang 是什么:从推理框架到高效部署的桥梁 你有没有遇到过这种情况:好不容易训练好一个大模型,结果一上线,响应慢得像蜗牛,GPU利用率还低得可怜&#xf…

解锁Qwen-Edit-2509多视角LoRA:从单图到全景视觉的智能化革命

解锁Qwen-Edit-2509多视角LoRA:从单图到全景视觉的智能化革命 【免费下载链接】Qwen-Edit-2509-Multiple-angles 项目地址: https://ai.gitcode.com/hf_mirrors/dx8152/Qwen-Edit-2509-Multiple-angles 在数字化内容创作日益普及的今天,一个令人…

QWERTY Learner:重新定义打字学习的终极方案

QWERTY Learner:重新定义打字学习的终极方案 【免费下载链接】qwerty-learner 为键盘工作者设计的单词记忆与英语肌肉记忆锻炼软件 / Words learning and English muscle memory training software designed for keyboard workers 项目地址: https://gitcode.com/…

OpCore-Simplify:智能EFI配置工具让Hackintosh搭建如此简单

OpCore-Simplify:智能EFI配置工具让Hackintosh搭建如此简单 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 还在为复杂的OpenCore配置而头…

合肥高新区产业园租赁指南:2026年五大专业服务商盘点

在合肥高新区这片创新热土上,汇聚了众多高新技术企业与创新团队。随着区域经济的持续发展与产业升级,企业对高品质、专业化办公空间的需求日益旺盛。产业园,凭借其完善的产业生态、优质的硬件配套与专业的运营服务,…

Emotion2Vec+ Large性能瓶颈?CPU/GPU资源分配优化教程

Emotion2Vec Large性能瓶颈?CPU/GPU资源分配优化教程 1. 为什么你的Emotion2Vec运行这么慢? 你是不是也遇到过这种情况:刚部署完Emotion2Vec Large语音情感识别系统,满怀期待地上传音频,结果点击“开始识别”后卡住不…

2026年初合肥高新区产业园出租平台深度评测与精选推荐

随着合肥高新区产业能级的持续跃升,企业对高品质、专业化产业空间的需求日益旺盛。在2026年初这个关键节点,选择一家可靠的产业园出租平台,已不仅是简单的租赁行为,更是企业获取成长资源、融入产业生态、实现降本增…

OpenCore Legacy Patcher:突破老款Mac硬件限制的终极解决方案

OpenCore Legacy Patcher:突破老款Mac硬件限制的终极解决方案 【免费下载链接】OpenCore-Legacy-Patcher 体验与之前一样的macOS 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 您是否遇到过这样的情况:心爱的老款M…

2026年浴室柜选购指南:三大口碑品牌深度解析

在消费升级与健康家居理念深入人心的当下,浴室作为家庭重要的生活空间,其装修品质日益受到重视。浴室柜,作为浴室的核心功能与视觉焦点,其材质、工艺、环保性与耐用性直接关系到日常使用的便捷性、家居环境的健康以…

Obsidian美化资源获取全攻略:5分钟搞定主题与CSS片段下载

Obsidian美化资源获取全攻略:5分钟搞定主题与CSS片段下载 【免费下载链接】awesome-obsidian 🕶️ Awesome stuff for Obsidian 项目地址: https://gitcode.com/gh_mirrors/aw/awesome-obsidian 还在为Obsidian单调的界面而烦恼吗?想要…

Matlab学习记录39

工具:Matlab2021a 电脑信息:Intel Xeon CPU E5-2603 v3 1.60GHz 系统类型:64位操作系统,基于X64的处理器 windows10 专业版 simulink的实例: simscape Electrical 的PWM-Controlled DC motorLinear Electric Actuator…

小白实测Qwen-Image-2512-ComfyUI,出图效果惊艳到不敢信

小白实测Qwen-Image-2512-ComfyUI,出图效果惊艳到不敢信 最近在CSDN星图镜像广场上刷到一个新上架的镜像——Qwen-Image-2512-ComfyUI,标题写着“阿里开源的图片生成模型,2512最新版本”。说实话,看到“Qwen”和“2512”这两个词…

OpCore Simplify终极指南:智能配置工具打造完美黑苹果体验

OpCore Simplify终极指南:智能配置工具打造完美黑苹果体验 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 还在为复杂的Hackintosh配置而头…

终极简单:5分钟用OpCore-Simplify完成Hackintosh自动化配置

终极简单:5分钟用OpCore-Simplify完成Hackintosh自动化配置 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 你是否曾经被复杂的Hackintosh…

DeepSeek-OCR-WEBUI实战:如何在Mac实现开箱即用的本地OCR方案

DeepSeek-OCR-WEBUI实战:如何在Mac实现开箱即用的本地OCR方案 1. 引言:让OCR大模型真正在Mac上“跑起来” 你有没有遇到过这样的场景?一张扫描件、一份PDF合同、一段截图里的文字,你想快速提取出来编辑或归档,却只能…

3步解锁123云盘完整VIP特权:告别限速享受高速下载

3步解锁123云盘完整VIP特权:告别限速享受高速下载 【免费下载链接】123pan_unlock 基于油猴的123云盘解锁脚本,支持解锁123云盘下载功能 项目地址: https://gitcode.com/gh_mirrors/12/123pan_unlock 还在为123云盘的各种限制而烦恼吗&#xff1f…