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

ChatGLM3-6B-128K多轮对话优化:上下文保持技术

ChatGLM3-6B-128K多轮对话优化上下文保持技术1. 引言你有没有遇到过这样的情况和AI聊天时聊着聊着它就忘了前面说过什么比如你告诉它我喜欢吃辣过几轮对话后问我喜欢的口味是什么它却一脸茫然。这就是典型的多轮对话上下文丢失问题。ChatGLM3-6B-128K作为专门为长对话设计的模型在这方面做了很多优化。今天我们就来聊聊它是如何做到记住长达128K上下文的这对于开发对话系统的朋友来说特别实用。2. 环境准备与快速部署2.1 系统要求在开始之前先确认你的环境是否符合要求内存至少16GB RAM推荐32GB显存至少13GB适用于FP16精度存储需要约15GB空间存放模型文件Python3.8或更高版本2.2 一键安装最简单的部署方式是使用Ollama只需要一行命令ollama run entropyyue/chatglm3或者如果你想直接从Hugging Face下载from transformers import AutoModel, AutoTokenizer model_path THUDM/chatglm3-6b-128k tokenizer AutoTokenizer.from_pretrained(model_path, trust_remote_codeTrue) model AutoModel.from_pretrained(model_path, trust_remote_codeTrue).half().cuda()2.3 验证安装安装完成后用这个简单代码测试一下response, history model.chat(tokenizer, 你好, history[]) print(response)如果看到正常的问候回复说明安装成功了。3. 多轮对话基础概念3.1 什么是上下文保持简单来说上下文保持就是让AI记住对话历史的能力。比如用户我喜欢吃川菜 AI川菜确实很美味你喜欢哪道菜 用户最喜欢麻婆豆腐 AI麻婆豆腐的麻辣口感很特别 用户那我刚才说喜欢什么菜系好的AI应该能回答川菜而不是说我不知道你之前说过什么。3.2 ChatGLM3的改进ChatGLM3-6B-128K相比前代有两个重要改进位置编码优化更好地处理长文本位置信息训练策略升级在整个训练流程中都使用128K长度的对话模拟4. 实战多轮对话4.1 基础对话示例让我们看一个简单的多轮对话例子# 初始化历史记录 history [] # 第一轮对话 question1 请介绍Python的列表和元组有什么区别 response1, history model.chat(tokenizer, question1, historyhistory) print(f用户: {question1}) print(fAI: {response1}\n) # 第二轮对话基于上文 question2 那我应该什么时候用列表什么时候用元组呢 response2, history model.chat(tokenizer, question2, historyhistory) print(f用户: {question2}) print(fAI: {response2}\n)4.2 长上下文测试测试模型的长文本记忆能力# 模拟长对话 long_text 人工智能是计算机科学的一个分支它企图了解智能的实质并生产出一种新的能以人类智能相似的方式做出反应的智能机器。 该领域的研究包括机器人、语言识别、图像识别、自然语言处理和专家系统等。人工智能从诞生以来理论和技术日益成熟应用领域也不断扩大。 可以设想未来人工智能带来的科技产品将会是人类智慧的容器。人工智能可以对人的意识、思维的信息过程的模拟。 人工智能不是人的智能但能像人那样思考、也可能超过人的智能。人工智能是一门极富挑战性的科学从事这项工作的人必须懂得计算机知识、心理学和哲学。 # 输入长文本 response, history model.chat(tokenizer, f请总结这段文字{long_text}, history[]) print(总结结果:, response) # 后续提问 follow_up 刚才那段文字中提到人工智能研究包括哪些领域 follow_up_response, history model.chat(tokenizer, follow_up, historyhistory) print(后续问题回答:, follow_up_response)5. 上下文优化技巧5.1 有效管理对话历史在实际应用中合理管理history很重要def smart_chat(model, tokenizer, question, history, max_history10): 智能管理对话历史避免过长 if len(history) max_history * 2: # 每个对话占2条记录 # 保留最近对话但保留一些关键信息 history history[-(max_history * 2):] return model.chat(tokenizer, question, historyhistory) # 使用示例 response, history smart_chat(model, tokenizer, 新问题, history)5.2 关键信息提取对于特别长的对话可以提取关键信息def extract_key_points(history): 从对话历史中提取关键信息点 key_points [] for i in range(0, len(history), 2): if 喜欢 in history[i] or 不喜欢 in history[i]: key_points.append(history[i] → history[i1]) return key_points # 在长时间对话后提取关键信息 important_info extract_key_points(history)6. 性能优化策略6.1 内存管理长上下文会消耗大量内存需要合理管理def optimize_memory_usage(): 优化内存使用的策略 # 定期清理缓存 torch.cuda.empty_cache() # 使用梯度检查点训练时 model.gradient_checkpointing_enable() # 使用更低的精度 model.half() # FP166.2 分批处理长文本对于超长文本可以分批处理def process_long_text(long_text, chunk_size1000): 分批处理超长文本 chunks [long_text[i:ichunk_size] for i in range(0, len(long_text), chunk_size)] summaries [] for chunk in chunks: summary, _ model.chat(tokenizer, f总结这段文字{chunk}) summaries.append(summary) # 对总结再次总结 final_summary, _ model.chat(tokenizer, f综合这些总结{ .join(summaries)}) return final_summary7. 常见问题解决7.1 上下文丢失问题如果发现模型忘记之前的内容def reinforce_context(question, history, important_points): 加强上下文记忆 if important_points: enhanced_question f根据之前的对话{, .join(important_points)}。现在的问题{question} return enhanced_question return question # 使用增强后的提问 enhanced_question reinforce_context(新问题, history, important_info) response, history model.chat(tokenizer, enhanced_question, historyhistory)7.2 处理歧义和模糊指代当用户使用这个、那个等指代时def resolve_references(question, history): 解析指代问题 last_few_turns history[-4:] if len(history) 4 else history context .join(last_few_turns) clarification_prompt f 对话上下文{context} 用户最新问题{question} 请先解析用户问题中的指代内容再回答问题。 return clarification_prompt clarified_question resolve_references(这个怎么用, history) response, history model.chat(tokenizer, clarified_question, historyhistory)8. 总结实际使用ChatGLM3-6B-128K进行多轮对话开发后感觉它的上下文保持能力确实比普通模型强很多。128K的上下文长度意味着它可以处理大约9万个汉字相当于120页的文档内容这对于大多数应用场景都足够了。关键是要学会合理管理对话历史及时提取和强化重要信息。有时候简单的技巧比如在问题中重复关键上下文比复杂的算法更有效。对于超长对话建议定期总结前面内容既减轻模型负担又能保持对话连贯性。如果你刚开始接触多轮对话开发建议先从简单的场景开始慢慢增加复杂度。记得多测试边界情况比如长时间对话后的记忆保持能力这样才能打造出用户体验更好的对话系统。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。

