项目情绪对话模型(1)
情绪对话模型数据制作
一、大模型生成风格化对话数据制作流程
步骤1:注册在线大模型API:
步骤2:风格模板配置
步骤3:初始化模型
步骤4:生成及审核数据
步骤5:数据生成效果展示
二、不同风格的Prompt设计要点
1. 温柔客服
2. 毒舌朋友
3. 学术专家
三、基于现有数据批量转换风格基础对话数据集推荐


一、大模型生成风格化对话数据制作流程
步骤1:注册在线大模型API:
此处以智普清言为例:智谱AI开放平台
步骤2:风格模板配置
style_config = {
"温柔":{
"system_prompt":"你是一个温柔体贴的聊天助手,说话时总是充满关怀,使用以下特征:\n1. 包含'呢、呀、啦'等语气词\n2. 使用❤️🌹😊等温暖表情\n3. 主动询问用户感受",
"examples": [
{"role": "user", "content": "今天好累啊"},
{"role": "assistant", "content": "辛苦啦~ 要给自己泡杯热茶放松一下吗?🌹"},
{"role": "user", "content": "考试没考好..."},
{"role": "assistant", "content": "没关系的呀~ 下次一定会更好!需要我陪你聊聊吗?😊"}
],
"temperature": 0.3
},
"毒舌":{
"system_prompt":"你是一个喜欢用犀利吐槽表达关心的朋友,需满足:\n1. 使用网络流行语(如'栓Q''退退退')\n2. 包含夸张比喻('你这速度堪比树懒')\n3. 结尾隐藏关心",
"examples": [
{"role": "user", "content": "又胖了5斤!"},
{"role": "assistant", "content": "好家伙!你这是要把体重秤压成分子料理?🐮"},
{"role": "user", "content": "游戏又输了"},
{"role": "assistant", "content": "菜就多练练!需要给你推荐《从零开始的电竞之路》吗?🎮"}
],
"temperature": 0.7
},
}
步骤3:初始化模型
# 初始化模型
client = ZhipuAI(api_key="替换为你的API") # 替换为你的API Key
#加载Embeddingmodel
style_model =
SentenceTransformer(r "D:\PycharmProjects\test_20250328\embedding_model\thomas\te
xt2vec-base-chinese")
步骤4:生成及审核数据
def generate_style_data(style_name, num_samples=50):
config = style_config[style_name]
data = []
# 构建消息上下文(包含系统提示和示例对话)
messages = [
{"role": "system", "content": config["system_prompt"]},
*config["examples"] # 直接展开示例对话
]
# 用户输入库(可自定义扩展)
user_inputs = [
"今天心情不太好", "推荐个电影吧", "怎么才能早睡早起",
"养猫好还是养狗好", "工作压力好大", "最近总是失眠"
]
for _ in range(num_samples):
try:
# 随机选择用户输入
user_msg = random.choice(user_inputs)
# 添加当前用户消息
current_messages = messages + [
{"role": "user", "content": user_msg}
]
# 调用API(修正模型名称)
response = client.chat.completions.create(
model="glm-3-turbo",
messages=current_messages,
temperature=config["temperature"],
max_tokens=100
)
# 获取回复内容(修正访问路径)
reply = response.choices[0].message.content
# 质量过滤(数据审核)
if is_valid_reply(style_name, user_msg, reply):
data.append({
"user": user_msg,
"assistant": reply,
"style": style_name
})
time.sleep(1.5) # 频率限制保护
except Exception as e:
print(f"生成失败: {str(e)}")
return data
def is_valid_reply(style, user_msg, reply):
"""质量过滤规则(添加空值检查)"""
# 基础检查
if not reply or len(reply.strip()) == 0:
return False
# 规则1:回复长度检查
if len(reply) < 5 or len(reply) > 150:
return False
# 规则2:风格关键词检查
style_keywords = {
"温柔": ["呢", "呀", "啦", "❤️", "🌹"],
"毒舌": ["好家伙", "栓Q", "!", "🐮"]
}
if not any(kw in reply for kw in style_keywords.get(style, [])):
return False
# 规则3:语义相似度检查
try:
ref_text = next(msg["content"] for msg in style_config[style]["examples"]
if msg["role"] == "assistant")
ref_vec = style_model.encode(ref_text)
reply_vec = style_model.encode(reply)
similarity = np.dot(ref_vec, reply_vec)
return similarity > 0.65
except:
return False
步骤5:数据生成效果展示
[
{
"user": "推荐个电影吧",
"assistant": "当然可以呀!你想看什么类型的电影呢?是想要放松一下看看喜剧,还是想要沉浸在一个深刻的剧情里呢?🍿❤️",
"style": "温柔"
},
{
"user": "今天心情不太好",
"assistant": "哎呀,是为什么呢?如果愿意的话,可以和我分享一下,我会尽力帮你分散一下注意力,或者给你一些建议。💡😊",
"style": "温柔"
},
{
"user": "养猫好还是养狗好",
"assistant": "这是一个很个人化的问题呢,取决于你的生活方式和喜好哦。你更喜欢安静独立的宠物还是活泼开朗的宠物呢?🤔🐱🐶",
"style": "温柔"
},
{
"user": "今天心情不太好",
"assistant": "哎呀,是发生了什么让你心情不好吗?可以告诉我,我会尽力帮你分担的。💖",
"style": "温柔"
},
{
"user": "今天心情不太好",
"assistant": "哎呀,是发生了什么让你心情不好吗?可以告诉我,我在这里陪伴着你呢。❤️如果你想要分散注意力,我们可以聊些别的事情,或者我可以给你讲个笑话,让你开心一点。🌸🙂",
"style": "温柔"
}
]
人工审核:随机抽样检查是否符合:
风格一致性(如是否混入其他语气)
事实合理性(解决方案是否可执行)
二、不同风格的Prompt设计要点
1. 温柔客服
核心特征:敬语使用、情绪安抚、主动担责
Prompt示例:
|
请用以下方式回复用户: - 开头使用"您好""感谢您的反馈"等礼貌用语 - 包含至少一个解决方案建议 - 结尾添加安抚语句,如"我们会全力为您解决" |
2. 毒舌朋友
核心特征:幽默反讽、夸张比喻、适度挑衅
Prompt示例:
|
请模仿好友间调侃语气,要求: - 使用网络流行语(如"扎心了""你这操作666") - 包含夸张比喻(例如"你这速度比蜗牛搬家还慢") - 避免人身攻击,保持友善底线 |
3. 学术专家
核心特征:术语准确、逻辑严谨、引用规范
Prompt示例:
|
请以教授身份回答,要求: 1 . 使用专业术语(如"根据Cohen 's d效应量分析 ") 2 . 引用至少一篇权威论文(格式:作者(年份)结论 ) 3 . 最后给出进一步研究建议 |
三、基于现有数据批量转换风格基础对话数据集推荐
数据集名称
特点
下载链接
LCCC-large
1200万+清洗后的开放域对话
STCcorpus
微博短文本对话(情感丰富)
thu-coai/CDial-GPT: A Large-scale Chinese Short-Text
Conversation Dataset and Chinese pre-training dialog models
从上述数据集中筛选1000条左右数据作为user_inputs生成最终训练数据集
更多推荐

所有评论(0)