情绪对话模型数据制作

一、大模型生成风格化对话数据制作流程

步骤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生成最终训练数据集

更多推荐