相关文章:

ChatGLM3-6B-128K多轮对话优化:上下文保持技术

ChatGLM3-6B-128K多轮对话优化:上下文保持技术 1. 引言 你有没有遇到过这样的情况:和AI聊天时,聊着聊着它就忘了前面说过什么?比如你告诉它"我喜欢吃辣",过几轮对话后问"我喜欢的口味是什么"&am…...

计算机毕业设计:Python当当图书数据智能采集分析系统 Django框架 爬虫 Pandas 可视化 大数据 大模型 书籍(建议收藏)✅

博主介绍:✌全网粉丝10W,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业项目实战6年之久,选择我们就是选择放心、选择安心毕业✌ > 🍅想要获取完整文章或者源码,或者代做,拉到文章底部即可与…...

SpringBoot项目实战:5分钟搞定SkyWalking+Logback链路追踪(附完整配置)

SpringBoot实战:SkyWalking与Logback的无缝集成与链路追踪优化 在微服务架构盛行的今天,系统复杂度呈指数级增长,一个简单的用户请求可能涉及数十个服务的协同工作。当出现性能瓶颈或异常时,如何快速定位问题源头成为开发者的噩梦…...

React Hooks 核心原理

Hooks 是 React 16.8 推出的里程碑特性,核心目的是 让函数组件拥有类组件的状态管理和生命周期能力,彻底解决了函数组件无法维护状态、代码复用繁琐的痛点。其底层原理围绕「Hook 调用顺序」和「Hook 存储结构」展开,逻辑简洁但约束严格&…...

从相机取景到屏幕成像:深入解析MVP变换的图形学原理

1. 从拍照到成像:理解MVP变换的摄影类比 想象你是一位摄影师,正准备拍摄一组静物照片。首先,你会精心摆放桌上的水果和花瓶——这相当于图形学中的模型变换(Model Transformation)。接着,你要调整三脚架高度…...

零基础5分钟搞定!cv_unet_image-colorization黑白照片上色工具保姆级部署教程

零基础5分钟搞定!cv_unet_image-colorization黑白照片上色工具保姆级部署教程 1. 工具简介与核心价值 你是否有一堆黑白老照片想要恢复色彩?cv_unet_image-colorization就是为你量身打造的工具。这个基于AI的图像上色工具,能让你的黑白照片…...

计算机毕业设计:Python当当图书网数据分析与可视化平台 Django框架 爬虫 Pandas 可视化 大数据 大模型 书籍(建议收藏)✅

