基於主動健康的主動性、預防性、精確性、個人化、共建共享、自律性六大特徵,華南理工大學未來技術學院-廣東省數位孿生人重點實驗室開源了中文領域生活空間主動健康大模型基座ProactiveHealthGPT,包括:
經過千萬規模中文健康對話資料指令微調的生活空間健康大模型扁鵲(BianQue)
經過百萬規模心理諮商領域中文長文本指令與多輪共感對話資料聯合指令微調的心理健康大模型靈修(SoulChat)
我們期望,生活空間主動健康大模型基座ProactiveHealthGPT可以幫助學術界加速大模型在慢性病、心理諮商等主動健康領域的研究與應用。本計畫為心理健康大模型靈心(SoulChat) 。
2024.06.06:SoulChatCorpus資料集的開源版本發布,詳情請見https://www.modelscope.cn/datasets/YIRONGCHEN/SoulChatCorpus,特別地,我們過濾掉了約9萬個對話樣本(由於隱私風險、安全問題、政治風險、低品質樣本等,該部分樣本尚在人工優化階段,人工審核完畢後,會更新到開源版本資料集當中) ,最終保留258354個多輪對話,總共1517344輪。新版本模型將會在近期發布,預計將適配多個開源模型,以及多個參數量級,以便用戶使用或進行比較實驗研究等。
2023.12.07:我們的論文,收錄在Findings of EMNLP 2023,詳見SoulChat: Improving LLMs' Empathy, Listening, and Comfort Abilities through Fine-tuning with Multi-turn Empathy Conversations
2023.07.07: 心理健康大模型靈心(SoulChat)線上內測版本啟用,歡迎點擊連結使用:靈心內測版。
2023.06.24: 本項目被收錄到中國大模型列表,為國內首個開源的具備共情與傾聽能力的心理領域大模型。
2023.06.06: 扁鵲-2.0模型開源,詳情請見BianQue-2.0。
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)
我們研究了目前常見的心理諮商平台,發現,當使用者尋求線上心理協助時,通常需要進行較長篇幅地進行自我描述,然後提供協助的心理諮商師同樣地提供長篇幅的回覆(見figure/single_turn. png),缺失了一個漸進式的傾訴過程。但是,在實際的心理諮商過程中,使用者和心理諮商師之間會存在多輪次的溝通過程,在這個過程當中,心理諮商師會引導使用者進行傾訴,並且提供共情,例如:「非常棒」、「我理解你的感受」、「當然可以」等等(見下圖)。
考慮到目前十分欠缺多輪共感對話資料集,我們一方面,建構了超過15萬規模的單輪長文本心理諮商指令與答案(SoulChatCorpus-single_turn) ,回答數量超過50萬(指令數是當前的常見的心理諮商資料集PsyQA 的6.7倍),並利用ChatGPT與GPT4,產生總共約100萬輪次的多輪回答資料(SoulChatCorpus-multi_turn) 。特別地,我們在預實驗中發現,純單輪長本文驅動的心理諮商模式會產生讓使用者感到厭煩的文字長度,而且不具備引導使用者傾訴的能力,純多輪心理諮商對話資料驅動的心理諮商模型則弱化了模型的建議能力,因此,我們混合SoulChatCorpus-single_turn和SoulChatCorpus-multi_turn構造成超過120萬個樣本的單輪與多輪混合的共情對話資料集SoulChatCorpus 。所有數據採用「使用者:xxxn心理諮商師:xxxn使用者:xxxn心理諮商師:」的形式統一為一種指示格式。
我們選擇了ChatGLM-6B 作為初始化模型,進行了全量參數的指令微調,旨在提升模型的同理能力、引導使用者傾訴能力以及提供合理建議的能力。更多訓練細節請留意我們後續發布的論文。
克隆本項目
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
【補充】Windows下的使用者建議參考以下流程配置環境
cd BianQue conda create -n proactivehealthgpt_py38 python=3.8 conda activate proactivehealthgpt_py38 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 pip install -r requirements.txt pip install rouge_chinese nltk jieba datasets# 以下安裝為了運行demopip install streamlit pip install streamlit_chat
【補充】Windows下配置CUDA-11.6:下載並且安裝CUDA-11.6、下載cudnn-8.4.0,解壓縮並且複製其中的檔案到CUDA-11.6對應的路徑,參考:win11下利用conda進行pytorch安裝-cuda11. 6-泛用安裝思路
在Python當中呼叫SoulChat模型
import torchfrom transformers import AutoModel, AutoTokenizer# GPU設定device = torch.device("cuda" if torch.cuda.is_available() else "cpu")# 載入模型與tokenizermodel_name_or_pathl = 'scutcyr/Soul't. , trust_remote_code=True).half()model.to(device)tokenizer = AutoTokenizer.from_pretrained(model_name_or_path, trust_remote_code=True)# 單輪對話呼叫模型的chat函數用戶_input = "我失戀了,好難受!」 :" + 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.95ces=procesn, temperature=proces)多輪對話調用模型的chat函數#注意:本項目使用"n使用者:"和"n心理諮商師:"劃分不同輪次的對話歷史# 注意:user_history比bot_history的長度多1user_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'
對於Windows單一顯示卡用戶,需要修改為: os.environ['CUDA_VISIBLE_DEVICES'] = '0'
,否則會報錯!
可以透過變更以下程式碼指定模型路徑為本機路徑:
model_name_or_path = 'scutcyr/SoulChat'
範例1:失戀
範例2:宿舍關係
範例3:期末考
範例4:科學研究壓力
本專案使用了ChatGLM-6B 模型的權重,需要遵循其MODEL_LICENSE,因此,本專案僅可用於您的非商業研究目的。
本專案提供的SoulChat模型致力於提升大模型的共感對話與傾聽能力,然而,模型的輸出文字具有一定的隨機性,當其作為一個傾聽者的時候,是合適的,但是不建議將SoulChat模型的輸出文字取代心理醫生等的診斷、建議。本專案不保證模型輸出的文字完全適合用戶,使用者在使用本模型時需要承擔其帶來的所有風險!
您不得出於任何商業、軍事或非法目的使用、複製、修改、合併、發布、散佈、複製或創建SoulChat模型的全部或部分衍生作品。
您不得利用SoulChat模型從事任何危害國家安全和國家統一、危害社會公共利益、侵犯人身權益的行為。
您在使用SoulChat模型時應知悉,其不能取代醫生、心理醫生等專業人士,不應過度依賴、服從、相信模型的輸出,不能長期沉迷於與SoulChat模型聊天。
本計畫由華南理工大學未來技術學院廣東省數位孿生人重點實驗室發起,得到了華南理工大學資訊網路工程研究中心、電子與資訊學院等學院部門的支撐,同時致謝廣東省婦幼保健院、廣州市婦女兒童醫療中心、中山大學附設第三醫院、合肥綜合國家科學中心人工智慧研究院等合作單位。
同時,我們感謝以下媒體或公眾號對本項目的報導(排名不分先後):
媒體通報人民日報、中國網、光明網、TOM科技、未來網、大眾網、中國發展報道網、中國日報網、新華資訊網、中華網、今日頭條、搜狐、騰訊新聞、網易新聞、中國資訊網、中國傳播網、中國都市報道網、中華城市網
公眾號廣東實驗室建置、智慧語音新青年、深度學習與NLP、AINLP
@inproceedings{chen-etal-2023-soulchat,title = "{S}oul{C}hat: Improving {LLM}s{'} Empathy, Listening, and Comfort Abilities through Fine-tuning with Multi-turn Empathy Conversations", author = "Chen, Yirong and Xing, Xiaofen and Lin, Jingkai and Zheng, Huimin and Wang, Zhenyu and Liu, Qi and Xu, Xiangmin",editor = "Bouamor, Houda and Pino, Juan and Bali, Kalika",booktitle = "Findings of the Association for Computational Linguistics: EMNLP 2023",month = dec,year = "2023 ",address = "Singapore",publisher = "Association for Computational Linguistics",url = "https://aclanthology.org/2023.findings-emnlp.83",pages = "1170--1183",abstract = "Large language models (LLMs) have been widely applied in various fields due to their excellent capability for memorizing knowledge and chain of thought (CoT). When these language models are applied in the field of psychological counseling, they often rush to provide universal advice. However, when users seek psychological support, they need to so emronn, sidableson and slyunri need for hily 嘴唇. To this end, we constructed a multi-turn empathetic conversation dataset of more than 2 million samples, in which the input is the multi-turn conversation context, and the target is empathetic responses that cover expressions sgning exexions, fort express, express, express, express, exic trust, emotional support, etc. Experiments have shown that the empathy ability of LLMs can be significantly enhanced when finetuning by using multi-turn dialogue history and responses that are closer to the expression of a psychological consult. }}