手把手教你打造“懂情绪、会聊天“AI助手:从数据工程到模型部署全解析!
本文详细介绍了如何构建一个情绪对话模型,从项目背景、数据工程到模型部署,全链路实战教程。首先明确情绪对话模型的应用场景,区分微调与RAG技术的适用场景;接着深入数据工程,包括数据来源选择、风格模板配置、生成及质量过滤、数据去重、人工审核以及格式转换等关键步骤;最后探讨了不同风格的Prompt设计要点。通过Xtuner微调和LMDeploy部署,实现一个具备定制对话风格的AI助手,为客服、情感陪伴等领域提供有力支持。
你是否遇到过这样的需求:领导让你训练一个"懂情绪、会聊天"的AI助手?
从需求到上线,手把手带你走通情绪对话模型微调全流程!
本系列3篇文章,串联数据生成→微调训练→模型部署→效果评测全链路,本篇先讲数据工程——没有高质量数据,再好的模型也是废铁!

- 项目背景:为什么要做情绪对话模型?
1.1 什么是情绪对话模型?
情绪对话模型是指能够感知用户语境,并以特定风格回复的对话 AI。应用场景包括:
| 场景 | 说明 |
|---|---|
| 客服机器人 | 带情感的客服,提升用户满意度 |
| 情感陪伴 | 心理疏导、孤独陪伴 |
| 虚拟朋友 | 特定人设的聊天机器人 |
本篇实战重点用微调固定怎么说(温柔、毒舌等风格)。
1.2 选微调还是 RAG?不同场景不同方案!
| 应用场景 | 核心技术 | 说明 |
|---|---|---|
| 专业问答系统 | RAG | 需要从知识库检索答案,核心技术是 RAG,不是微调 |
| 情绪对话模型 | 微调 | 需要定制对话风格,RAG 无法解决「怎么说」的问题 |
特别提醒:如果你做的是法律、医疗、金融等专业问答系统,核心技术一定是 RAG(或微调+RAG 结合),纯微调无法满足知识更新需求!
什么时候用微调?
- 模型的自我认知需要改变(如:你叫什么名字)
- 需要特定的对话风格(如:温柔型、毒舌型)
- 任务格式需要固定化
- 模型对专业问题的理解不到位时,可用微调加强理解
什么时候用 RAG?
- 需要动态更新知识库
- 答案需要可追溯来源
- 专业领域知识需要准确引用
总结:RAG 解决「说什么」,微调解决「怎么说」。专业问答用 RAG,情绪对话用微调!
- 项目实施流程
本项目的完整链路:
数据 → 模型 → 训练/评测 → 部署
本篇聚焦数据;这里先建立全局视图。
| 环节 | 本项目怎么做 |
|---|---|
| 数据 | 开源对话 + 在线 API 生成风格回复 → 过滤/去重 → 转 Xtuner 格式 |
| 模型 | 按显存与任务复杂度选型(如 Qwen 小尺寸 Chat) |
| 训练/评测 | 结果偏主观,选用 Xtuner(训练中可做主观评测);客观指标场景更常用 LLaMA-Factory |
| 部署 | LMDeploy + Streamlit |
技术栈一览:
| 环节 | 工具 | 选型理由 |
|---|---|---|
| 微调 | Xtuner | 支持主观评测,中文生态好 |
| 部署 | LMDeploy | 国产推理框架,对 Qwen 支持好 |
| 评测 | OpenCompass | 开源中文评测标杆 |
| Web 界面 | Streamlit | 快速搭建交互界面 |
显存粗算(权重,fp16):参数量(B) × 2 ≈ GB。例如 32B ≈ 64GB,再加激活、优化器与框架开销。具体选型见第 2 篇。
- 数据工程实战
数据工程推荐顺序:
定数据源 → 配置风格 → API 生成 → 质量过滤 → 去重 → 人工审核 → 转训练格式