博主介绍:✌全网粉丝50W,前互联网大厂软件研发、集结硕博英豪成立软件开发工作室,专注于计算机相关专业项目实战6年之久,累计开发项目作品上万套。凭借丰富的经验与专业实力,已帮助成千上万的学生顺利毕业,…...

SAP权限管理必知:5个关键Table解析与实战应用(附常用事务码清单)

SAP权限管理必知:5个关键Table解析与实战应用(附常用事务码清单) 在SAP系统中,权限管理是确保数据安全和业务流程合规的核心环节。作为系统管理员或开发人员,深入理解权限相关的核心Table结构,能够快速定位…...

Langflow新手必看:5分钟搞定你的第一个低代码AI应用(附详细截图)

Langflow新手必看:5分钟搞定你的第一个低代码AI应用(附详细截图) 第一次接触低代码开发平台时,很多人会被那些专业术语和复杂界面吓退。但Langflow不同——它用最直观的方式,让AI应用开发变得像搭积木一样简单。今天&a…...

反激电源输入电容谷底深度计算全解析:从理论公式到实际工程应用

反激电源输入电容谷底深度计算全解析:从理论公式到实际工程应用 在反激式开关电源设计中,输入电容的谷底电压计算是一个既基础又关键的技术难点。许多工程师在设计初期往往只关注拓扑选择和元件参数匹配,却忽视了输入电容谷底深度对整个系统性…...

FFmpeg时间戳完全指南:从采集到播放的PTS/DTS避坑手册

FFmpeg时间戳完全指南:从采集到播放的PTS/DTS避坑手册 引言:时间戳的本质与音视频同步的挑战 在数字音视频处理的世界里,时间戳就像交响乐团的指挥棒,它决定了每一帧画面和每一个声音样本应该在何时登场。想象一下,如果…...

CosyVoice语音生成大模型-300M-25Hz面试宝典:语音合成原理与模型调优高频考点解析

CosyVoice语音生成大模型-300M-25Hz面试宝典:语音合成原理与模型调优高频考点解析 最近几年,语音合成技术发展得特别快,从以前听起来像机器人的电子音,到现在几乎能以假乱真的人声,变化可以说是天翻地覆。如果你正在准…...

B6充电器模式详解:从平衡充到储存模式的实战指南

1. B6充电器基础入门:认识你的智能充电伙伴 第一次拿到B6充电器时,我盯着面板上密密麻麻的英文缩写发懵。这玩意儿比手机充电器复杂十倍,但用顺手后发现它简直是锂电池的"智能保姆"。B6充电器本质上是个多功能充放电设备&#xff0…...

SUNFLOWER MATCH LAB系统资源管理:C盘清理与模型存储优化技巧

SUNFLOWER MATCH LAB系统资源管理:C盘清理与模型存储优化技巧 你是不是也遇到过这种情况?兴致勃勃地打开SUNFLOWER MATCH LAB,准备跑一个期待已久的模型实验,结果系统弹出一个刺眼的红色警告——C盘空间不足。看着那几乎被塞满的…...

Java开发者必看:斑马打印机DLL文件配置全攻略(含32/64位JDK适配指南)

Java开发者必看:斑马打印机DLL文件配置全攻略(含32/64位JDK适配指南) 1. 环境准备与基础概念 斑马打印机在物流、零售等行业的标签打印场景中占据重要地位。Java开发者通过官方提供的zebraAPI进行打印机控制时,DLL文件的正确配置往…...

LoRA训练助手提示词写法:让Qwen3-32B更好理解图片内容的10个要点

LoRA训练助手提示词写法:让Qwen3-32B更好理解图片内容的10个要点 1. 引言:为什么提示词写法如此重要? 如果你正在使用LoRA训练助手来生成AI绘画的训练标签,可能会发现一个现象:同样的图片内容,不同的描述…...

Hyper-V云桌面新选择:Windows Server 2025与DoraCloud免费版深度评测

Hyper-V云桌面新选择:Windows Server 2025与DoraCloud免费版深度评测 在企业数字化转型浪潮中,虚拟桌面基础设施(VDI)正成为提升办公灵活性和数据安全性的关键技术方案。随着Windows Server 2025预览版的发布,其Hyper-…...

DWA算法在ROS移动机器人中的实战调参指南:如何避免局部最优陷阱

DWA算法在ROS移动机器人中的实战调参指南:如何避免局部最优陷阱 当你的机器人在狭窄走廊里反复"卡壳",或是面对C形障碍物时陷入无限循环,这可能不是硬件问题,而是DWA算法参数在作祟。作为ROS开发者最常用的局部路径规划…...

VMware被博通收购后,ESXi和虚拟机软件到底去哪下?最新下载渠道全解析

