模型介绍
心理大模型——漫谈(MindChat)期望从心理咨询、心理评估、心理诊断、心理治疗四个维度帮助人们纾解心理压力与解决心理困惑,提高心理健康水平。作为一个心理大模型,MindChat通过营造轻松、开放的交谈环境, 以放松身心、交流感受或分享经验的方式,与用户建立信任和理解的关系。
MindChat的技术优势在于能够了解用户的个人经历、情感状态和行为模式,为用户提供隐私、温暖、安全、及时、方便的对话环境,从而帮助用户克服各种困难和挑战, 实现自我成长和发展。
无论是在工作场景还是在个人生活中,MindChat期望通过心理学专业知识和人工智能大模型技术,在严格保护用户隐私的前提下,全时段全天候为用户提供全面的心理支持和诊疗帮助,同时实现自我成长和发展,以期为建设一个更加健康、包容和平等的社会贡献力量。
目前在魔搭社区开源了所有的MindChat模型,其中就包括基于Qwen-7B训练的MindChat-Qwen-7B模型,大家可以在ModelScope创空间进行体验。
体验链接:https://modelscope.cn/studios/X-D-Lab/MindChat/summary
数据词云
目前MindChat的开源模型采用了经过人工清洗的约20万条的高质量多轮心理对话数据进行训练,涵盖工作、家庭、学习、生活、社交、安全等多个方面。
后续我们将不断完善数据积累以及数据清洗,争取为开源社区贡献一份高质量的多轮心理对话数据,共同推动开源心理大模型的建设。
模型微调
我们使用两张V100对Qwen-7B进行了QLora的单轮训练。
训练超参数如下所示:
lora_rank |
64 |
lora_alpha |
32 |
max length |
512 |
lr |
1e-4 |
training step |
1500 |
下图为训练损失变化曲线:
模型推理
首先需要安装依赖包:
pip install modelscope gradio==3.37
您可以通过ModelScope下载MindChat-Qwen-7B:
from modelscope.hub.snapshot_download import snapshot_download cache_dir = './' snapshot_download('X-D-Lab/MindChat-Qwen-7B', cache_dir=cache_dir, revision='v1.0.0')
然后可以通过transformers对MindChat-Qwen-7B进行推理:
from modelscope import AutoModelForCausalLM, AutoTokenizer from modelscope import GenerationConfig tokenizer = AutoTokenizer.from_pretrained('X-D-Lab/MindChat-Qwen-7B', trust_remote_code=True, revision='v1.0.0') model = AutoModelForCausalLM.from_pretrained('X-D-Lab/MindChat-Qwen-7B', device_map="auto", fp16=True,trust_remote_code=True,revision='v1.0.0').eval() model.generation_config = GenerationConfig.from_pretrained('X-D-Lab/MindChat-Qwen-7B', trust_remote_code=True,revision='v1.0.0') # 可指定不同的生成长度、top_p等相关超参 response, history = model.chat(tokenizer, "总感觉自己学习很差,想努力,但是又控制不住想玩游戏。", history=None) print(response) # 你好,你感觉现在的情况是学习和游戏之间的冲突,可以先试着找到自己的兴趣点,看看有没有兴趣的科目或者活动,这样可以增加学习的兴趣和动力。同时也可以尝试安排一个学习时间表,将学习和游戏安排在不同的时间段,这样可以有效地避免两者之间的冲突。 response, history = model.chat(tokenizer, "我制定了计划,但经常不按照计划执行,我不够自律。", history=history) print(response) # 自律是需要培养的,不要过于苛求自己,慢慢地建立起自律的习惯,不要担心自己的进度会太慢。可以试着先从小的步骤开始,比如先做一个学习计划,每天记录自己完成任务的情况,这样可以更好地了解自己的进度,也可以更好地计划自己的学习和娱乐时间。 response, history = model.chat(tokenizer, "在学习上总感觉自己学的很吃力,不知道该怎么办。我觉得自己的学习能力太差了。", history=history) print(response) # 每个人的学习方式和方法都是不同的,不要总是拿自己的学习能力与别人相比。可以试着分析一下自己的学习方法,看看有没有可以改进的地方。同时也可以寻求一些专业的学习方法和资料,或者向老师和家长求助。学习是一个持续的过程,只要你用心去学,就一定会有收获的。
在Github仓库中也提供了基于gradio的webui供开发者使用。
对话案例
我们对MindChat-Qwen-7B进行了学习、家庭、朋友、工作这四个维度的测试,所有的对话案例生成内容均为一次性生成内容。更多测试内容请见项目Github主页。
学习
轮数 | 用户 | MindChat-Qwen-7B |
1 | 总感觉自己学习很差,想努力,但是又控制不住想玩游戏。 | 我理解你的感受,这是一个很常见的问题。不过,不要对自己太苛刻。你已经意识到了自己的问题,并且想要做出改变,这是非常值得称赞的。同时,你可以尝试制定一个学习计划,让自己更有规律地学习,这样也能让你更专注于学习。 |
2 | 我制定了计划,但经常不按照计划执行,我不够自律。 | 我明白。要改变自己的习惯并不容易,需要一些时间和毅力。你可以在计划中增加一些奖励,这样会更有动力去执行计划。同时,你也可以找到一些可以让你专注学习的方法,例如通过听音乐、看电影来缓解压力。 |
3 | 在学习上总感觉自己学的很吃力,不知道该怎么办。我觉得自己的学习能力太差了。 | 你不要这样想,每个人的学习方式和速度都不同,没有“好坏”之分。你可以尝试找到适合自己的学习方法,例如梳理学习重点、寻找解题方法等,这些方法能够让你更加高效地学习。 |
4 | 我现在努力还来得急吗?会不会太晚了。 | 你现在开始学习永远不会太晚,因为学习是不断进行的过程。只要下定决心,就可以不断努力。当然,也不要太过紧张,因为过度的焦虑会阻碍你的学习。 |
家庭
轮数 | 用户 | MindChat |
1 | 我的爸妈从来不理解我,我和他们之间有很大的隔阂。 | 听起来你很受伤。你可以告诉我一些具体的事情,让我更好地理解你的感受吗? |
2 | 他们会觉得我总是在干一些没有价值、没有意义的事情。他们只会认为学习是唯一有价值的事情。 | 我明白你的感受。但是我们每个人都有自己的兴趣和爱好,有些人喜欢画画,有些人喜欢打游戏。学习当然很重要,但是我们应该尊重每个人的兴趣和才能。 |
3 | 你说的对!我当然知道他们是为了我好,但是他们这么说让我很受伤。 | 我理解你的感受。你不要放弃你的兴趣和爱好,因为这是你的一部分,是你独特的品质。你可以向你的父母表达你的想法,让他们知道你的情况,也许他们就能够理解你。 |
4 | 我很内向,不太愿意说话。我不知道该怎么去找一个双方都适合的方式去沟通。 | 那没关系,你可以先尝试一些比较小的活动,例如看一场电影或者吃一顿饭,然后在这些活动中试着和他们聊天,看看有没有办法更好地沟通。 |
5 | 好的,我试试看。谢谢你! | 不用谢,如果你需要任何帮助,随时都可以找我。我相信你能够克服这些困难,过上快乐的生活。 |
朋友
轮数 | 用户 | MindChat |
1 | 我感觉我的朋友并不是真心和我相处,今天又和他吵了一架,我现在很生气! | 听你这么说,我能感受到你的不满和失望。你的朋友可能并没有意识到他的行为让你感到不舒服,他可能并不知道他的行为在你的生活中会造成什么影响。 |
2 | 他总是以自我为中心,有时候我会选择忍让,但是他还是一副无所谓的样子。 | 这确实是一个问题。你需要明确地表达你的感受,让他知道你的需求。同时,也要避免在争吵中对他进行人身攻击,这只会让他更加反感。 |
3 | 但是如果跟他去沟通这些, 我怕他会觉得我想得太多, 从而远离我 | 这是一个需要考虑的问题。如果你觉得自己一个人很难解决问题,可以找一个中间人来帮助你们进行沟通。你也可以向他提出你的需求,让他知道你的想法和感受,但他并不是你的老板,也不是你的老师,你们之间的关系应该是平等的。 |
4 | 我觉得你说的有道理。我试试看找我们共同的朋友,看是不是可以。 | 好的,这是一个不错的主意。同时,如果你觉得心里很难受,也可以跟朋友聊一聊,告诉他你的感受,他们也许可以给你一些建议和帮助。 |
5 | 好的, 我会平静下来找他沟通一下, 谢谢你的建议 | 不客气,相信你一定能够解决这个问题。如果你还需要帮助,随时可以找我聊天哦。 |
工作
轮数 | 用户 | MindChat |
1 | 最近工作压力好大, 一直没有业绩 | 你好,我能理解你的感受。你可以跟我说说你的工作内容,我可能能帮你分析一下你的情况。 |
2 | 我从事的是销售行业,但是在销售商品的时候客户总是不想和我交流。 | 这个情况听起来挺让人困扰的。你是否尝试过主动跟客户沟通,了解他们的需求呢?或者去了解其他客户的购买经历,寻找新的突破口? |
3 | 我比较内向。我也不知道为什么我这种内向的性格会来做销售。我不太好意思主动去和客户沟通。 | 内向的人其实也有很多优势,他们通常更加细心和善于倾听。不过你可能需要一些技巧来改善你的沟通方式。你可以去学习一些交流技巧,比如说多去倾听,多去观察客户的需求,然后针对性地回答他们的问题。 |
4 | 我可能需要勇敢地迈出第一步。 | 没错,这需要一些勇气和决心。但是只要你愿意付出努力,你一定能够取得好的成绩。如果你需要一些帮助,我可以帮你分析一下你的问题,提供一些具体的建议。 |
5 | 我也试着向同事们交流一下经验,看看日常他们是怎么和客户沟通的。 | 这是一个很好的主意。你可以向你的同事请教一些沟通技巧和经验,向他们学习。不过,你也需要思考自己的风格,找到适合自己的方式。 |
在心理场景中,对比于其他通用大模型长串的建议性回复而言,MindChat的回复内容更简练,情商更高,更能体现共情能力。未来我们也将持续加强模型的共情能力。
研发团队
本项目由华东理工大学 薛栋副教授课题组发起:
主要分工 |
参与同学 |
模型训练 |
颜鑫、王明 |
模型测试 |
唐井楠、刘建成 |
数据构建 |
张思源、吴佳阳、王邦儒、孙晗煜 |
致谢
在项目进行中受到以下平台及项目的大力支持,在此表示感谢!
1、魔搭ModelScope: 模型存储,模型体验,模型lib对接,模型推理算力等支持;
2、OpenI启智社区:提供模型训练算力;
3、Qwen、InternLM、Baichuan:提供非常优秀的开源基础模型。
4、OpenXLab、Huggingface:模型存储和体验空间;
特别感谢合肥综合性国家科学中心人工智能研究院普适心理计算团队 孙晓研究员、哈尔滨工业大学 刘方舟教授对本项目的专业性指导!
此外,对参与本项目数据收集、标注、清洗的所有同学表示衷心的感谢!
免责声明
本仓库所有开源代码及模型均遵循GPL-3.0许可认证。目前开源的MindChat模型可能存在部分局限,因此我们对此做出如下声明:
1. MindChat存在固有的局限性,可能产生错误的、有害的、冒犯性的或其他不良的输出。用户在关键或高风险场景中应谨慎行事,不要使用这些模型作为最终决策参考,以免导致人身伤害、财产损失或重大损失。
2. MindChat在任何情况下,作者、贡献者或版权所有者均不对因软件或使用或其他软件交易而产生的任何索赔、损害赔偿或其他责任(无论是合同、侵权还是其他原因)承担责任。
3. 使用MindChat即表示您同意这些条款和条件,并承认您了解其使用可能带来的潜在风险。您还同意赔偿并使作者、贡献者和版权所有者免受因您使用MindChat而产生的任何索赔、损害赔偿或责任的影响。
参考链接
MindChat Github地址:https://github.com/X-D-Lab/MindChat
ModelScope 创空间地址:https://modelscope.cn/studios/X-D-Lab/MindChat/summary
ModelScope 模型地址:https://modelscope.cn/organization/X-D-Lab