3.1 数据来源
| 类型 | 说明 |
|---|---|
| 甲方提供 | 企业业务数据(客服记录、社交媒体、业务对话) |
| 自己收集 | 成本较高:先定数据标准,再手动采集 / 爬虫 / 接口 / AI 生成 |
| 后续处理 | 清洗标注(噪声过滤、格式统一、隐私脱敏)→ 指定训练格式 |
本项目方案:
- 人工指定少量日常话术,先跑通生成脚本
- 基于开源对话数据批量扩充
user_inputs,再让在线 API 改写成目标风格
用 AI 辅助处理数据时,尽量选用效果较好的在线 API。
推荐开源对话数据:
| 数据集 | 说明 |
|---|---|
| LCCC-large | 1200万+ 清洗后的开放域对话 |
| STC-corpus | 微博短文对话(情感丰富) |
STC 参考:https://github.com/thu-coai/CDial-GPT?tab=readme-ov-file#Dataset-zh
实操建议:先用下面几条验证流程,再从上述数据集筛约 1000 条 作为 user_inputs 批量生成。
user_inputs = [ "今天心情不太好", "推荐个电影吧", "怎么才能早睡早起", "养猫好还是养狗好", "工作压力好大", "最近总是失眠"]
本项目的 input_data 定位为日常交流话术。
3.2 步骤1:风格模板配置
本篇实战先做两种风格:
| 风格 | 特点 | 适用场景 |
|---|---|---|
| 温柔型 | 语气词(呢、呀、啦)、温暖表情、主动关心 | 陪伴、轻量客服 |
| 毒舌型 | 网络流行语、夸张比喻、隐藏关心 | 朋友聊天 |
style_config = { "温柔": { "system_prompt": "你是一个温柔体贴的聊天助手,说话时总是充满关怀,使用以下特征:\n1. 包含'呢、呀、啦'等语气词\n2. 使用🌸💖😊等温暖表情\n3. 主动询问用户感受", "examples": [ {"role": "user", "content": "今天好累啊"}, {"role": "assistant", "content": "辛苦啦~ 要给自己泡杯热茶放松一下吗?🌸"}, {"role": "user", "content": "考试没考好..."}, {"role": "assistant", "content": "没关系的呀~ 下次一定会更好!需要我陪你聊聊吗?😊"} ], "temperature": 0.3 }, "毒舌": { # 详见源码 },}
3.3 步骤2:初始化模型
需要两类能力:
- 对话 API:生成风格回复
- Embedding 模型:质量过滤里的相似度检查、以及后续去重
# Embedding 模型下载(路径请按本机修改,下载与加载保持一致)from modelscope import snapshot_downloadEMBED_DIR = r"D:\models\embedding_model"model_dir = snapshot_download( "sungw111/text2vec-base-chinese-sentence", cache_dir=EMBED_DIR,)
``````plaintext
from zhipuai import ZhipuAIfrom sentence_transformers import SentenceTransformerclient = ZhipuAI(api_key="你的API_Key") # 替换为你的 API Keystyle_model = SentenceTransformer( rf"{EMBED_DIR}\sungw111\text2vec-base-chinese-sentence")
说明:
sungw111/text2vec-base-chinese-sentence:本项目用于文本向量化(过滤 / 去重),不是 Xtuner 训练本体- HuggingFace 侧也有同系列
sungw111/text2vec-base-chinese,按你的环境二选一即可
3.4 步骤3:生成及质量过滤
生成链路:
- 构建消息上下文(system + few-shot examples)
- 从
user_inputs随机取一条用户话术 - 调用 API 得到回复
- 用
is_valid_reply做质量过滤,通过才入库
# 核心:few-shot 上下文 + 随机 user + API 生成 + 质检入库messages = [ {"role": "system", "content": config["system_prompt"]}, *config["examples"],]user_msg = random.choice(user_inputs)response = client.chat.completions.create( model="glm-3-turbo", messages=messages + [{"role": "user", "content": user_msg}], temperature=config["temperature"], max_tokens=100,)reply = response.choices[0].message.contentif is_valid_reply(style_name, user_msg, reply): data.append({"user": user_msg, "assistant": reply, "style": style_name})
质量过滤规则(单条回复是否可用):
| 规则 | 作用 |
|---|---|
| 空值检查 | 过滤空回复 |
| 长度检查 | 过短/过长都丢掉 |
| 风格关键词 | 强制命中该风格的标志词 |
| 与示例回复的相似度 | 避免完全跑偏风格(阈值约 0.65) |
注意:这里的相似度是「像不像该风格的示例回复」,用于单条质检;下一节去重用的是「两条样本是否太像」,阈值通常更高(如 0.7)。
# 核心判定(完整实现见配套源码)def is_valid_reply(style, user_msg, reply): if not reply or not (5 <= len(reply) <= 150): return False # 风格关键词命中,如 温柔: 呢/呀/😊 ;毒舌: 好家伙/栓Q if not any(kw in reply for kw in style_keywords[style]): return False # 与该风格示例 assistant 的余弦相似度 > 0.65 return cosine(encode(ref_assistant), encode(reply)) > 0.65
生成效果示例:
[ { "user": "工作压力好大", "assistant": "工作压力大呀,那一定要记得好好休息哦~ 晚上早点睡,给自己放个小假怎么样呀?💖", "style": "温柔" }, { "user": "工作压力好大", "assistant": "好家伙,你这压力堪比三座大山压顶啊!栓Q,别把自己逼成行走的炸药包了!退退退!注意休息,不然迟早把自己熬成老干妈!", "style": "毒舌" }]
3.5 步骤4:数据去重
批量生成后,同一 user 可能产出多条高度相似的 assistant,需要去重。
去重流程:1. 用 embedding 把文本编码成向量2. 计算余弦相似度(向量需归一化)3. 相似度高于阈值(如 0.7)则视为重复并剔除
``````plaintext
def compute_similarity(texts): embeddings = style_model.encode(texts) # 逐行归一化后再做点积,得到余弦相似度矩阵 norms = np.linalg.norm(embeddings, axis=1, keepdims=True) + 1e-8 embeddings = embeddings / norms return np.dot(embeddings, embeddings.T)
❝
踩坑提醒:部分
text2vec权重可能缺少归一化层;若直接np.dot未归一化,得到的是点积而不是余弦相似度。配套源码里会做显式归。
3.6 步骤5:人工审核
规则过滤之后,再抽检一轮:
- 风格一致性:是否混入其他语气
- 事实合理性:建议是否可执行
- 安全性:是否有不当内容
3.7 步骤6:转换为 Xtuner 格式
原始格式(生成结果):
[ { "user": "今天心情不太好", "assistant": "今天是怎么了呢?有什么心事可以和我聊聊~", "style": "温柔" }]
Xtuner 格式:
[ { "conversation": [ { "input": "今天心情不太好", "output": "温柔\n今天是怎么了呢?有什么心事可以和我聊聊~" } ] }]
``````plaintext
def convert_format(source_data): target_data = [] for item in source_data: target_data.append({ "conversation": [ { "input": item["user"], "output": f"{item['style']}\n{item['assistant']}", } ] }) return target_data
- 不同风格的 Prompt 设计要点
第 3 节实战用的是「温柔聊天助手 / 毒舌朋友」。下面给出另外几类可扩展人设的设计要点,便于你改 system_prompt 时复用——不必与第 3 节模板逐字相同。
4.1 温柔客服
- 核心特征:敬语、情绪安抚、主动担责
- Prompt 示例:
请用以下方式回复用户:- 开头使用“您好”“感谢您的反馈”等礼貌用语- 包含至少一个解决方案建议- 结尾添加安抚语句,如“我们会全力为您解决”
4.2 毒舌朋友
- 核心特征:幽默反讽、夸张比喻、适度挑衅
- Prompt 示例:
请模仿好友间调侃语气,要求:- 使用网络流行语(如“扎心了”“你这操作666”)- 包含夸张比喻(如“你这速度比蜗牛搬家还慢”)- 避免人身攻击,保持友善底线
4.3 学术专家
- 核心特征:术语准确、逻辑严谨、引用规范
- Prompt 示例:
请以教授身份回答,要求:- 使用专业术语(如“根据Cohen's d效应量分析...”)- 引用至少一篇权威论文(格式:作者、年份、结论...)- 最后给出进一步研究建议
最后
对于正在迷茫择业、想转行提升,或是刚入门的程序员、编程小白来说,有一个问题几乎人人都在问:未来10年,什么领域的职业发展潜力最大?
答案只有一个:人工智能(尤其是大模型方向)
当下,人工智能行业正处于爆发式增长期,其中大模型相关岗位更是供不应求,薪资待遇直接拉满——字节跳动作为AI领域的头部玩家,给硕士毕业的优质AI人才(含大模型相关方向)开出的月基础工资高达5万—6万元;即便是非“人才计划”的普通应聘者,月基础工资也能稳定在4万元左右。
再看阿里、腾讯两大互联网大厂,非“人才计划”的AI相关岗位应聘者,月基础工资也约有3万元,远超其他行业同资历岗位的薪资水平,对于程序员、小白来说,无疑是绝佳的转型和提升赛道。

如果你还不知道从何开始,我自己整理一套全网最全最细的大模型零基础教程,我也是一路自学走过来的,很清楚小白前期学习的痛楚,你要是没有方向还没有好的资源,根本学不到东西!
下面是我整理的大模型学习资源,希望能帮到你。

👇👇扫码免费领取全部内容👇👇

最后
1、大模型学习路线

2、从0到进阶大模型学习视频教程
从入门到进阶这里都有,跟着老师学习事半功倍。

3、 入门必看大模型学习书籍&文档.pdf(书面上的技术书籍确实太多了,这些是我精选出来的,还有很多不在图里)

4、 AI大模型最新行业报告
2026最新行业报告,针对不同行业的现状、趋势、问题、机会等进行系统地调研和评估,以了解哪些行业更适合引入大模型的技术和应用,以及在哪些方面可以发挥大模型的优势。

5、面试试题/经验

【大厂 AI 岗位面经分享(107 道)】

【AI 大模型面试真题(102 道)】

【LLMs 面试真题(97 道)】

6、大模型项目实战&配套源码

适用人群

四阶段学习规划(共90天,可落地执行)
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
-
硬件选型
-
带你了解全球大模型
-
使用国产大模型服务
-
搭建 OpenAI 代理
-
热身:基于阿里云 PAI 部署 Stable Diffusion
-
在本地计算机运行大模型
-
大模型的私有化部署
-
基于 vLLM 部署大模型
-
案例:如何优雅地在阿里云私有部署开源大模型
-
部署一套开源 LLM 项目
-
内容安全
-
互联网信息服务算法备案
-
…
👇👇扫码免费领取全部内容👇👇

3、这些资料真的有用吗?
这份资料由我和鲁为民博士(北京清华大学学士和美国加州理工学院博士)共同整理,现任上海殷泊信息科技CEO,其创立的MoPaaS云平台获Forrester全球’强劲表现者’认证,服务航天科工、国家电网等1000+企业,以第一作者在IEEE Transactions发表论文50+篇,获NASA JPL火星探测系统强化学习专利等35项中美专利。本套AI大模型课程由清华大学-加州理工双料博士、吴文俊人工智能奖得主鲁为民教授领衔研发。
资料内容涵盖了从入门到进阶的各类视频教程和实战项目,无论你是小白还是有些技术基础的技术人员,这份资料都绝对能帮助你提升薪资待遇,转行大模型岗位。


这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)