VMware被博通收购后的软件获取指南:从ESXi到虚拟机的完整解决方案 去年科技行业最重磅的收购案之一,莫过于博通对VMware的并购。这场价值610亿美元的交易不仅改变了企业级虚拟化市场的格局,更直接影响了数百万用户获取VMware产品的方式。如果…...

在树莓派直接安装LibreELEC镜像以便启动kodi

LibreELEC是一个开源的Linux发行版,核心软件是Kodi,也安装了足够多的软件包。该项目是从OpenELEC发展而来,旨在提供一个包含运行Kodi媒体中心软件的基本必需品的操作系统。 LibreELEC简单来说就是最小限度满足Kodi运行的Linux,Lib…...

Cadence多版本共存实战:用阿狸狗工具同时运行16.6和17.2的秘诀

Cadence多版本共存实战:高效管理16.6与17.2的工程协作方案 在电子设计自动化(EDA)领域,Cadence系列工具因其强大的功能和稳定性成为行业标准。然而,当工程师需要同时维护基于不同版本Cadence(如16.6和17.2&…...

7个优化技巧,让你的RAG效果提升明显!收藏这份大厂实践指南

“RAG 不难搭,难的是做好。很多团队搭了个 RAG,发现效果一般。检索不准、回答幻觉、速度慢…。这篇文章,我结合大厂实践,分享 7 个优化技巧。” “关键词:RAG、检索增强生成、优化技巧、大厂实践、技术深度”先说个真实…...

Unity+AI 用一句话制作完整小游戏:飞翔的牛马【AI纯添加-0手工代码】

📢前言🎮UnityAI 用一句话制作完整小游戏:飞翔的牛马【AI纯添加-0手工代码】一、准备工作1.1 软件安装1.2 使用Unity添加一个工程二、需求描述三、AI制作四、问题反馈五、游玩体验六、图片素材填充七、最终效果八、心得体会💡总结…...

HTC 10内存扩容实战:刷LineageOS 19.1后如何用lin_os_swap_mod增加运存

HTC 10内存扩容实战:刷LineageOS 19.1后如何用lin_os_swap_mod增加运存 手里这台HTC 10已经陪伴我五年了,3GB的运存在如今动辄8GB起步的时代显得捉襟见肘。直到发现LineageOS 19.1和lin_os_swap_mod这个神奇组合,让老设备重获新生。下面分享我…...

单片机课程设计实战:八路抢答器从原理到实现的完整指南

单片机课程设计实战:八路抢答器从原理到实现的完整指南 在电子技术飞速发展的今天,单片机作为嵌入式系统的核心,已成为工科学生必须掌握的重要技能。八路抢答器作为经典的课程设计项目,不仅能帮助学生理解单片机的基本工作原理&am…...

GPT-3实战:如何用Few-Shot Learning提升你的NLP任务效果(附代码示例)

GPT-3实战:Few-Shot Learning在NLP任务中的高效应用指南 当开发者第一次接触GPT-3时,最令人惊叹的莫过于它仅需少量示例就能完成复杂NLP任务的能力。这种被称为Few-Shot Learning的技术,正在改变我们处理自然语言处理任务的方式。不同于传统需…...

SAP HR薪资数据查询实战:如何用PC_PAYRESULT和TCODE快速获取员工薪资明细

SAP HR薪资数据查询实战:如何用PC_PAYRESULT和TCODE快速获取员工薪资明细 在SAP HR系统的日常运维中,薪资数据查询是最基础却至关重要的操作之一。无论是HR部门的月度薪资核对,还是财务团队的年度审计准备,快速准确地获取员工薪资…...

【谷歌TPU全栈技术解析】第五章 集群部署与性能工程

5. 集群部署与性能工程 5.1 TPU Pod超级计算机架构 TPU Pod架构历经多代演进,从v4到v7形成了独特的可扩展超算体系。TPU v4 Pod配置4096颗芯片,采用液冷系统支持8.5MW功率负载,通过光路交换(OCS)技术构建3D Torus拓扑互联网络。该架构允许单Pod内部实现亚微秒级延迟的Al…...

ModelScope vs Hugging Face:哪个更适合你的AI项目?5个关键因素帮你选

ModelScope vs Hugging Face:5个关键维度深度对比与选型指南 当我们需要为AI项目选择基础平台时,ModelScope和Hugging Face这两个名字总会出现在候选名单中。它们看似相似,实则针对不同需求场景提供了差异化的解决方案。本文将基于实际项目经…...

ESP32脉冲计数器进阶玩法:用PCNT模块实现高精度正交编码(附完整配置)

ESP32脉冲计数器进阶玩法:用PCNT模块实现高精度正交编码(附完整配置) 在工业自动化、机器人控制和精密仪器领域,正交编码器因其高精度和方向识别能力成为位置检测的首选方案。ESP32内置的PCNT(Pulse Counter&#xff0…...