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