DeepSeek-R1-Distill-Qwen-1.5B快速上手如何导出对话历史为Markdown并保留思考结构1. 项目简介你的本地智能对话助手如果你正在寻找一个能在自己电脑上运行的智能对话助手既要有不错的逻辑推理能力又不需要昂贵的显卡那么DeepSeek-R1-Distill-Qwen-1.5B可能就是你要找的答案。这个项目基于一个特别设计的轻量级模型——DeepSeek-R1-Distill-Qwen-1.5B。简单来说它结合了DeepSeek模型强大的推理能力和Qwen模型成熟的技术架构然后通过一种叫做蒸馏的技术把原本需要大量计算资源的大模型压缩成了一个只有15亿参数的小巧版本。15亿参数是什么概念这意味着它可以在普通的笔记本电脑上运行甚至不需要独立显卡也能工作。对于大多数用户来说这大大降低了使用门槛。整个项目用Streamlit构建了一个网页界面你不需要懂任何命令行操作打开浏览器就能像使用ChatGPT一样和它对话。更重要的是所有的对话都在你的本地电脑上处理你的问题、模型的回答都不会上传到任何云端服务器完全保护了你的隐私。2. 为什么需要导出对话历史2.1 保存有价值的对话内容当你和这个本地助手进行深入对话时可能会产生很多有价值的内容。比如学习笔记你向它请教某个技术概念它给出了详细的解释和例子代码解决方案你让它帮忙写一段代码它提供了完整的实现和注释问题分析你提出一个复杂问题它展示了完整的思考过程创意内容你让它生成一些文案、故事或其他创意内容这些内容如果只是留在网页界面里关闭浏览器就没了多可惜。导出保存下来以后随时可以查阅、整理、分享。2.2 保留独特的思考结构这个模型有一个很特别的功能它会展示自己的思考过程。当你问它一个问题时它不会直接给出答案而是先展示自己是怎么想的然后再给出最终回答。比如你问Python里列表和元组有什么区别模型可能会这样回答think 用户问的是Python中列表和元组的区别。我需要从几个方面来比较 1. 可变性列表是可变的元组是不可变的 2. 语法列表用方括号[]元组用圆括号() 3. 性能元组通常比列表更快 4. 使用场景列表用于需要修改的数据元组用于固定数据 我应该用表格的形式来展示这些区别这样更清晰。 /think 列表和元组都是Python中常用的数据结构主要区别如下 | 特性 | 列表 | 元组 | |------|------|------| | 可变性 | 可变可以修改元素 | 不可变创建后不能修改 | | 语法 | 使用方括号 [] | 使用圆括号 () | | 性能 | 相对较慢 | 相对较快 | | 使用场景 | 需要频繁修改的数据 | 固定不变的数据如坐标、配置 | | 内存占用 | 较大 | 较小 |这种先思考再回答的结构特别有价值因为它不仅告诉你答案还告诉你得到答案的思路。导出对话时保留这个结构对你学习思考方法很有帮助。2.3 方便整理和分享导出的Markdown文件可以用任何文本编辑器打开也可以导入到笔记软件里。你可以把相关的对话整理成学习资料把解决问题的过程分享给同事或同学建立自己的知识库随时查阅在不同设备间同步这些对话记录3. 快速部署10分钟搭建本地对话环境3.1 环境准备首先确保你的电脑满足基本要求操作系统Windows 10/11macOS或者Linux都可以内存至少8GB RAM16GB更好存储空间需要约3GB的可用空间存放模型文件Python版本Python 3.8或更高版本如果你没有安装Python可以去Python官网下载安装。建议选择Python 3.8以上的版本。3.2 安装必要的软件包打开命令行工具Windows上是命令提示符或PowerShellmacOS和Linux上是终端输入以下命令安装需要的软件pip install torch streamlit transformers这三个包的作用分别是torchPyTorch深度学习框架用来运行模型streamlit创建网页界面的工具transformersHugging Face的模型库用来加载和使用模型安装过程可能需要几分钟时间取决于你的网络速度。3.3 下载项目代码你需要获取这个对话助手的代码。通常代码会放在GitHub这样的代码托管平台上。你可以用git命令下载或者直接下载ZIP文件。如果使用git在命令行中输入git clone https://github.com/用户名/项目名.git cd 项目名如果下载ZIP文件解压后进入项目文件夹。3.4 运行对话助手在项目文件夹里你会看到一个Python文件通常叫做app.py或者chat.py。在命令行中运行streamlit run app.py第一次运行时会下载模型文件这可能需要一些时间因为模型文件大约有3GB大小。下载完成后你会看到类似这样的信息You can now view your Streamlit app in your browser. Local URL: http://localhost:8501 Network URL: http://192.168.1.100:8501打开浏览器访问http://localhost:8501就能看到对话界面了。4. 基础使用开始你的第一次对话4.1 界面介绍打开网页后你会看到一个简洁的聊天界面左侧侧边栏有一些设置选项和功能按钮中间主区域显示对话历史你的问题在右侧模型的回答在左侧底部输入框在这里输入你的问题按回车发送界面设计得很直观和你用过的其他聊天工具很像不需要特别学习就能上手。4.2 问第一个问题在输入框里你可以问各种类型的问题。比如学习问题解释一下什么是神经网络编程问题用Python写一个计算斐波那契数列的函数逻辑问题如果A说B在说谎B说C在说谎C说A和B都在说谎谁在说真话创意问题写一个关于人工智能的短故事输入问题后按回车模型就会开始思考并回答。第一次回答可能需要几秒钟时间因为模型需要加载到内存中。4.3 理解模型的回答注意看模型的回答它会分成两个部分思考过程放在think标签里用灰色背景显示最终答案思考过程之后的内容用正常样式显示这种结构让你能看到模型是怎么一步步推理的对于学习复杂问题的解决方法特别有帮助。4.4 继续对话你可以基于模型的回答继续提问形成多轮对话。比如你问Python里怎么读取CSV文件 模型回答后你可以接着问那如果CSV文件很大内存不够怎么办模型会记住之前的对话内容给出连贯的回答。5. 导出对话历史为Markdown5.1 为什么用Markdown格式Markdown是一种轻量级的标记语言有这几个优点通用性强几乎所有的文本编辑器都支持可读性好纯文本格式人类可以直接阅读转换方便可以轻松转换为HTML、PDF等其他格式平台无关在Windows、macOS、Linux上都能正常显示最重要的是Markdown能很好地保留文本的结构比如标题、列表、代码块等正好适合保存结构化的对话内容。5.2 手动导出方法虽然当前的对话助手界面没有直接的导出按钮但你可以手动保存对话内容。方法很简单选中对话内容在网页界面中用鼠标选中你想要保存的对话内容复制到剪贴板按CtrlCWindows/Linux或CmdCmacOS复制粘贴到文本编辑器打开任何文本编辑器如记事本、VS Code、Sublime Text等保存为Markdown文件将文件保存为.md后缀比如对话记录.md不过这种方法有个问题思考过程think标签里的内容和回答内容是混在一起的没有很好的区分。5.3 改进的导出方法我们可以写一个简单的Python脚本来更好地导出对话。在项目文件夹里创建一个新文件export_chat.pyimport re from datetime import datetime def format_chat_to_markdown(messages): 将对话消息格式化为Markdown markdown_content # 对话记录\n\n markdown_content f导出时间{datetime.now().strftime(%Y-%m-%d %H:%M:%S)}\n\n for i, msg in enumerate(messages, 1): if msg[role] user: markdown_content f## 第{i//2 1}轮用户提问\n\n markdown_content f{msg[content]}\n\n elif msg[role] assistant: markdown_content f## 第{i//2}轮助手回答\n\n # 提取思考过程 think_match re.search(rthink(.*?)/think, msg[content], re.DOTALL) if think_match: think_content think_match.group(1).strip() markdown_content ### 思考过程\n\n markdown_content f{think_content}\n\n # 提取回答部分去掉思考标签 answer_content re.sub(rthink.*?/think, , msg[content], flagsre.DOTALL).strip() if answer_content: markdown_content ### 最终回答\n\n markdown_content f{answer_content}\n\n else: markdown_content f{msg[content]}\n\n markdown_content ---\n\n return markdown_content # 示例假设这是从对话界面获取的消息列表 example_messages [ { role: user, content: Python里列表和元组有什么区别 }, { role: assistant, content: think 用户问的是Python中列表和元组的区别。我需要从几个方面来比较 1. 可变性列表是可变的元组是不可变的 2. 语法列表用方括号[]元组用圆括号() 3. 性能元组通常比列表更快 4. 使用场景列表用于需要修改的数据元组用于固定数据 我应该用表格的形式来展示这些区别这样更清晰。 /think 列表和元组都是Python中常用的数据结构主要区别如下 | 特性 | 列表 | 元组 | |------|------|------| | 可变性 | 可变可以修改元素 | 不可变创建后不能修改 | | 语法 | 使用方括号 [] | 使用圆括号 () | | 性能 | 相对较慢 | 相对较快 | | 使用场景 | 需要频繁修改的数据 | 固定不变的数据如坐标、配置 | | 内存占用 | 较大 | 较小 | 简单来说需要修改数据时用列表不需要修改时用元组。 } ] # 生成Markdown markdown format_chat_to_markdown(example_messages) # 保存到文件 with open(chat_export.md, w, encodingutf-8) as f: f.write(markdown) print(对话已导出到 chat_export.md)这个脚本做了几件事自动提取思考过程和回答内容用不同的标题层级区分用户问题和助手回答单独展示思考过程方便学习添加时间戳记录导出时间5.4 集成到对话界面如果你想让导出功能更方便可以修改原来的对话助手代码添加一个导出按钮。在Streamlit应用中添加import streamlit as st import re from datetime import datetime # ... 原有的代码 ... # 在侧边栏添加导出按钮 with st.sidebar: if st.button(导出对话为Markdown): if st.session_state.messages: markdown_content format_chat_to_markdown(st.session_state.messages) # 提供下载 st.download_button( label下载Markdown文件, datamarkdown_content, file_namefchat_export_{datetime.now().strftime(%Y%m%d_%H%M%S)}.md, mimetext/markdown ) else: st.warning(还没有对话内容可以导出)这样就在侧边栏添加了一个导出按钮点击后可以直接下载Markdown文件。6. 高级技巧优化导出的对话记录6.1 添加代码高亮如果对话中包含代码你可以在Markdown中使用代码块并指定语言这样在支持语法高亮的编辑器中会更好看def format_code_blocks(content): 自动检测并格式化代码块 # 检测Python代码 python_patterns [def , import , print(, for , if ] if any(pattern in content for pattern in python_patterns): return fpython\n{content}\n # 检测其他语言... return f\n{content}\n6.2 提取关键信息你可以让导出的文件包含一些元信息方便整理def add_metadata(messages, markdown_content): 添加元数据到Markdown文件 metadata ---\n metadata f对话轮数{len(messages)//2}\n metadata f总字数{sum(len(m[content]) for m in messages)}\n # 提取对话主题从第一个问题中提取关键词 if messages: first_question messages[0][content] # 简单的关键词提取逻辑 keywords extract_keywords(first_question) metadata f主要话题{, .join(keywords)}\n metadata ---\n\n return metadata markdown_content6.3 批量导出和管理如果你有多个对话会话可以创建一个管理系统import os import json from pathlib import Path class ChatExporter: def __init__(self, export_dirchat_exports): self.export_dir Path(export_dir) self.export_dir.mkdir(exist_okTrue) def export_chat(self, messages, titleNone): 导出单次对话 if not title: title f对话_{datetime.now().strftime(%Y%m%d_%H%M%S)} markdown_content format_chat_to_markdown(messages) # 保存Markdown md_file self.export_dir / f{title}.md md_file.write_text(markdown_content, encodingutf-8) # 同时保存原始数据JSON格式 json_file self.export_dir / f{title}.json with open(json_file, w, encodingutf-8) as f: json.dump(messages, f, ensure_asciiFalse, indent2) return str(md_file) def list_exports(self): 列出所有导出的对话 return list(self.export_dir.glob(*.md))6.4 自动整理和分类你可以根据对话内容自动分类def categorize_chat(messages): 根据对话内容自动分类 content .join([m[content] for m in messages]) categories { 编程: [python, 代码, 函数, 编程, 算法], 学习: [解释, 概念, 学习, 理解, 原理], 创意: [故事, 创意, 写作, 生成, 想象], 逻辑: [推理, 逻辑, 问题, 解决, 分析], 日常: [你好, 天气, 建议, 聊天, 日常] } scores {} for category, keywords in categories.items(): score sum(content.lower().count(keyword) for keyword in keywords) if score 0: scores[category] score if scores: return max(scores.items(), keylambda x: x[1])[0] return 其他7. 实际应用场景7.1 学习笔记整理假设你在学习Python问了一系列问题解释一下装饰器的作用生成器函数和普通函数有什么区别怎么用多线程提高程序性能导出这些对话后你就有了一个完整的学习笔记。每个问题都有模型的思考过程和详细回答比普通的笔记更有价值。7.2 问题解决记录在工作中遇到技术问题你可以向模型描述问题根据模型的建议尝试解决反馈结果继续优化导出完整的解决过程这样你就有了一个完整的问题解决记录下次遇到类似问题可以直接参考。7.3 创意写作助手如果你在写小说、文章或文案让模型帮你生成创意点子讨论故事发展修改和完善内容导出整个创作过程导出的Markdown文件可以直接作为创作草稿思考过程还能帮你理清创作思路。7.4 代码开发日志在开发程序时让模型解释复杂的概念生成示例代码讨论架构设计解决遇到的bug导出这些对话就是一个完整的开发日志记录了你的思考过程和解决方案。8. 总结8.1 核心价值回顾DeepSeek-R1-Distill-Qwen-1.5B本地对话助手给你提供了一个完全私有的AI对话环境。最大的特点是它能展示思考过程这不仅是给你答案更是教你思考方法。导出对话历史为Markdown文件让你能够永久保存有价值的对话内容保留思考结构方便学习和回顾整理归类建立个人知识库随时查阅不受网络限制安全私密所有数据都在本地8.2 使用建议根据我的使用经验给你几个建议定期导出重要的对话及时导出保存避免丢失分类整理按主题建立不同的文件夹比如Python学习、工作问题、创意写作等添加标签在导出的文件中添加关键词标签方便搜索分享交流把有价值的对话分享给需要的人但注意不要包含敏感信息结合笔记软件把Markdown文件导入到Obsidian、Notion等笔记软件中建立知识网络8.3 下一步探索掌握了基础的使用和导出方法后你还可以尝试自定义界面修改Streamlit代码让界面更符合你的使用习惯添加功能比如对话搜索、标签管理、自动摘要等集成其他工具把导出的对话自动同步到云笔记或Git仓库批量处理如果你有很多历史对话可以写脚本批量导出和整理最重要的是开始使用并形成习惯。每次有重要的对话花一分钟时间导出保存长期积累下来你就会拥有一个非常有价值的个人知识库。这个本地对话助手就像你的私人学习伙伴随时待命随时解答问题。而通过导出功能你可以把每一次有价值的对话都变成永久的学习资料。现在就开始你的第一段对话吧记得导出保存哦获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。