Repository: 2020MEAI/TCMLLM Branch: main Commit: 11e105653a0b Files: 3 Total size: 29.0 KB Directory structure: gitextract_opb6grcn/ ├── README.md ├── data/ │ └── ISGP_test.json └── ptuning/ └── TCMLLM_output_demo.py ================================================ FILE CONTENTS ================================================ ================================================ FILE: README.md ================================================ # TCMLLM: 中医药大模型 中医药大语言模型项目(TCMLLM)拟通过大模型方式实现中医临床辅助诊疗(病证诊断、处方推荐等)中医药知识问答等任务,推动中医知识问答、临床辅助诊疗等领域的快速发展。 目前针对中医临床智能诊疗问题中的处方推荐任务,发布了中医处方推荐指令微调大模型TCMLLM-PR。 ## TCMLLM-PR 面向中医处方推荐的大模型 本项目针对中医临床智能诊疗问题中的处方推荐任务,通过整合真实世界临床病历、医学典籍与中医教科书等数据,构建了包含68k数据条目(共10M token)的处方推荐指令微调数据集,并使用此数据集,在ChatGLM大模型上进行大规模指令微调,最终得到了中医处方推荐大模型TCMLLM-PR。 ### 更新日志 **[2025/05/26] 更新TCMLLM 输出文件以及数据示例** [2023/08/01] 面向处方推荐的大模型TCMLLM-PR [2023/06] 项目启动 ### A Quick Start 1. 首先需要下载[ChatGLM-6B](https://github.com/THUDM/ChatGLM-6B)原始模型代码和参数,并配置依赖环境 2. 下载 TCMLLM 模型参数,将checkpoint压缩文件解压到 ChatGLM-6B/ptuning/ 路径下 + 百度网盘链接: https://pan.baidu.com/s/1QFx-206Ww9Xt-7_Z0RF85g 提取码: iwg3 3. 下载本项目中的 data/ 下的数据示例文件到 ptuning/ 目录下 4. 下载本项目中的 TCMLLM_output_demo.py到 ptuning/ 目录下,并配置好文件内的各文件路径以及数据路径,即可批量测试输出。 ### 指令微调数据集 #### 数据集介绍    本项目构建的指令微调数据集包含8个数据来源,涵盖4本中医经典教科书《中医内科学》、《中医外科学》、《中医妇科学》和《中医儿科学》(即“内外妇儿”,**I**nternal medicine,**S**urgery, **G**ynecology,**P**ediatrics,简称ISGP)、2020版中国药典(**Ch**inese **p**harmacopeia,简称CHP)、中医临床经典医案数据(**C**hinese **M**edicine **C**linical **C**ases,简称CMCC)、以及多个三甲医院的涵盖肺病(简称Lung)、中风病(简称Stroke)、糖尿病(简称Diabetes)、肝病(简称Liver)、脾胃病(Splenic and stomach diseases,简称SSD)等多病种的临床病历数据。8个数据集共68k条,token总数约为10M(输入token总数为5M、输出token总数为4M),统计信息如下表。
类型 名称 简称 数量 来源 输入token总数 输出token总数 token总数
知识 内外妇儿ISGP2k中医4本教材218k75k294k
药典CHP1k中国药典2020版85k50k136k
医案CMCC15k临床经典医案163k613k225k
临床
肺病Lung15k中医医院1755k849k160k
中风病Stroke5k中医医院2298k294k593k
糖尿病Diabetes8k中医医院3494k262k756k
肝病Liver2k中医医院486k116k202k
脾胃病SSD17k中医医院52M2M4M
总计Mixed68K5M4M10M
#### 数据集示例 1. 中风病数据集示例 ``` {"Content":"请根据中风病患者的症状信息进行中医处方推荐。肢体活动不利,言语不利,肢体麻木,烦躁,口苦,口干,便秘","Summary":"白僵蚕,炒白术,炒枳壳,刺蒺藜,大黄,当归,葛根,钩藤,厚朴,黄芪,菊花,牡蛎,片姜黄,全蝎,石决明,石菖蒲,首乌藤,酸枣仁,天麻,盐杜仲,郁金,远志,茯神,槲寄生"} ``` 2. 经典教材(内外妇儿)数据集示例 ``` {"Content":"请根据患者的症状信息进行中医处方推荐。恶寒,发热,无汗,头痛,肢体酸楚,鼻塞,声重,打喷嚏,鼻流清涕,咽痒,咳嗽,痰色白,痰稀薄,舌苔白,舌苔薄,脉浮,脉紧,恶寒甚", "Summary":"荆芥,防风,茯苓,独活,柴胡,前胡,川芎,枳壳,羌活,桔梗,薄荷,甘草"} ``` 3. 药典数据集示例 ``` {"Content":"请根据患者的症状信息进行中医处方推荐。燥热蕴肺所致的咳嗽、痰黄而黏不易咳出、胸闷气促、久咳不止、声哑喉痛","Summary":"川贝母,知母,石膏,炒栀子,黄芩,蜜桑白皮,茯苓,炒瓜蒌子,陈皮,麸炒枳实,炙甘草,五味子"} ``` ### 训练细节 #### 计算资源需求 + 训练阶段:TCMLLM-PR在两张3090显卡(24G显存*2)上完成训练。batch_size=16情况下单卡显存占用约23G,建议根据显存大小来调整batch_size。 + 推理阶段:显存占用约为14G。 ### 模型效果对比
Question ChatGPT输出 通义千问输出 TCMLLM-PR输出 Human
请根据中风病患者的症状信息进行中医处方推荐。口角歪斜,吞咽呛咳,肢体活动不利,不能持物,不能行走,头晕,胸闷,干咳,日常生活能力重度下降 白芍,甘草,生姜,大枣,桂枝,生薏苡仁,蜂蜜,人参,黄精,党参,白术,茯苓,熟地,山药,枸杞子,巴戟天,麦冬,陈皮,黄芩,连翘,金银花,银杏叶,红参,黄连等 黄芪,当归,白术,地龙,全蝎,蜈蚣,桃仁,红花,赤芍,姜黄 白僵蚕,炒白术,穿山甲,胆南星,党参,独活,防风,甘草,瓜蒌,红曲,化橘红,姜半夏,全蝎,石菖蒲,天麻,郁金,竹茹,茯苓 白僵蚕,炒白术,穿山甲,胆南星,党参,独活,防风,甘草,瓜蒌,红曲,化橘红,姜半夏,全蝎,石菖蒲,天麻,郁金,竹茹,茯苓
请根据中风病患者的症状信息进行中医处方推荐。肢体活动不利,肢体麻木,头晕,心慌,视物不清,痰少,痰白,眠差 桂枝,芍药,甘草,生姜,大枣,半夏,人参,黄芩,当归,麦冬,陈皮,白术,木通,茯苓,枳实,川芎,越婢 川芎,当归,白芍,细辛,黄芪,党参,灸甘草,地龙,全蝎,红花,桃仁,红参,茯苓,桂枝,白术,泽泻 川贝母,胆南星,甘草,红花,红曲,化橘红,鸡血藤,姜半夏,全蝎,桑枝,石菖蒲,桃仁,郁金,远志,竹茹,茯苓 川贝母,胆南星,甘草,红花,红曲,化橘红,鸡血藤,姜半夏,全蝎,桑枝,石菖蒲,酸枣仁,桃仁,郁金,远志,竹茹,茯苓
请根据患者的症状信息进行中医处方推荐。心悸,气短,头晕,目眩,失眠,健忘,面色无华,倦怠,乏力,纳呆,食少,舌淡,舌红,脉细,脉弱,阳虚而汗出肢冷 人参,黄芪,麦冬,枸杞子,熟地黄,当归,白术,茯苓,陈皮,天麻,龙骨,牡蛎,酸枣仁,远志,丹参,川芎,生姜,大枣 黄芪,桂枝,白芍,生姜,大枣 黄芪,白术,当归,茯神,酸枣仁,远志,龙眼肉,炙甘草,木香,大枣 白术,当归,茯神,炙黄芪,龙眼肉,远志,酸枣仁,木香,炙甘草,人参,生姜,大枣
请根据患者的症状信息进行中医处方推荐。小便黄赤,小便灼热,尿血,心烦,口渴,面赤,口疮,夜寐不安,舌质红,脉数,尿血较甚 黄柏,泽泻,车前草,丹参,金银花,生地黄,丝瓜络,玄参,天花粉,茯苓,甘草 黄连,黄芩,黄柏,萆薢,萹蓄,瞿麦,滑石,甘草 小蓟,地黄,滑石,木通,蒲黄,藕节,淡竹叶,黄芩,甘草 小蓟,地黄,滑石,木通,蒲黄,藕节,淡竹叶,当归,栀子,甘草
请根据肺病患者的症状信息进行中医处方推荐。大便困难,水肿,有喘息中,痛苦面容,气短,双侧鼻腔通畅,鼻翼煽动,皮肤未见出血点及蜘蛛痣,胸闷,双输尿管压痛点无明显压痛,肺部叩诊清音,咳嗽,头颅无压痛,腰酸,可闻及干湿性啰音,心脏震颤,纳差,咳痰,气喘,易感冒,下肢酸胀,头晕,尿频,精神不振,双肺呼吸音粗 杏仁,瓜蒌,桔梗,苏叶,葶苈子,半夏,黄芩,生甘草,川贝母,白芍,制附子 葶苈子,大枣,桑白皮,杏仁,黄芩,党参,甘草,猪苓,茯苓,泽泻,黄芪,桂枝,白芍,生姜,白术,炙甘草,当归,升麻,柴胡 桑白皮,茯苓,陈皮,山药,半夏,紫菀,苦杏仁,地龙,白前,白果仁,瓦楞子,桔梗,款冬花,贝母,前胡,麻黄,射干,甘草,罂粟壳,黄芪,百部 桑白皮,山药,陈皮,半夏,黄芩,紫菀,苦杏仁,地龙,白前,白果仁,桔梗,款冬花,贝母,前胡,麻黄,射干,甘草,百部
请根据肺病患者的症状信息进行中医处方推荐。双肺呼吸音粗,气喘,眠差,严重影响休息及日常活动,呼吸困难,咳嗽,胸闷,咳痰 桔梗,杏仁,炙甘草,生姜片,麻杏,石膏,黄连,黄芩,陈皮,干姜 黄芪,党参,白术,茯苓,甘草,当归,陈皮,半夏,枳壳,杏仁,黄芩,黄连,石膏,知母,杏仁,桑白皮,葶苈子,地骨皮,芦根,百部,款冬花,地骨皮,五味子,川贝母 桑白皮,陈皮,半夏,黄芩,紫菀,苦杏仁,瓜蒌,白前,桔梗,款冬花,贝母,前胡,麻黄,射干,金荞麦,甘草,罂粟壳,百部 桑白皮,陈皮,半夏,黄芩,紫菀,苦杏仁,瓜蒌,地龙,白前,白果仁,桔梗,款冬花,贝母,前胡,麻黄,射干,金荞麦,甘草,百部
请根据肝病患者的症状信息进行中医处方推荐。乏力,腹胀,肝区不适,倦怠,纳差,身目尿黄,小便深黄 柴胡,白芍,泽泻,枳实,甘草 黄连,黄芩,白术,茵陈,板蓝根,猪苓,泽泻,枸杞子,女贞子,菊花,生地黄 牡蛎,莪术,薏苡仁,郁金,连翘,瓦楞子,鸡内金,丹参,半枝莲,白花蛇舌草,鳖甲 郁金,瓦楞子,地丁,槟榔,车前子,薏苡仁,莪术,丹参,连翘,茵陈,鳖甲,牡蛎,赤芍
请根据脾胃病患者的症状信息进行中医处方推荐。反酸,嗳气,烧心,胃痛,时胃胀,胃寒,大便调,午后易饥饿,入睡困难,做梦,乏力,情绪急躁,易上火,易感冒,畏风,畏寒,舌胖,质淡暗,苔薄白腻,脉沉细 人参,白术,茯苓,砂仁,甘草,大枣,陈皮,枳壳,泽泻,莱菔子,丹皮,苍术,草果,山楂,木香,香附,附子(煅),干姜,大茴 苍术,厚朴,陈皮,半夏,黄连,黄芩,生姜,大枣,附子,肉桂 柴胡,白芍,陈皮,法半夏,浙贝母,海螵蛸,枳壳,党参,生白术,当归,甘草,生龙骨,生牡蛎,珍珠母,白花蛇舌草,醋三棱,醋莪术,半枝莲,三七,旋覆花,煅赭石 醋三棱,醋莪术,半枝莲,半边莲,藤梨根,旋覆花,煅赭石,甘草,柴胡,白芍,赤芍,陈皮,法半夏,浙贝母,煅瓦楞子,海螵蛸,枳壳,党参,生白术,桂枝,生龙骨,生牡蛎,黄连,当归,合欢皮,合欢花,天花粉,生地黄,黄芪,防风,白花蛇舌草,川芎
请根据脾胃病患者的症状信息进行中医处方推荐。大便不成形年;服药后症状改善不明显,现大便不成形,日次,质黏,粘马桶,进食时腹痛,腹胀减轻,排气减少,晨起恶心好转,近日腹泻未作,腹部畏寒同前,乏力减轻,纳欠佳,无食欲,睡眠可,小便正常,急躁易怒 炙甘草,干姜,白术,茯苓,半夏,陈皮,枳壳,泽泻,荷叶,薏苡仁,大腹皮,麦芽 党参,白术,茯苓,甘草,砂仁,桔梗,薏苡仁,莲子,扁豆,山药,苍术,厚朴,陈皮,半夏,生姜,大枣,枳壳,吴茱萸,干姜,灸甘草,当归,川芎,肉桂 马齿苋,山药,白芍,北柴胡,芡实,陈皮,麸炒白术,茯苓,防风,乌梅,当归,麸煨肉豆蔻,麸炒芡实,五味子,炙甘草,北败酱草,诃子,盐补骨脂,炒麦芽 砂仁,醋延胡索,赤石脂,茯苓,法半夏,胡黄连,马齿苋,诃子,芡实,麸炒白术,北败酱草,当归,菊花,陈皮,麸神曲,川芎,山药,五味子,白芍,盐补骨脂,麸煨肉豆蔻,蝉蜕,炒麦芽,炒白扁豆,木香,炙甘草,炒鸡内金,枸杞子,炒僵蚕,乌梅,防风,黄芪
请根据糖尿病患者的症状信息进行中医处方推荐。上肢麻木加重,皮肤瘙痒不变,舌苔白,舌苔薄,舌淡,舌暗 黄芪,桂枝,白术,川芎,熟地,五味子,生姜,大枣 黄芪,党参,大枣,萆薢,黄柏,茯苓,泽泻,麻黄,附子,细辛,当归,川芎,桃仁,红花,羌活,防风,藁本,细辛 干姜,黄连,黄芩,太子参,桑叶,桑枝,天花粉,乌梅 干姜,黄连,黄芩,太子参,桑叶,桑枝,天花粉,鸡血藤,夜交藤,知母,葛根,乌梅
请根据糖尿病患者的症状信息进行中医处方推荐。怕冷,苔白,脉数,脉弦,舌红 人参,白术,茯苓,甘草,附子,干姜 人参(或党参),白术,茯苓,炙甘草肉桂,附子(先煎),姜半夏,泽泻,苡仁,陈皮,黄连,黄芩,白扁豆,山药 黄芪,桂枝,鸡血藤,夜交藤,甘草,白芍 鸡血藤,白芍,黄芪,黄连,知母,桂枝,夜交藤,甘草
注: 1. 在测试ChatGPT、通义千问模型时,是从结果中将处方的药物手动提取出来,以方便模型对比。 2. 文本加粗的为正确药物(与医生一致)。 #### 模型性能对比
Dataset Method P@5 R@5 F1@5 P@10 R@10 F1@10 P@20 R@20 F1@20
CMCC PTM(d)---------
TCMPR0.30980.13140.18450.25310.21160.23050.18680.30850.2327
TCMLLM-PR0.2678 0.1128 0.1537 0.2219 0.1864 0.1956 0.1270 0.2127 0.1541
CHP PTM(d)0.20440.10190.13600.17510.17840.17670.13850.28890.1872
TCMPR0.15450.07190.09820.12370.12050.12210.10970.22640.1477
TCMLLM-PR0.3632 0.2508 0.2642 0.2804 0.3489 0.2818 0.1593 0.3771 0.2064
Diabetes PTM(d)0.48350.25490.33380.38920.41320.40080.28970.61180.3932
TCMPR0.46480.24600.32170.37880.40260.39030.28020.59350.3807
TCMLLM-PR0.3548 0.1880 0.2420 0.2652 0.2786 0.2671 0.1358 0.2852 0.1812
Liver PTM(d)0.57530.15600.24540.47650.25540.33260.38530.40450.3947
TCMPR0.55310.14870.23430.45360.24270.31620.37540.39460.3847
TCMLLM-PR0.3876 0.1037 0.1572 0.3291 0.1751 0.2179 0.2579 0.2705 0.2505
Lung PTM(d)0.5827 0.1700 0.2632 0.5086 0.2949 0.3733 0.4083 0.4726 0.4381
TCMPR0.5890 0.1716 0.2657 0.5119 0.2967 0.3756 0.4114 0.4761 0.4414
TCMLLM-PR0.3750 0.1082 0.1671 0.3138 0.1809 0.2279 0.2991 0.3457 0.3183
ISGP PTM(d)0.3822 0.2113 0.2722 0.3071 0.3415 0.3234 0.2179 0.4810 0.2999
TCMPR0.4950 0.3038 0.3765 0.4183 0.4838 0.4487 0.2803 0.6314 0.3883
TCMLLM-PR0.7378 0.4356 0.5283 0.5786 0.6448 0.5914 0.3138 0.6808 0.4180
SSD PTM(d)---------
TCMPR0.7150 0.1562 0.2564 0.6286 0.2732 0.3809 0.5166 0.4453 0.4783
TCMLLM-PR0.5371 0.1139 0.1866 0.4351 0.1842 0.2562 0.3494 0.2937 0.3155
Stroke PTM(d)0.6440 0.2133 0.3204 0.5353 0.3513 0.4242 0.4187 0.5476 0.4746
TCMPR0.5783 0.1903 0.2863 0.5085 0.3335 0.4028 0.4084 0.5344 0.4630
TCMLLM-PR0.3528 0.1140 0.1714 0.3770 0.2444 0.2946 0.3090 0.3999 0.3463
Mixed PTM(d)---------
TCMPR0.49210.15470.23540.42430.26260.32440.33990.41330.3731
TCMLLM-PR0.3933 0.1300 0.1870 0.3243 0.2111 0.2437 0.2488 0.3033 0.2622
注:基线模型为: 1) PTM(一种基于主题模型的处方推荐算法, [Yao et al. TKDE 2018](https://ieeexplore.ieee.org/document/8242679)); 2) TCMPR(一种基于症状术语映射与深度学习的中医处方推荐算法, [Dong et al. BIBM 2021](https://ieeexplore.ieee.org/document/9669588)) ### 处方推荐任务交叉验证
Dataset1 Dataset2 P@5 R@5 F1@5 P@10 R@10 F1@10 P@20 R@20 F1@20
CHP Stroke 0.1123 0.0364 0.0546 0.0959 0.0619 0.0746 0.0632 0.0821 0.0707
Liver 0.1794 0.0455 0.0704 0.1608 0.0820 0.1048 0.0987 0.1007 0.0958
SSD 0.2871 0.0596 0.0980 0.2175 0.0901 0.1262 0.1290 0.1068 0.1155
ISGP Stroke 0.1918 0.0619 0.0930 0.1550 0.0997 0.1204 0.0831 0.1072 0.0929
Liver 0.2990 0.0800 0.1225 0.2338 0.1232 0.1551 0.1232 0.1296 0.1209
SSD 0.2487 0.0520 0.0853 0.1918 0.0795 0.1112 0.1017 0.0840 0.0908
注:处方推荐任务交叉验证指在Dataset1的训练集进行大模型指令微调,使用Dataset2的测试集进行性能测试。 #### 模型训练效果 ![image](https://github.com/2020MEAI/TCMLLM/assets/75461468/408bc2bd-b8dd-4800-8743-d91093f14709) ## 项目参与者 本项目由北京交通大学计算机与信息技术学院医学智能团队田昊宇、董鑫、徐宽、花睿、赵辰羲、王鸿燕、叶明蔚和胡敏杰等完成,项目负责人为杨扩和周雪忠老师。另外,感谢多家合作单位提供的医疗数据。 ## 致谢 本项目参考了以下开源项目,在此对相关项目和研究开发人员表示感谢。 - ChatGLM-6B: https://github.com/THUDM/ChatGLM-6B - Facebook LLaMA: https://github.com/facebookresearch/llama - Stanford Alpaca: https://github.com/tatsu-lab/stanford_alpaca - Huatuo: https://github.com/SCIR-HI/Huatuo-Llama-Med-Chinese ## 免责声明 本项目相关资源仅供学术研究之用,严禁用于商业用途。使用涉及第三方代码的部分时,请严格遵循相应的开源协议。模型生成的内容受模型计算、随机性和量化精度损失等因素影响,本项目无法对其准确性作出保证。本项目数据集绝大部分由模型生成,即使符合某些医学事实,也不能被用作实际医学诊断的依据。对于模型输出的任何内容,本项目不承担任何法律责任,亦不对因使用相关资源和输出结果而可能产生的任何损失承担责任。 ## Citation 如果你使用了本项目的数据或者代码,请声明引用 ``` @article{haoyu2024tcmllm, title={TCMLLM-PR: evaluation of large language models for prescription recommendation in traditional Chinese medicine}, author={Haoyu, TIAN and Kuo, YANG and Xin, DONG and Chenxi, ZHAO and Mingwei, YE and Hongyan, WANG and Yiming, LIU and Minjie, HU and Qiang, ZHU and Jian, YU and others}, journal={Digital Chinese Medicine}, volume={7}, number={4}, pages={343--355}, year={2024}, publisher={Elsevier} } ``` ================================================ FILE: data/ISGP_test.json ================================================ [ { "Content": "请根据患者的症状信息进行中医处方推荐。低热,夜热早凉,虚烦,盗汗,口干渴,喜饮,善惊惕,舌红,舌苔少,脉细,脉数,惊惕", "Summary": "青蒿、鳖甲、生地黄、知母、牡丹皮、地骨皮。" }, { "Content": "请根据患者的症状信息进行中医处方推荐。肥胖,身体沉重,肢体困倦,胸脘痞满,头晕,口干,不欲饮,大便不爽,喜食肥甘厚味,嗜卧,懒动,舌质淡胖或大,舌苔白,舌苔腻,舌苔滑,脉滑,湿邪偏盛", "Summary": "半夏、天南星、橘红、枳实、茯苓、炙甘草、生姜组、白术、茯苓、猪苓、泽泻" }, { "Content": "请根据患者的症状信息进行中医处方推荐。小儿口疮,小儿口疮,神形怯弱,面白,颧红,手足心热,口干,不欲饮,低热,盗汗,舌质红,舌苔少,指纹淡紫,脉细,脉数,脉弱,口干欲饮", "Summary": "熟地黄、山茱萸、山药、茯苓、泽泻、牡丹皮、知母、黄柏" }, { "Content": "请根据患者的症状信息进行中医处方推荐。呼吸微弱,咳声无力,胸满,短气,张口抬肩,喘不能卧,咳嗽,吐泡沫样痰,咳吐不爽,心慌,形寒,汗出,面色晦暗,舌淡,舌质紫,舌苔白,舌苔润,脉沉,脉细,脉无力,面色苍白,冷汗淋漓,四肢厥冷,血压下降,脉微欲绝等喘脱危象", "Summary": "半夏、干姜、茯苓、甘草、厚朴、五味子、黄芪、陈皮、人参、蛤蚧" }, { "Content": "请根据患者的症状信息进行中医处方推荐。心悸,气短,头晕,目眩,失眠,健忘,面色无华,倦怠,乏力,纳呆,食少,舌淡,舌红,脉细,脉弱,阳虚而汗出肢冷", "Summary": "白术、当归、茯神、炙黄芪、龙眼肉、远志、酸枣仁、木香、炙甘草、人参、生姜、大枣" }, { "Content": "请根据患者的症状信息进行中医处方推荐。眩晕,精神萎靡,腰膝酸软,少寐,多梦,健忘,两目干涩,视力下降,遗精,滑泄,耳鸣,牙齿动摇,颧红,咽干,五心烦热,舌红,舌苔少,脉细,脉数,面色白,形寒肢冷,舌质淡,舌质嫩,舌苔白,脉沉,脉细,脉无力,若肾失封藏固摄,遗精滑泄者", "Summary": "熟地黄、山药、山茱萸、枸杞子、菟丝子、川牛膝、龟甲胶、鹿角胶" }, { "Content": "请根据患者的症状信息进行中医处方推荐。红斑,丘疹,风团,瘙痒,可伴发热,咽干,咽痛,关节酸痛,便干,小便黄,舌质红,舌苔薄,舌苔黄,脉浮数,水肿、水疱明显者", "Summary": "荆芥、防风、蝉衣、牛蒡子、苦参、黄芩、生地黄、生石膏、知母、当归、白鲜皮、甘草" }, { "Content": "请根据患者的症状信息进行中医处方推荐。面目皮肤发黄,颜色逐渐加深,晦暗无华,胁下痞块,痞块坚硬,脘腹膨胀,或见瘀斑、衄血,唇色暗红,舌见瘀点,苔黄,指纹紫滞,腹胀", "Summary": "柴胡、郁金、枳壳、桃仁、当归、赤芍、丹参" }, { "Content": "请根据患者的症状信息进行中医处方推荐。p,小便频数,淋漓不尽,尿液不清,神疲乏力,面色萎黄,食欲不振,畏寒,怕冷,手足不温,大便稀薄,眼睑浮肿,舌质淡或有齿痕,舌苔薄,舌苔腻,脉细,脉弱,肾阳虚为主,症见面白无华,畏寒肢冷,下肢浮肿,脉沉细无力", "Summary": "益智仁、乌药、党参、山药、白术、茯苓、薏苡仁、白扁豆、甘草、桔梗、莲子肉。" }, { "Content": "请根据患者的症状信息进行中医处方推荐。红色丘疹,脓疱,口渴,喜饮,大便秘结,小便短赤,舌质红,舌苔薄,舌苔黄,脉弦,脉滑,脓疱多者", "Summary": "枇杷叶、桑白皮、黄连、黄芩、生地黄、赤芍、牡丹皮、地骨皮、栀子、生甘草" }, { "Content": "请根据患者的症状信息进行中医处方推荐。月经初潮延后,月经后期,月经量少,月经色淡,月经质稀,闭经,月经紊乱,月经量多,月经淋漓不尽,不孕,形体较胖,腰痛,头晕,耳鸣,粉刺,性毛浓密,小便清长,便溏,舌质淡,舌苔白,脉沉,脉弱,若患者肾阴亏虚,致肾阴阳两虚,", "Summary": "附子、熟地黄、山药、山茱萸、枸杞子、菟丝子、鹿角胶、当归、杜仲、补骨脂、淫羊藿" }, { "Content": "请根据患者的症状信息进行中医处方推荐。月经先后不定期,经水乍多乍少,月经色暗,月经色红,经行有块,经行不畅,胸胁胀痛,乳房胀痛,小腹胀痛,精神郁闷,叹息,嗳气,食少,舌苔薄,舌苔白,舌苔黄,脉弦,兼肾虚者", "Summary": "柴胡、当归、白芍、白术、茯苓、甘草、薄荷、炮姜" }, { "Content": "请根据患者的症状信息进行中医处方推荐。咳逆,喘促,咳痰不爽,表情淡漠,嗜睡,意识朦胧,谵妄,烦躁不安,昏迷,撮空理线,抽搐,舌质暗红或淡紫,舌苔白,舌苔黄,舌苔腻,脉细,脉滑,脉数,热伤血络,见皮肤黏膜出血、咯血、便血色鲜", "Summary": "半夏、茯苓、甘草、竹茹、胆南星、橘红、枳实、菖蒲、人参、生姜、大枣" }, { "Content": "请根据患者的症状信息进行中医处方推荐。小便点滴不尽,尿少,尿短赤,尿灼热,小腹胀满,口苦,口黏,口渴,不欲饮,大便不畅,舌质红,舌苔黄,舌苔腻,脉数或濡数,舌苔厚黄腻", "Summary": "车前子、瞿麦、萹蓄、滑石、山栀子仁、甘草梢、木通、大黄、灯心草" }, { "Content": "请根据患者的症状信息进行中医处方推荐。呃逆,口臭,心烦,口渴,喜冷饮,脘腹满闷,大便秘结,小便短,小便黄,舌质红,舌苔黄,舌苔燥,脉滑,脉数,若呃逆甚", "Summary": "竹叶、石膏、人参、麦冬、半夏、甘草、粳米" }, { "Content": "请根据患者的症状信息进行中医处方推荐。p,乳房肿块,经后减缓,乳房疼痛,腰酸,乏力,神疲,月经失调,闭经,舌质淡,舌苔白,脉沉,脉细,伴有乳头溢液者", "Summary": "仙灵脾、仙茅、当归、知母、丹参、象贝、半夏、夏枯草、香附、郁金" }, { "Content": "请根据患者的症状信息进行中医处方推荐。月经延后,月经量少,月经色暗,月经色淡,月经质清稀,腰膝酸软,头晕,耳鸣,面色晦暗,面部暗斑,舌质淡,舌苔薄,舌苔白,脉沉,脉细,若肾气不足,日久伤阳,症见腰膝酸冷者", "Summary": "当归、熟地黄、山茱萸、山药、杜仲、怀牛膝、甘草" }, { "Content": "请根据患者的症状信息进行中医处方推荐。腹痛,腹胀,痛无定处,两胁窜痛,善太息,舌质红,舌苔薄,舌苔白,脉弦,若气滞较重,胁肋胀痛者", "Summary": "木香、青皮、橘皮、甘草、枳壳、川朴、乌药、香附、苍术、砂仁、桂心、川芎" }, { "Content": "请根据患者的症状信息进行中医处方推荐。乳房结块,经期错乱,经前乳胀,不育,舌质淡,舌苔薄,脉弦,脉细,肿块坚硬者,", "Summary": "仙茅、仙灵脾、知母、黄柏、白术、茯苓、柴胡" }, { "Content": "请根据患者的症状信息进行中医处方推荐。p,瘀斑,鼻衄,齿衄,便血,尿血,同时见心烦、口渴、便秘,腹痛,发热,舌质红,舌质绛,脉数,便血", "Summary": "水牛角、地黄、牡丹皮、赤芍、紫草、甘草。" }, { "Content": "请根据患者的症状信息进行中医处方推荐。见于中期成脓期病程日久,睾丸肿大,皮肤粘连,阴囊红肿,阴囊疼痛,低热,盗汗,倦怠,舌红,舌苔少,脉细,脉数,阴虚火旺者,", "Summary": "赤芍、生地黄、川芎、当归、黄芩、地骨皮、贝母、柴胡、黄芪、泽泻、皂角刺" }, { "Content": "请根据患者的症状信息进行中医处方推荐。高热,腮部肿胀,腮部疼痛,硬结拒按,张口咀嚼困难,烦躁不安,口渴引饮,头痛,咽红肿痛,下颌部肿块,肿块胀痛,纳少,大便秘结,尿少,尿黄,舌质红,舌苔黄,脉滑,脉数,腮部肿胀、坚硬拒按", "Summary": "柴胡、黄芩、黄连、连翘、板蓝根、升麻、牛蒡子、马勃、桔梗、玄参、薄荷、虎杖、陈皮、僵蚕。" }, { "Content": "请根据患者的症状信息进行中医处方推荐。心烦,不寐,胸闷,脘痞,恶心,嗳气,头重,目眩,舌质红,舌苔黄,舌苔腻,脉滑,脉数,若痰热盛,痰火上扰心神彻夜不眠,大便秘结不通者", "Summary": "黄连、竹茹、枳实、半夏、陈皮、茯苓、甘草、生姜、大枣" }, { "Content": "请根据患者的症状信息进行中医处方推荐。脘腹痞闷,嘈杂,饥不欲食,恶心,嗳气,口燥,咽干,大便秘结,舌红,舌苔少,脉细,脉数,食滞者", "Summary": "沙参、麦冬、生地、玉竹、冰糖" }, { "Content": "请根据患者的症状信息进行中医处方推荐。口颊溃烂,牙龈溃烂,唇舌溃烂,上颚溃烂,溃疡,口腔糜烂,溃疡周围鲜红,疼痛,拒食,口臭,流涎,发热,面赤,口渴,大便秘结,小便短赤,舌红,舌苔黄,脉数,指纹紫色,尿少", "Summary": "黄芩、连翘、栀子、大黄、玄明粉、淡竹叶、薄荷、甘草" }, { "Content": "请根据患者的症状信息进行中医处方推荐。肛门疼痛,肛门紧缩,肛门裂口,皮色紫暗,舌紫暗,脉弦,脉涩,疼痛剧烈者", "Summary": "大黄、槟榔、沉香、木香、乌药、枳壳" }, { "Content": "请根据患者的症状信息进行中医处方推荐。无尿或少尿,全身浮肿,面色白,唇暗,四肢厥冷,口中尿臭,神识昏蒙,循衣摸床,舌体卷缩,舌质淡,舌体胖,舌苔白,舌苔腻,舌苔黑,脉沉,脉细,脉微,昏迷不醒", "Summary": "参附汤由人参、附子、生姜组成;合用苏合香丸,获效之后改用涤痰汤" }, { "Content": "请根据患者的症状信息进行中医处方推荐。腹壁青筋显露,刺痛,胀痛,伴胸闷、嗳气等,舌质淡红或有瘀点、瘀斑,舌苔薄,脉弦,脉涩,疼痛重者", "Summary": "川芎、当归、白芍、生地黄、柴胡、黄芩、栀子、天花粉、防风、牛蒡子、连翘、红花、桃仁" }, { "Content": "请根据患者的症状信息进行中医处方推荐。脘腹痞胀,嗳腐,吞酸,恶心,呕吐,大便不调,矢气频作,舌苔厚,舌苔腻,脉滑,脘腹胀满", "Summary": "山楂、神曲、半夏、茯苓、陈皮、连翘、莱菔子" }, { "Content": "请根据患者的症状信息进行中医处方推荐。p,局部肿胀,灼热,壮热,烦躁,神昏,谵语,呕吐,舌绛苔光者", "Summary": "水牛角、生地黄、芍药、牡丹皮、黄连、黄柏、黄芩、栀子。" }, { "Content": "请根据患者的症状信息进行中医处方推荐。大便溏泻,大便溏稀,完谷不化,食少,脘闷不舒,面色萎黄,倦怠,乏力,舌质淡,舌苔白,脉细,脉弱,若久泻不愈,中气下陷,而兼有脱肛者", "Summary": "人参、白术、茯苓、甘草、山药、莲肉、扁豆、砂仁、苡仁、桔梗、大枣" }, { "Content": "请根据患者的症状信息进行中医处方推荐。咳嗽,气短,声低,咳痰,痰清稀,痰色白,咯血,午后潮热,畏风,怕冷,自汗,盗汗,纳少,神疲,便溏,面色白,颧红,舌质光,舌质淡,舌边有齿印,舌苔薄,脉细,脉弱,脉数,咳嗽痰白者", "Summary": "人参、黄芪、白术、白茯苓、赤茯苓、麦冬、天冬、生地黄、五味子、当归、白芍、熟地黄、陈皮、知母、黄柏、地骨皮、柴胡、厚朴、莲须、生姜、甘草、大枣" }, { "Content": "请根据患者的症状信息进行中医处方推荐。喘咳,气逆,胸胀,胸痛,痰多,痰粘,痰色黄,痰中带血,心胸烦闷,身热,有汗,口渴,喜冷饮,面赤,咽干,尿赤,便秘,舌质红,舌苔黄,舌苔腻,脉滑,脉数,腑气不通,便秘者", "Summary": "桑白皮、半夏、苏子、杏仁、贝母、栀子、黄芩、黄连" }, { "Content": "请根据患者的症状信息进行中医处方推荐。不思乳食,口干,脘腹胀满,腹部灼热,手足心热,心烦,易怒,夜寐不安,小便黄,大便臭秽或秘结,舌质红,舌苔黄,舌苔腻,脉滑,脉数,指纹紫,口渴气虚", "Summary": "大黄、枳实、焦六神曲、茯苓、白术、黄芩、黄连" }, { "Content": "请根据患者的症状信息进行中医处方推荐。高热,咳嗽,气急,鼻扇,喘憋,干燥,鼻孔干燥,面赤,唇红,烦躁,口渴,小便短,小便黄,大便秘结,舌红,舌干,舌苔黄,舌苔燥,脉洪,脉数,指纹紫色,腹胀大便秘结", "Summary": "黄芩、黄连、黄柏、栀子、麻黄、石膏、杏仁、甘草" }, { "Content": "请根据患者的症状信息进行中医处方推荐。发热,头项僵痛,无汗或少汗,口渴,恶心,呕吐,精神烦躁,嗜睡,舌质红,舌苔薄,舌苔白,舌苔黄,脉浮,脉数,脉洪,指纹浮露,指纹紫,湿偏重", "Summary": "金银花、连翘、淡豆豉、牛蒡子、荆芥、薄荷、芦根、桔梗、淡竹叶、甘草、生石膏、知母。" }, { "Content": "请根据患者的症状信息进行中医处方推荐。心悸不安,胸闷,气短,面色苍白,形寒肢冷,舌淡,舌苔白,脉象虚弱或沉细无力,水饮内停", "Summary": "桂枝、炙甘草、煅龙骨、煅牡蛎、人参、炮附子、生姜" }, { "Content": "请根据患者的症状信息进行中医处方推荐。恶寒,发热,无汗,头痛,身痛,鼻流清涕,喷嚏,咳嗽,咽无红肿及疼痛,舌淡,舌红,舌苔薄,舌苔白,脉浮,脉紧,指纹浮红,外寒里热", "Summary": "荆芥、防风、羌活、苏叶、桔梗、前胡、甘草" }, { "Content": "请根据患者的症状信息进行中医处方推荐。月经先期,经水乍多乍少,月经色红,经质粘稠,两颧发红,手足心热,口咽干燥,舌质红,舌苔少,脉细,脉数,正值经期经血量多色红", "Summary": "生地黄、地骨皮、玄参、麦冬、阿胶、白芍" }, { "Content": "请根据患者的症状信息进行中医处方推荐。咳嗽,痰多,色白而稀,喉间痰声辘辘,胸闷,纳呆,神乏困倦,形体虚胖,舌淡,舌红,舌苔白,舌苔腻,脉滑,指纹沉滞,纳呆困倦", "Summary": "陈皮、法半夏、茯苓、甘草、炙麻黄、杏仁、白前" }, { "Content": "请根据患者的症状信息进行中医处方推荐。咳嗽痰多,短气,喘息,畏风,汗多,脘痞,纳少,倦怠,乏力,舌暗,舌苔薄,舌苔腻,舌苔浊,脉滑,面唇晦暗、舌质紫暗、舌下青筋显露、舌苔浊腻", "Summary": "苏子、苏叶、半夏、当归、前胡、厚朴、肉桂、甘草、生姜、大枣、白芥子、莱菔子" }, { "Content": "请根据患者的症状信息进行中医处方推荐。月经不调,小腹冷痛,小腹拒按,经期延后,月经量少,月经色暗,经行有块,畏寒肢冷,面色青白,舌暗,舌苔白,脉沉,脉紧,若寒凝气闭,痛甚而厥,四肢冰凉,冷汗淋漓,", "Summary": "肉桂、小茴香、干姜、当归、川芎、赤芍、蒲黄、五灵脂、没药、延胡索、" }, { "Content": "请根据患者的症状信息进行中医处方推荐。p,皮肤麻木,全身症状有头昏、眼花、嗜睡、气急,严重者呼吸困难、四肢麻痹、张口困难、眼睑下垂、神志模糊甚至昏迷,舌苔白,舌苔薄,舌质红,脉弦,脉数,动风抽搐", "Summary": "当归、川芎、红花、威灵仙、白芷、防风、僵蚕、七叶一枝花、半边莲、紫花地丁" }, { "Content": "请根据患者的症状信息进行中医处方推荐。身目俱黄,发热,口渴,心中懊憹,腹胀满,口干,口苦,恶心,呕吐,小便短少,小便黄赤,大便秘结,舌苔黄,舌苔腻,脉弦,热毒内盛,心烦懊", "Summary": "茵陈蒿、栀子、大黄" }, { "Content": "请根据患者的症状信息进行中医处方推荐。扑倒,不省人事,牙关紧闭,口噤不开,两手握固,大便闭,小便闭,肢体强直,面赤,身热,气粗,口臭,躁扰不安,舌苔黄,舌苔腻,脉弦,脉滑,脉数,热闭神昏兼有抽搐者", "Summary": "羚羊角粉、菊花、夏枯草、蝉衣、柴胡、薄荷、生石决明、龟甲、白芍、生地黄、丹皮、大枣、牛黄、水牛角浓缩粉、麝香、珍珠、朱砂、雄黄、黄连、黄芩、栀子、郁金、冰片" }, { "Content": "请根据患者的症状信息进行中医处方推荐。口颊溃烂,神疲,颧红,手足心热,口干,不欲饮,舌质红,舌少苔,舌苔剥,脉细,脉数,指纹淡紫,大便秘结", "Summary": "生地黄、山药、山茱萸、茯苓、泽泻、牡丹皮、肉桂" }, { "Content": "请根据患者的症状信息进行中医处方推荐。大便干,大便排出困难,出汗,气短,乏力,面色白,神疲,肢倦,懒言,舌淡,舌苔白,脉弱,若肢倦腰酸者", "Summary": "黄芪、陈皮、火麻仁、白蜜" }, { "Content": "请根据患者的症状信息进行中医处方推荐。跌仆,神昏,直视,喉中痰鸣,四肢抽搐,口黏,多痰,胸闷,呕恶,舌苔白,舌苔腻,脉滑,苔白腻", "Summary": "石菖蒲、胆南星、陈皮、清半夏、枳壳、沉香、川芎、六神曲、朱砂(冲服)、天麻、青果、青礞石。" }, { "Content": "请根据患者的症状信息进行中医处方推荐。喘促,乏力,咳嗽,干咳或咳痰不爽,面色潮红,形体消瘦,潮热,盗汗,口咽干燥,手足心热,便秘,舌质红,舌质少津,舌苔花剥,脉细,脉数,指纹淡红,盗汗甚", "Summary": "麦冬、百合、山茱萸、熟地黄、枸杞子、怀山药、紫河车、五味子、茯苓" }, { "Content": "请根据患者的症状信息进行中医处方推荐。咳逆,喘息,气粗,痰黄或白,胸满,烦躁,目胀欲脱,发热,汗出,微恶寒,尿黄,便干,口渴引饮,舌质暗,舌质红,舌苔黄,舌苔腻,脉滑,脉数,痰热内盛,痰胶黏不易咳出", "Summary": "麻黄、石膏、甘草、生姜、大枣、桑白皮、半夏、苏子、杏仁、贝母、黄芩、黄连、栀子" } ] ================================================ FILE: ptuning/TCMLLM_output_demo.py ================================================ import os import platform import signal from transformers import AutoTokenizer, AutoModel,AutoConfig import json import torch from tqdm import tqdm import pandas as pd import argparse os.environ["CUDA_VISIBLE_DEVICES"] ='0' def build_prompt(history): prompt = "欢迎使用 TCMLLM-PR 中医智能处方推荐助手,输入内容即可进行对话,clear 清空对话历史,stop 终止程序" for query, response in history: prompt += f"\n\n用户:{query}" prompt += f"\n\nTCMLLM-PR:{response}" return prompt def signal_handler(signal, frame): global stop_stream stop_stream = True def main(): history = [] global stop_stream print("欢迎使用 TCMLLM-PR 中医智能处方推荐,输入内容即可进行对话,clear 清空对话历史,stop 终止程序") while True: query = input("\n用户:") if query.strip() == "stop": break if query.strip() == "clear": history = [] os.system(clear_command) print("欢迎使用 TCMLLM-PR 中医智能处方推荐,输入内容即可进行对话,clear 清空对话历史,stop 终止程序") continue response, history = model.chat(tokenizer, query, history=history) print(f"TCMLLM-PR:{response}") """ # 流式回答方法用起来效果不是很好 count = 0 for response, history in model.stream_chat(tokenizer, query, history=history): if stop_stream: stop_stream = False break else: count += 1 if count % 8 == 0: os.system(clear_command) print(build_prompt(history), flush=True) signal.signal(signal.SIGINT, signal_handler) # os.system(clear_command) # print(build_prompt(history), flush=True) """ def main_muti_output(dis_name,data_name,checkpoint_path): test_epoach_path ='/home/thy/code/TCMLLM/ptuning/' + checkpoint_path +'/' data_path ='/home/thy/code/TCMLLM/ptuning/data/'+ data_name + '.json' tokenizer = AutoTokenizer.from_pretrained("/home/thy/code/ChatGLM-6B/chatglm-6b", trust_remote_code=True) #推理 config = AutoConfig.from_pretrained("/home/thy/code/ChatGLM-6B/chatglm-6b", trust_remote_code=True, pre_seq_len=128) # 这里是token长度,记的调整! model = AutoModel.from_pretrained("/home/thy/code/ChatGLM-6B/chatglm-6b", config=config, trust_remote_code=True).half().cuda() prefix_state_dict = torch.load(test_epoach_path + "pytorch_model.bin") new_prefix_state_dict = {} for k, v in prefix_state_dict.items(): if k.startswith("transformer.prefix_encoder."): new_prefix_state_dict[k[len("transformer.prefix_encoder."):]] = v model.transformer.prefix_encoder.load_state_dict(new_prefix_state_dict) model = model.eval() os_name = platform.system() clear_command = 'cls' if os_name == 'Windows' else 'clear' stop_stream = False history = [] result_list = [] print("欢迎使用 TCMLLM-PR 中医智能处方推荐助手,测试开始~") with open(data_path, "r", encoding="utf-8-sig") as f: json_list = json.load(f) json_size = int(len(json_list)) for index_ in tqdm(range(json_size)): query = json_list[index_]['Content'] response, history = model.chat(tokenizer, query, history=history) gold_summary = json_list[index_]['Summary'] if len(response)>512: response = response[:512] result_list.append({'content':query, 'summary':response, 'gold_summary':gold_summary}) history = [] # if index_%10 == 0: print(index_,' over') with open(test_epoach_path + 'muti_output_'+ data_type + '.json', 'w', encoding='utf-8') as f: json.dump(result_list, f,ensure_ascii=False) pd_result = pd.DataFrame(result_list) pd_result.to_excel(test_epoach_path + 'muti_output_'+ data_type + '.xlsx',index=False, encoding='utf_8_sig') # UnicodeEncodeError: 'ascii' codec can't encode characters in position 1-29: ordinal not in range(128) if __name__ == "__main__": data_type = 'test' main_muti_output('ISGP',data_name = 'ISGP_test2',checkpoint_path = 'checkpoint_v1')