本文详细介绍了如何构建一个情绪对话模型,从项目背景、数据工程到模型部署,全链路实战教程。首先明确情绪对话模型的应用场景,区分微调与RAG技术的适用场景;接着深入数据工程,包括数据来源选择、风格模板配置、生成及质量过滤、数据去重、人工审核以及格式转换等关键步骤;最后探讨了不同风格的Prompt设计要点。通过Xtuner微调和LMDeploy部署,实现一个具备定制对话风格的AI助手,为客服、情感陪伴等领域提供有力支持。


你是否遇到过这样的需求:领导让你训练一个"懂情绪、会聊天"的AI助手?

从需求到上线,手把手带你走通情绪对话模型微调全流程

本系列3篇文章,串联数据生成→微调训练→模型部署→效果评测全链路,本篇先讲数据工程——没有高质量数据,再好的模型也是废铁!


  1. 项目背景:为什么要做情绪对话模型?

1.1 什么是情绪对话模型?

情绪对话模型是指能够感知用户语境,并以特定风格回复的对话 AI。应用场景包括:

场景说明
客服机器人带情感的客服,提升用户满意度
情感陪伴心理疏导、孤独陪伴
虚拟朋友特定人设的聊天机器人

本篇实战重点用微调固定怎么说(温柔、毒舌等风格)。

1.2 选微调还是 RAG?不同场景不同方案!

应用场景核心技术说明
专业问答系统RAG需要从知识库检索答案,核心技术是 RAG,不是微调
情绪对话模型微调需要定制对话风格,RAG 无法解决「怎么说」的问题

特别提醒:如果你做的是法律、医疗、金融等专业问答系统,核心技术一定是 RAG(或微调+RAG 结合),纯微调无法满足知识更新需求!

什么时候用微调?

  • 模型的自我认知需要改变(如:你叫什么名字)
  • 需要特定的对话风格(如:温柔型、毒舌型)
  • 任务格式需要固定化
  • 模型对专业问题的理解不到位时,可用微调加强理解

什么时候用 RAG?

  • 需要动态更新知识库
  • 答案需要可追溯来源
  • 专业领域知识需要准确引用

总结RAG 解决「说什么」,微调解决「怎么说」。专业问答用 RAG,情绪对话用微调!


  1. 项目实施流程

本项目的完整链路:

数据 → 模型 → 训练/评测 → 部署

本篇聚焦数据;这里先建立全局视图。

环节本项目怎么做
数据开源对话 + 在线 API 生成风格回复 → 过滤/去重 → 转 Xtuner 格式
模型按显存与任务复杂度选型(如 Qwen 小尺寸 Chat)
训练/评测结果偏主观,选用 Xtuner(训练中可做主观评测);客观指标场景更常用 LLaMA-Factory
部署LMDeploy + Streamlit

技术栈一览:

环节工具选型理由
微调Xtuner支持主观评测,中文生态好
部署LMDeploy国产推理框架,对 Qwen 支持好
评测OpenCompass开源中文评测标杆
Web 界面Streamlit快速搭建交互界面

显存粗算(权重,fp16):参数量(B) × 2 ≈ GB。例如 32B ≈ 64GB,再加激活、优化器与框架开销。具体选型见第 2 篇。


  1. 数据工程实战

数据工程推荐顺序:

定数据源 → 配置风格 → API 生成 → 质量过滤 → 去重 → 人工审核 → 转训练格式

3.1 数据来源

类型说明
甲方提供企业业务数据(客服记录、社交媒体、业务对话)
自己收集成本较高:先定数据标准,再手动采集 / 爬虫 / 接口 / AI 生成
后续处理清洗标注(噪声过滤、格式统一、隐私脱敏)→ 指定训练格式

本项目方案:

  1. 人工指定少量日常话术,先跑通生成脚本
  2. 基于开源对话数据批量扩充 user_inputs,再让在线 API 改写成目标风格

用 AI 辅助处理数据时,尽量选用效果较好的在线 API。

推荐开源对话数据:

数据集说明
LCCC-large1200万+ 清洗后的开放域对话
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:生成及质量过滤

生成链路:

  1. 构建消息上下文(system + few-shot examples)
  2. user_inputs 随机取一条用户话术
  3. 调用 API 得到回复
  4. 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

  1. 不同风格的 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%免费

在这里插入图片描述

Logo

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

更多推荐