模型简介
模型特点
模型能力
使用案例
🚀 灵心健康大模型SoulChat
灵心健康大模型SoulChat通过长文本咨询指令与多轮共情对话数据集的混合微调,提升了大模型的“共情”能力,可助力学术界加速大模型在心理咨询等主动健康领域的研究与应用。
基于主动健康的主动性、预防性、精确性、个性化、共建共享、自律性六大特征,华工未来技术学院 - 广东省数字孪生人重点实验室开源了中文领域生活空间主动健康大模型基座ProactiveHealthGPT,包含:
- 经过千万规模中文健康对话数据指令微调的生活空间健康大模型扁鹊(BianQue)
- 经过百万规模心理咨询领域中文长文本指令与多轮共情对话数据联合指令微调的心理健康大模型灵心(SoulChat)
我们期望,生活空间主动健康大模型基座ProactiveHealthGPT 能帮助学术界加速大模型在慢性病、心理咨询等主动健康领域的研究与应用。本项目聚焦于 心理健康大模型灵心(SoulChat) 。
🚀 快速开始
克隆本项目
cd ~
git clone https://github.com/scutcyr/SoulChat.git
安装依赖
需要注意的是torch的版本需要根据你的服务器实际的cuda版本选择,详情参考pytorch安装指南
cd SoulChat
conda env create -n proactivehealthgpt_py38 --file proactivehealthgpt_py38.yml
conda activate proactivehealthgpt_py38
pip install cpm_kernels
pip install torch==1.13.1+cu116 torchvision==0.14.1+cu116 torchaudio==0.13.1 --extra-index-url https://download.pytorch.org/whl/cu116
在Python当中调用SoulChat模型
import torch
from transformers import AutoModel, AutoTokenizer
# GPU设置
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
# 加载模型与tokenizer
model_name_or_path = 'scutcyr/SoulChat'
model = AutoModel.from_pretrained(model_name_or_path, trust_remote_code=True).half()
model.to(device)
tokenizer = AutoTokenizer.from_pretrained(model_name_or_path, trust_remote_code=True)
# 单轮对话调用模型的chat函数
user_input = "我失恋了,好难受!"
input_text = "用户:" + user_input + "\n心理咨询师:"
response, history = model.chat(tokenizer, query=input_text, history=None, max_length=2048, num_beams=1, do_sample=True, top_p=0.75, temperature=0.95, logits_processor=None)
# 多轮对话调用模型的chat函数
# 注意:本项目使用"\n用户:"和"\n心理咨询师:"划分不同轮次的对话历史
# 注意:user_history比bot_history的长度多1
user_history = ['你好,老师', '我女朋友跟我分手了,感觉好难受']
bot_history = ['你好!我是你的个人专属数字辅导员甜心老师,欢迎找我倾诉、谈心,期待帮助到你!']
# 拼接对话历史
context = "\n".join([f"用户:{user_history[i]}\n心理咨询师:{bot_history[i]}" for i in range(len(bot_history))])
input_text = context + "\n用户:" + user_history[-1] + "\n心理咨询师:"
response, history = model.chat(tokenizer, query=input_text, history=None, max_length=2048, num_beams=1, do_sample=True, top_p=0.75, temperature=0.95, logits_processor=None)
启动服务
本项目提供了soulchat_app.py作为SoulChat模型的使用示例,通过以下命令即可开启服务,然后,通过http://<your_ip>:9026访问。
streamlit run soulchat_app.py --server.port 9026
特别地,在soulchat_app.py当中: 可以修改以下代码更换指定的显卡:
os.environ['CUDA_VISIBLE_DEVICES'] = '2'
可以通过更改以下代码指定模型路径为本地路径:
model_name_or_path = 'scutcyr/SoulChat'
✨ 主要特性
- 数据构建独特:构建了超过15万规模的单轮长文本心理咨询指令与答案(SoulChatCorpus - single_turn),回答数量超50万;利用ChatGPT与GPT4生成约100万轮次的多轮回答数据(SoulChatCorpus - multi_turn);混合二者构造成超120万个样本的单轮与多轮混合的共情对话数据集SoulChatCorpus。
- 微调方式有效:选择[ChatGLM - 6B](https://huggingface.co/THUDM/chatglm - 6b)作为初始化模型,进行全量参数的指令微调,提升了模型的共情能力、引导用户倾诉能力以及提供合理建议的能力。
📚 详细文档
背景与动机
我们调研常见心理咨询平台发现,在线心理帮助多为长篇幅的单轮交流,缺失渐进式倾诉过程。而实际心理咨询中,存在多轮沟通,咨询师会引导倾诉并提供共情。当前多轮共情对话数据集十分欠缺。
数据处理
一方面构建单轮长文本心理咨询指令与答案,另一方面生成多轮回答数据。因纯单轮长文本驱动的模型会产生厌烦文本长度且缺乏引导能力,纯多轮数据驱动的模型会弱化建议能力,所以混合二者形成统一指令格式的数据集。
模型选择与微调
选择[ChatGLM - 6B](https://huggingface.co/THUDM/chatglm - 6b)进行全量参数的指令微调,更多训练细节留意后续论文。
📄 许可证
本项目使用了ChatGLM - 6B模型的权重,需遵循其[MODEL_LICENSE](https://github.com/THUDM/ChatGLM - 6B/blob/main/MODEL_LICENSE),因此,本项目仅可用于您的非商业研究目的。
🔧 技术细节
- 数据集构建:
- 单轮长文本数据:构建超过15万规模的单轮长文本心理咨询指令与答案(SoulChatCorpus - single_turn),回答数量超过50万,指令数是常见心理咨询数据集 [PsyQA](https://github.com/thu - coai/PsyQA) 的6.7倍。
- 多轮回答数据:利用ChatGPT与GPT4生成总共约100万轮次的多轮回答数据(SoulChatCorpus - multi_turn)。
- 混合数据集:混合SoulChatCorpus - single_turn和SoulChatCorpus - multi_turn构造成超过120万个样本的单轮与多轮混合的共情对话数据集SoulChatCorpus,统一为“用户:xxx\n心理咨询师:xxx\n用户:xxx\n心理咨询师:”的指令格式。
- 模型微调:选择 [ChatGLM - 6B](https://huggingface.co/THUDM/chatglm - 6b) 作为初始化模型,进行全量参数的指令微调,以提升模型的共情能力、引导用户倾诉能力以及提供合理建议的能力。
⚠️ 重要声明
- 本项目仅可用于非商业研究目的。
- 模型输出文本有随机性,不建议替代心理医生等的诊断、建议,用户需承担使用风险。
- 不得出于商业、军事或非法目的使用、复制、修改、合并、发布、分发、复制或创建衍生作品。
- 不得利用模型从事危害国家安全、社会公共利益、侵犯人身权益的行为。
- 使用时应知悉不能替代专业人士,不应过度依赖、服从、相信模型输出,不能长期沉迷聊天。
🙏 致谢
本项目由华南理工大学未来技术学院 广东省数字孪生人重点实验室发起,得到了华南理工大学信息网络工程研究中心支撑,同时感谢合作单位广东省妇幼保健院、广州市妇女儿童医疗中心、中山大学附属第三医院等。
📑 引用
@misc{chen2023soulchat,
title={灵心健康大模型SoulChat:通过长文本咨询指令与多轮共情对话数据集的混合微调,提升大模型的“共情”能力},
author={Yirong Chen, Xiaofen Xing, Zhenyu Wang, Xiangmin Xu},
year={2023},
month = {6},
version = {1.0},
url = {https://github.com/scutcyr/SoulChat}
}
🔍 最近更新
- 👏🏻 2023.06.06: 扁鹊 - 2.0模型开源,详情见[BianQue - 2.0](https://huggingface.co/scutcyr/BianQue - 2)。
- 👏🏻 2023.06.06: 具备共情与倾听能力的灵心健康大模型SoulChat发布,详情见:灵心健康大模型SoulChat:通过长文本咨询指令与多轮共情对话数据集的混合微调,提升大模型的“共情”能力 。
- 👏🏻 2023.04.22: 基于扁鹊 - 1.0模型的医疗问答系统Demo,详情访问:https://huggingface.co/spaces/scutcyr/BianQue
- 👏🏻 2023.04.22: 扁鹊 - 1.0版本模型发布,详情见:[扁鹊 - 1.0:通过混合指令和多轮医生问询数据集的微调,提高医疗聊天模型的“问”能力(BianQue - 1.0: Improving the "Question" Ability of Medical Chat Model through finetuning with Hybrid Instructions and Multi - turn Doctor QA Datasets)](https://huggingface.co/scutcyr/BianQue - 1.0)



