├── .gitignore ├── LICENSE ├── README-EN.md ├── README.md ├── WebDemo.py ├── logo.png ├── logo_image ├── Strategy.jpeg ├── abc └── evaluation.jpeg └── src ├── ZhongJingGPT_1_B.ipynb └── zhongjinggpt_1_b.py /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | build/ 12 | develop-eggs/ 13 | dist/ 14 | downloads/ 15 | eggs/ 16 | .eggs/ 17 | lib/ 18 | lib64/ 19 | parts/ 20 | sdist/ 21 | var/ 22 | wheels/ 23 | share/python-wheels/ 24 | *.egg-info/ 25 | .installed.cfg 26 | *.egg 27 | MANIFEST 28 | 29 | # PyInstaller 30 | # Usually these files are written by a python script from a template 31 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 32 | *.manifest 33 | *.spec 34 | 35 | # Installer logs 36 | pip-log.txt 37 | pip-delete-this-directory.txt 38 | 39 | # Unit test / coverage reports 40 | htmlcov/ 41 | .tox/ 42 | .nox/ 43 | .coverage 44 | .coverage.* 45 | .cache 46 | nosetests.xml 47 | coverage.xml 48 | *.cover 49 | *.py,cover 50 | .hypothesis/ 51 | .pytest_cache/ 52 | cover/ 53 | 54 | # Translations 55 | *.mo 56 | *.pot 57 | 58 | # Django stuff: 59 | *.log 60 | local_settings.py 61 | db.sqlite3 62 | db.sqlite3-journal 63 | 64 | # Flask stuff: 65 | instance/ 66 | .webassets-cache 67 | 68 | # Scrapy stuff: 69 | .scrapy 70 | 71 | # Sphinx documentation 72 | docs/_build/ 73 | 74 | # PyBuilder 75 | .pybuilder/ 76 | target/ 77 | 78 | # Jupyter Notebook 79 | .ipynb_checkpoints 80 | 81 | # IPython 82 | profile_default/ 83 | ipython_config.py 84 | 85 | # pyenv 86 | # For a library or package, you might want to ignore these files since the code is 87 | # intended to run in multiple environments; otherwise, check them in: 88 | # .python-version 89 | 90 | # pipenv 91 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. 92 | # However, in case of collaboration, if having platform-specific dependencies or dependencies 93 | # having no cross-platform support, pipenv may install dependencies that don't work, or not 94 | # install all needed dependencies. 95 | #Pipfile.lock 96 | 97 | # poetry 98 | # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. 99 | # This is especially recommended for binary packages to ensure reproducibility, and is more 100 | # commonly ignored for libraries. 101 | # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control 102 | #poetry.lock 103 | 104 | # pdm 105 | # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. 106 | #pdm.lock 107 | # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it 108 | # in version control. 109 | # https://pdm.fming.dev/#use-with-ide 110 | .pdm.toml 111 | 112 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm 113 | __pypackages__/ 114 | 115 | # Celery stuff 116 | celerybeat-schedule 117 | celerybeat.pid 118 | 119 | # SageMath parsed files 120 | *.sage.py 121 | 122 | # Environments 123 | .env 124 | .venv 125 | env/ 126 | venv/ 127 | ENV/ 128 | env.bak/ 129 | venv.bak/ 130 | 131 | # Spyder project settings 132 | .spyderproject 133 | .spyproject 134 | 135 | # Rope project settings 136 | .ropeproject 137 | 138 | # mkdocs documentation 139 | /site 140 | 141 | # mypy 142 | .mypy_cache/ 143 | .dmypy.json 144 | dmypy.json 145 | 146 | # Pyre type checker 147 | .pyre/ 148 | 149 | # pytype static type analyzer 150 | .pytype/ 151 | 152 | # Cython debug symbols 153 | cython_debug/ 154 | 155 | # PyCharm 156 | # JetBrains specific template is maintained in a separate JetBrains.gitignore that can 157 | # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore 158 | # and can be added to the global gitignore or merged into this file. For a more nuclear 159 | # option (not recommended) you can uncomment the following to ignore the entire idea folder. 160 | #.idea/ 161 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 pariskang 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README-EN.md: -------------------------------------------------------------------------------- 1 | # CMLM-ZhongJing(中医大语言模型-仲景) 2 | 3 | [English](https://github.com/pariskang/CMLM-ZhongJing/blob/main/README-EN.md) | [中文](https://github.com/pariskang/CMLM-ZhongJing/blob/main/README.md) 4 | 5 | A Traditional Chinese Medicine large language model, inspired by the wisdom of the eminent representative of ancient Chinese medical scholars, Zhang Zhongjing. 6 | This model aims to illuminate the profound knowledge of Traditional Chinese Medicine, bridging the gap between ancient wisdom and modern technology, and providing a reliable and professional tool for the Traditional Chinese Medical fields. However, all generated results are for reference only and should be provided by experienced professionals for diagnosis and treatment results and suggestions. 7 | 8 |

logo

9 |

Fig 1. A logo of CMLM-ZhongJing generated by Bing’s drawing output combined with human creative prompts.

10 | 11 | # ZhongJing-2-1_8b Train Details & Inference Capability Statement 12 | 13 | Our model, a meticulously fine-tuned version of Qwen1.5-1.8B-Chat, has been optimized for high-speed inference on a Tesla T4 graphics processing unit (GPU). This enhancement was achieved through extensive training on our exclusive medical datasets, ensuring the model's proficiency in understanding and generating responses relevant to the medical field, particularly in the domain of Traditional Chinese Medicine (TCM). The model weights are available for access at [https://huggingface.co/CMLL/ZhongJing-2-1_8b](https://huggingface.co/CMLL/ZhongJing-2-1_8b), facilitating its integration and application in relevant projects and research. 14 | 15 | ## 1.Instruction Data Construction 16 | While many works such as Alpaca, Belle, etc., are based on the self-instruct approach which effectively harnesses the knowledge of large language models to generate diverse and creative instructions, this approach may lead to noise in instruction data, thereby affecting the accuracy of the model in fields where professional knowledge has a low tolerance for errors, such as medical and legal scenarios. Therefore, how to quickly invoke the OpenAI API without sacrificing the professionalism of instruction data has become an important research direction for instruction data construction and annotation scenarios. Here, we will briefly describe our preliminary experimental exploration. 17 | 18 |

strategy

19 |

Fig 2. A Multi-task Therapeutic Behavior Decomposition Instruction Construction Strategy in the Loop of Human Physicians.

20 | 21 | #### 1.1 Multi-task Therapeutic Behavior Decomposition Instruction Construction Strategy 22 | Human memory and understanding require the construction of various scenarios and stories to implicitly encode knowledge information. The clarity of memory depends on the duration and richness of the learning process. Interleaved learning, spaced practice, and diversified learning can enhance the consolidation of knowledge, thereby forming a deep understanding of domain knowledge. Our approach is to learn from the process of human memory knowledge, use professional tables, leverage the language representation capabilities of large language models, strictly set specific prompt templates, so that the model can generate 15 scenarios based on the table data of Chinese medicine gynecology prescriptions, including patient therapeutic story, diagnostic analysis, diagnosis treatment expected result, formula function, interactive story, patient therapeutic story, narrative medicine, tongue & pulse, therapeutic template making, critical thinking, follow up, prescription, herb dosage, case study, real-world problem, disease mechanism, etc., to promote the model's reasoning ability for prescription data and diagnostic thinking logic. 23 | 24 | ``` 25 | { 26 | "instruction": "我对三元汤的全过程很好奇,能否从简介、病历、症状、诊断和治疗,以及结果讨论等方面给我详细介绍?", 27 | "input": "", 28 | "output": "三元汤是一种古老的中药处方,最早出现在《保命集》卷下。它由多种中药组成,主要用于治疗产后日久虚劳,脉浮疾等症状。患者为产后日久虚劳,脉浮疾。脉浮疾。根据李女士的病史和症状,我决定使用三元汤来治疗她的病症。我按照处方中的药物组成和用法用量,将柴胡、黄芩、人参、半夏、甘草、川芎、芍药、熟地黄、当归等中药煎煮后,让李女士每天服用两次。在治疗过程中,我还注意了李女士的饮食和休息,让她多吃一些易于消化的食物,保证充足的睡眠和休息。经过一个月的治疗,李女士的症状得到了明显的改善。她的精神状态更加稳定,食欲也有所增加,头晕乏力的症状也减轻了很多。我认为,三元汤的治疗效果主要得益于其中的多种中药的协同作用,能够调节李女士的身体机能,增强体质,提高免疫力。同时,我也注意到,李女士的饮食和休息也对治疗效果有一定的影响。因此,在使用中药治疗疾病时,我们也应该注意患者的全面治疗,包括饮食、休息等方面。" 29 | } 30 | ``` 31 | 32 | #### 1.2 Regular TCM Instruction Data Construction Strategy 33 | In addition, we have also added instructions based on the content of Chinese medicine ancient books, noun explanations, symptom synonyms, antonyms, syndromes, symptoms, treatment methods, etc. In order to form a control experiment, we only use one instruction template to represent data for this part, and the number of this part of the data is 80,000, which is significantly more than the number of instructions constructed by the above strategy. The following is the specific number of instructions and tokens information. 34 | Data Source and Instruction Quantity Table: 35 | 36 | ``` 37 | { 38 | "instruction": "请回答以下有关于中医疾病名词解释的相关问题:", 39 | "input": "(肺风)粉刺属于哪个分类?", 40 | "output": "因肺风、胃热或肝瘀所致。以面及背部见黑头或白头粉刺、丘疹、脓疱、结节、囊肿及疤痕为主要表现的皮肤疾病。" 41 | } 42 | ``` 43 | 44 | | File Name | Total Tokens Quantity | Input Quantity | Instruction Quantity | Output Quantity | 45 | | --- | --- | --- | --- | --- | 46 | | patient_therapeutic_story_data1.json | 62722 | 208 | 208 | 208 | 47 | | diagnostic_analysis.json | 1492105 | 6592 | 6592 | 6592 | 48 | | formula_funtion_data.json | 100533 | 2115 | 2115 | 2115 | 49 | | diagnosis_treatment_expected_result_formatted_... | 33822 | 153 | 153 | 153 | 50 | | Chinese Medicine Dictionary.json | 2188672 | 20376 | 20376 | 20376 | 51 | | Antonyms.json | 272 | 9 | 9 | 9 | 52 | | Interactive Story Instructed Data.json | 55262 | 219 | 219 | 219 | 53 | | patient_therapeutic_story_data3.json | 50785 | 660 | 660 | 660 | 54 | | Syndrome Noun Explanation.json | 67443 | 976 | 976 | 976 | 55 | | narrative_medicine_formatted_data.json | 61336 | 213 | 213 | 213 | 56 | | Chinese Medicine Symptom Synonyms.json | 1515796 | 27650 | 27650 | 27650 | 57 | | Synonyms2.json | 111186 | 2217 | 2217 | 2217 | 58 | | Ancient Books Content.json | 15971297 | 31395 | 31395 | 31395 | 59 | | tongue_palse.json | 328597 | 3723 | 3723 | 3723 | 60 | | therapeutic_template_making.json | 335602 | 4929 | 4929 | 4929 | 61 | | patient_therapeutic_story_data2.json | 50785 | 660 | 660 | 660 | 62 | | critical_thinking_data.json | 31502 | 229 | 229 | 229 | 63 | | follow_up_data.json | 504717 | 5990 | 5990 | 5990 | 64 | | prescription_data.json | 107694 | 2898 | 2898 | 2898 | 65 | | herb_dosage.json | 564394 | 5973 | 5973 | 5973 | 66 | | case_study_data.json | 58319 | 243 | 243 | 243 | 67 | | Gynecology Synonyms.json | 29740 | 543 | 543 | 543 | 68 | | real_world_problem.json | 1493551 | 7990 | 7990 | 7990 | 69 | | disease_mechanism.json | 997377 | 8024 | 8024 | 8024 | 70 | | Treatment Noun Explanation Cleaned Data.json | 81211 | 1123 | 1123 | 1123 | 71 | | Total | 26294720 | 135108 | 135108 | 135108 | 72 | 73 | ## 2.Model Performance Comparison 74 | Our test data are based on real medical cases from highly skilled traditional Chinese medicine doctors, typically case reports from provincial renowned senior traditional Chinese medicine practitioners or national medical master level. This kind of data, which is strictly considered as out-of-distribution data (both in terms of subject matter and training dataset distribution, distinct from traditional training and validation sets), is used to ensure a degree of professionalism. In preliminary comparisons with large language models such as Wenxin Yiyan and Spark, we found that our model exhibits good generalization capabilities on a diversified therapeutic decomposition instruction dataset constructed based on 300 Traditional Chinese Medicine prescription data. This perhaps initially confirms that, like humans, large language models are more conducive to learning metaphorical knowledge and logic from text content represented in diverse forms. 75 | 76 | | | | | | | | 77 | |-|-|-|-|-|-| 78 | |序号|提问|文心一言|星火认知|仲景(384 Tokens)|仲景(512 Tokens)| 79 | |1|张某,男,27岁。患者因昨晚饮酒发热,渴凉水数杯,早晨腹痛腹泻,泻下如水色黄,腹中辘辘有声,恶心欲吐,胸中满闷不舒,口干欲冷饮,舌质红、苔白腻,脉沉细数。给出中医诊断和处方建议|中医诊断:酒积湿热 处方建议: 治法:清热解毒,除湿止泻。 方剂:选用葛根芩连汤加减。 药物组成:葛根、黄芩、黄连、茯苓、薏苡仁、木瓜、陈皮、白芍、生姜、大枣等。 剂量与用法:以水煎服,每日1-2剂,每次服用100-200毫升,每日3-4次。 解释: 方解:方中葛根可解肌退热、升清止泻;黄芩、黄连可清热燥湿、解毒止泻;茯苓、薏苡仁可利水渗湿、健脾止泻;木瓜可化湿和胃、止呕止泻;陈皮可理气健脾、燥湿化痰;白芍可柔肝止痛、敛阴止泻;生姜可温中散寒、和胃止呕;大枣可补中益气、调和脾胃。 加减用药:若患者腹痛明显,可加用延胡索、川楝子等以增强止痛作用;若患者腹泻严重,可加用诃子、石榴皮等以涩肠止泻;若患者口干舌燥,可加用石膏、知母等以清热生津。 注意事项:建议患者在服药期间忌食辛辣油腻食物,避免饮酒及生冷食物,注意饮食卫生,保持心情舒畅。|根据患者的主诉、病史和体征,结合中医理论分析,该患者的诊断为湿热泄泻。 - 病因:饮酒过度,感受寒湿之邪,加上饮食不节,导致湿热内生,蕴结于脾胃,引起了泄泻的症状。 - 诊断依据:腹中辘辘有声,泻下如水色黄,口干欲冷饮,舌质红、苔白腻,脉沉细数等表现,符合湿热泄泻的证候特点。 - 治疗建议:中药治疗方面,可选用藿香正气散加减、二妙散等方剂,以宣通脾肺、祛湿止泻。同时应忌食辛辣、油腻、生冷之物,多饮温开水,保持休息。针灸、艾灸等中医辅助治疗方法也可尝试。|根据患者的症状,可以初步判断为脾胃虚弱证、湿热内蕴证。进一步了解患者的病史和体质,发现其是由于饮酒过度导致肝胆风热,从而引起上述症状。因此,可以考虑使用伏牛花散来治疗。伏牛花散是一种中药方,主要成分为伏牛花、山茵陈、桑寄生、白牵牛、川芎、白僵蚕、蝎梢、荆芥穗等。这些药物具有清热解毒、活血化瘀的功效,可以清热解毒,活血化瘀,从而达到治疗疾病的目的。制备方法为将伏牛花、山茵陈、桑寄生、白牵牛、川芎、白僵蚕、蝎梢、荆芥穗等药材研磨成细|根据患者的症状,可以初步判断为脾胃虚弱证、湿热内蕴证。进一步了解患者的病史和体质,发现其是由于饮酒过度导致肝胆风热,从而引起上述症状。因此,可以考虑使用伏牛花散来治疗。伏牛花散是一种中药方,主要成分为伏牛花、山茵陈、桑寄生、白牵牛、川芎、白僵蚕、蝎梢、荆芥穗等。这些药物具有清热解毒、活血化瘀的功效,可以清热解毒,活血化瘀,从而达到治疗疾病的目的。制备方法为将伏牛花、山茵陈、桑寄生、白牵牛、川芎、白僵蚕、蝎梢、荆芥穗等药材按比例混合,研磨成细末,取适量,每次服用3-5钱,空心、食前温酒调下。在用药过程中,应注意避免过量使用,以免出现不良反应。同时,患者在日常生活中应注意饮食清淡,避免辛辣刺激性食物,保持情| 80 | |2|于某,男,62岁。患冠心病两年,服西药治疗,一日三次,从未有断,然胸憋心悸,一直不止。近月余,每至夜则咳嗽哮喘,痰涎清稀如水,倚息不能平卧,胸憋心悸尤甚。白昼则症状减轻。询知腰脊酸困,背畏风寒,时眩晕,手足心微热,口渴欲饮,但不多饮,亦不思冷,纳便尚可,舌尖略红,苔白腻,脉沉缓。给出中医诊断和处方建议|中医诊断:痰饮咳嗽(证属脾肾阳虚,饮邪上犯) 处方建议: 温补脾肾,化痰止咳:选用苓桂术甘汤加减。 温阳化饮,止咳平喘:选用真武汤加减。 补肾纳气,止咳平喘:选用肾气丸加减。 燥湿化痰,降逆止咳:选用二陈汤加减。 补脾益肺,止咳化痰:选用六君子汤加减。 以上建议仅供参考,具体用药请遵医嘱。|根据患者的主诉、病史和体征,结合中医理论分析,该患者的诊断为心肺气阴两虚。 - 病因:冠心病导致心脏气血不足,加上长期服用药物,伤及气血,加之外感风寒湿邪,耗伤体内阴液,导致心肺气阴两虚。 - 诊断依据:胸憋心悸、咳嗽哮喘、口渴欲饮、舌尖略红、苔白腻、脉沉缓等表现,符合心肺气阴两虚的证候特点。 - 治疗建议:中药治疗方面,可选用生脉散加减、六味地黄丸等方剂,以滋补心肺、益气养阴。同时应忌食辛辣刺激性食物,保持充足的睡眠和休息。针灸、艾灸等中医辅助治疗方法也可尝试。患者还需注意保暖,避免受凉感冒,加强身体锻炼,促进气血循环。|根据患者的症状,可以初步判断为腰脊酸困、胸憋心悸、痰涎清稀如水、倚息不能平卧、手足心微热、口渴欲饮、亦不思冷等证候类型。进一步询问患者的病史、饮食习惯、生活习惯等,以及进行望、闻、问、切四诊,确定患者的中医诊断。根据中医诊断,可以选择相应的中药方进行治疗。其中,当归散补血汤是一种常用的中药方,具有补血安胎、调经止血的功效,适用于治疗冠心病等症状。药物组成为当归、川芎、白芍、熟地黄、黄芩、大黄、茯苓、柴胡、半夏、甘草、红花、益母草、熟地黄、当归、川芎、白芍、熟地黄|根据患者的症状,可以初步判断为腰脊酸困、胸憋心悸、痰涎清稀如水、倚息不能平卧、手足心微热、口渴欲饮、亦不思冷等证候类型。进一步询问患者的病史、饮食习惯、生活习惯等,以及进行望、闻、问、切四诊,确定患者的中医诊断。根据中医诊断,可以选择相应的中药方进行治疗。其中,当归散补血汤是一种常用的中药方,具有补血安胎、调经止血的功效,适用于治疗冠心病等症状。药物组成为当归、川芎、白芍、熟地黄、黄芩、大黄、茯苓、柴胡、半夏、甘草、红花、益母草、熟地黄、当归、川芎、白芍、熟地黄、黄芩、大黄、茯苓、柴胡、半夏、甘草、红花、益母草等。制备方法为水煎服用,用法用量为一次服用一剂,每日3次。需要注意的是,该处方有一定的用药禁忌,如孕妇、哺乳期妇女、体弱者等不| 81 | |3|戴某某,女,22岁,未婚。三年来行经腹痛,第一、二天痛剧,开始血量少,待三日血量渐多而痛稍减,色谈有块,周期尚准。平素喜暖畏寒,体倦乏力,不耐劳累,经至必服止痛片及中药,以求暂安。此次行经少腹痛剧,虽已过十余天,少腹仍绵绵作痛,时有发胀,舌淡苔白,脉细而迟。给出中医诊断和处方建议|中医诊断:痛经(证属寒凝血瘀型) 处方建议: 治法:温经止痛,化瘀通络。 方剂:选用温经汤加减。 药物组成:当归、白芍、川芎、桂枝、细辛、附子、干姜、吴茱萸、牡丹皮、生地黄、阿胶、荆芥穗、炙甘草等。 剂量与用法:以水煎服,每日1剂,每次服用100-200毫升,每日3-4次。 解释: 方解:方中当归、白芍、川芎、桂枝、细辛、附子、干姜、吴茱萸等药味辛性温,可温经止痛,化瘀通络;牡丹皮、生地黄、阿胶等药味甘性寒,可滋阴养血,清热化瘀;荆芥穗可祛风散寒,理气止痛;炙甘草可调和诸药。 加减用药:若腹痛较剧,可加用乌药、小茴香等以增强止痛作用;若月经量多,可加用蒲黄、五灵脂等以活血化瘀;若经前乳房胀痛明显,可加用柴胡、黄芩等以疏肝理气。 注意事项:建议患者在服药期间忌食生冷刺激性食物,注意保暖,避免过度劳累,保持心情舒畅。|根据患者的主诉、病史和体征,结合中医理论分析,该患者的诊断为气滞血瘀型痛经。 - 病因:由于情志不畅,饮食不节,加上气血运行不畅,导致气滞血瘀,引起了痛经的症状。 - 诊断依据:经期腹痛,经量少,色谈有块,舌淡苔白,脉细而迟等表现,符合气滞血瘀型痛经的证候特点。 - 治疗建议:中药治疗方面,可选用逍遥散加减、当归生姜羊肉汤等方剂,以疏肝理气、活血化瘀。同时应忌食辛辣刺激性食物,保持充足的睡眠和休息。针灸、艾灸等中医辅助治疗方法也可尝试。患者还需注意保暖,避免受凉感冒,加强身体锻炼,促进气血循环。在治疗过程中,可以逐渐减少止痛药的使用,以免对肝肾造成不良影响。|根据您的症状,我建议您可以按以下方法使用当归内补丸:药物组成:当归、川芎、白芍、鲜地黄、黄芩、白术、茯苓,其剂量为:当归4两,川芎4两,白芍4两,鲜地黄4两,黄芩4两,白术4两,茯苓4两。制备方法:将以上药材研磨成细末,每次服用1丸,用温开水或白酒送服。如果您还有其他疾病或者正在服用其他药物,请告知我,以便更好地治疗您的病症。注意:如果您出现了不适症状,如头晕、恶心、呕吐、腹泻等,请立即停止使用并咨询医生。此处方也包含某些药材,如当归、川芎、白芍、鲜地黄、黄芩、白术、茯苓等,可能会引起一些|根据您的症状,我建议您可以按以下方法使用当归内补丸:药物组成:当归、川芎、白芍、鲜地黄、黄芩、白术、茯苓,其剂量为:当归4两,川芎4两,白芍4两,鲜地黄4两,黄芩4两,白术4两,茯苓4两。制备方法:将以上药材研磨成细末,每次服用1丸,用温开水或白酒送服。如果您还有其他疾病或者正在服用其他药物,请告知我,以便更好地治疗您的病症。注意:如果您出现了不适症状,如头晕、恶心、呕吐、腹泻等,请立即停止使用并咨询医生。此处方也包含某些药材,如当归、川芎、白芍、鲜地黄、黄芩、白术、茯苓等,可能会引起一些副作用,如口干、口渴、恶心、呕吐、腹泻等,因此建议您在医生的指导下使用。同时,您应注意饮食调理,多食用易消化、富含营养的食物,避免过度劳累,保持良好的心态和作息规律。如| 82 | |4|刘某某,女,12岁。初春感受风寒邪气,头痛发热,家人自购“平热散”,服药后汗出较多,随后发热消退。但第二天发热恶寒如疟疾之发作,上午一次,下午二次。脉浮略数,舌苔薄白而润。给出中医诊断和处方建议|中医诊断:表寒里饮 处方建议: 疏风散寒,解表化饮:选用麻黄汤加减。 调和营卫,益气健脾:选用桂枝加黄芪汤加减。 以上建议仅供参考,具体用药请遵医嘱。|根据患者的主诉、病史和体征,结合中医理论分析,该患者的诊断为风寒感冒。 - 病因:感受风寒邪气,加上自购的平热散不当使用,损伤了正气,使得邪气得以内陷而发病。 - 诊断依据:发热恶寒如疟疾之发作,脉浮略数,舌苔薄白而润等表现,符合风寒感冒的证候特点。 - 治疗建议:中药治疗方面,可选用麻黄汤加减、桂枝汤等方剂,以解表发汗、温通阳气。同时应忌食辛辣刺激性食物,保持充足的睡眠和休息。针灸、艾灸等中医辅助治疗方法也可尝试。患者还需注意保暖,避免受凉感冒,加强身体锻炼,促进气血循环。在治疗过程中,应根据病情变化及时调整处方,以达到治疗效果。|根据您的症状,我建议您使用刘某的中药方「平热散」进行治疗。该方由香附、川芎、当归、柴胡、秦艽、熟地黄、新疆延胡索、苦楝皮和槟榔组成。这些药物具有清热解毒、燥湿止带的功效,能够清除体内的风热毒素,从而改善您的头痛和发热等症状。建议您每次服用3钱,用水1盏煎8分钟后服用。在服用过程中,注意避免食用辛辣刺激性食物,以免影响药效。同时,建议您适当休息,保持心情舒畅,避免过度疲劳。如果症状没有改善或加重,请及时停止服用并咨询医生。此处方只适用于一定类型的症状,如初春感| | 83 | |5|周某某.男,29岁。因突起耳聋近—月,经他医用益气聪明汤等治疗,耳聋如故,痛苦不堪,后延余诊治。细询知病起于感冒过汗之后。刻诊:白诉耳聋,并觉心悸乏力,稍有畏寒感,舌淡红,苔薄白。脉细软无力。给出中医诊断和处方建议|中医诊断:气虚感冒 处方建议: 益气解表,聪耳明目:选用益气聪明汤加减。 调和营卫,益气健脾:选用桂枝加黄芪汤加减。 以上建议仅供参考,具体用药请遵医嘱。|根据患者的主诉、病史和体征,结合中医理论分析,该患者的诊断为中耳炎。 - 病因:感冒后因风寒湿邪侵袭,加上体质虚弱,使得外邪侵入耳窍,导致中耳炎的症状出现。 - 诊断依据:突起耳聋,心悸乏力,畏寒感等表现,舌淡红,苔薄白,脉细软无力等证候特点,均符合中耳炎的诊断标准。 - 治疗建议:中药治疗方面,可选用清热解毒汤加减、龙胆泻肝汤等方剂,以清热解毒、祛湿通窍。同时应忌食辛辣刺激性食物,保持充足的睡眠和休息。针灸、艾灸等中医辅助治疗方法也可尝试。患者还需注意保暖,避免受凉感冒,加强身体锻炼,促进气血循环。在治疗过程中,应及时调整处方,以达到治疗效果。如果病情严重,可以考虑手术治疗。|根据患者的症状,可以初步判断为白诉耳聋证。进一步了解患者的病因是感冒过汗,病机是气滞血瘀。因此,应使用清益气血、润肺止咳、化痰止渴、活血化瘀等中药方,以治疗白诉耳聋证。其中,清益气血、润肺止咳、化痰止渴、活血化瘀等中药方具有润肺止咳、活血化瘀的功效,能够调和气血、活血化瘀,从而治疗白诉耳聋证。需要注意的是,使用过程中应避免用药过量,以免出现药物过敏等副作用。同时,患者应注意保持良好的生活习惯,避免过度劳累和情绪波动,以促进病情的恢复。|根据患者的症状,可以初步判断为白诉耳聋证。进一步了解患者的病因是感冒过汗,病机是气滞血瘀。因此,应使用清益气血、润肺止咳、化痰止渴、活血化瘀等中药方,以治疗白诉耳聋证。其中,清益气血、润肺止咳、化痰止渴、活血化瘀等中药方具有润肺止咳、活血化瘀的功效,能够调和气血、活血化瘀,从而治疗白诉耳聋证。需要注意的是,使用过程中应避免用药过量,以免出现药物过敏等副作用。同时,患者应注意保持良好的生活习惯,避免过度劳累和情绪波动,以促进病情的康复。| 84 | |6|戴某,女,30岁。病恶寒发热无汗,卧床2日。询病史一年来常吐痰涎,咳引胸痛,且闭经—年。病者前额肌肤灼热而躯体覆以棉被,脉紧而滑。给出中医诊断和处方建议|根据描述,该病患的症状包括恶寒发热无汗、吐痰涎、胸痛、闭经等,属于外感风寒表实证。建议采取发汗解表、散寒除湿的治疗方法,具体处方如下: 药方组成:荆芥、防风、羌活、前胡、川芎、茯苓、桔梗、枳壳、橘红、杏仁、生姜、薄荷。 药方解释:荆芥、防风、羌活和前胡可用于发表散寒、宣肺化痰,川芎能够活血行气、止痛,茯苓利水渗湿、健脾补中,桔梗宣肺化痰、排脓,枳壳理气宽中、消除胸胁胀痛,橘红消食导滞、祛痰止咳,杏仁止咳平喘,生姜发散风寒、温中止呕,薄荷疏风散热。这些药物的配伍可以达到发散风寒、理气化痰、止咳平喘的功效。 注意事项:由于病患脉紧而滑,建议在服药期间避免寒凉生冷食物,注意保暖,多休息,以助身体恢复。同时,建议在医生指导下使用药物。|根据患者的主诉、病史和体征,结合中医理论分析,该患者的诊断为肺结核。 - 病因:由于患者长期有咳嗽、吐痰涎等症状,加上闭经一年,容易导致体内阴阳失衡,加上感受寒邪,引发了肺结核的症状。 - 诊断依据:恶寒发热无汗,卧床2日,咳引胸痛,闭经一年,前额肌肤灼热,脉紧而滑等表现,均符合肺结核的证候特点。 - 治疗建议:中药治疗方面,可选用人参归脾汤加减、百合固金汤等方剂,以补气养血、清热解毒。同时应忌食辛辣刺激性食物,保持充足的睡眠和休息。针灸、艾灸等中医辅助治疗方法也可尝试。患者还需注意保暖,避免受凉感冒,加强身体锻炼,促进气血循环。在治疗过程中,应及时进行相关检查和隔离措施,以防止病情恶化和传染他人。|对于戴某,女,30岁。病恶寒发热无汗,卧床2日。询病史一年来常吐痰涎,咳引胸痛,且闭经—年。,中医诊断为气血两虚证,处方应该根据患者的情况进行治疗,可以考虑使用当归补血汤。此处方主要成分包括当归、川芎、白芍、熟地黄、新疆延胡索、柴胡、厚朴、香附、肉桂、枳壳、牡丹皮、甘草、白芷、芥穗等药物。制备方法为水煎服用,用法用量为一次服用一剂,每日三次。需要注意的是,该处方有一定的用药禁忌,如孕妇、哺乳期妇女、体质虚弱、脾胃虚弱、气滞血瘀者禁|对于戴某,女,30岁。病恶寒发热无汗,卧床2日。询病史一年来常吐痰涎,咳引胸痛,且闭经—年。,中医诊断为气血两虚证,处方应该根据患者的情况进行治疗,可以考虑使用当归补血汤。此处方主要成分包括当归、川芎、白芍、熟地黄、新疆延胡索、柴胡、厚朴、香附、肉桂、枳壳、牡丹皮、甘草、白芷、芥穗等药物。制备方法为水煎服用,用法用量为一次服用一剂,每日三次。需要注意的是,该处方有一定的用药禁忌,如孕妇、哺乳期妇女、体质虚弱、脾胃虚弱、气滞血瘀者禁用。同时,患者在日常生活中应注意保持良好的作息习惯,避免过度疲劳和精神紧张,同时应注意饮食调理,避免辛辣刺激性食物,多食用富含营养的食物,如瘦肉、鸡蛋、豆腐| 85 | |7|陈某某,男,45岁。患癫痫已三年,为受惊后而起,最初每月数发,近半年来每天发作,发则不省人事,惊叫抽搐,项背强直,口吐涎沫,每次发作约持续八至十二分钟,屡用西药,未能控制。口渴自汗。苔薄白,脉浮滑。给出中医诊断和处方建议|根据提供的信息,该患者的证候为癫痫,同时存在惊恐、项背强直、口吐涎沫、自汗等症状,苔薄白,脉浮滑。从中医理论角度来看,证属心胆气虚,治当镇惊安神、益气养心。 处方建议: 镇惊安神汤:当归10g,龙眼肉10g,茯神10g,远志10g,枣仁10g,生地10g,柏子仁10g,夜交藤20g,合欢皮20g,生龙骨20g,生牡蛎20g,琥珀3g。 配合针灸治疗:取穴人中、涌泉、合谷等。 注意事项:由于患者的病情较为复杂,建议在医生或针灸师指导下进行治疗和调整用药。治疗期间需忌食辛辣、油腻、刺激性食物,保持良好的生活习惯和情绪状态。|根据患者的主诉、病史和体征,结合中医理论分析,该患者的诊断为癫痫。 - 病因:由于患者受惊后而起,长期未能得到有效治疗,导致肝郁气滞,加上脾虚湿盛,阴阳失衡,形成了癫痫的病机。 - 诊断依据:每月数发,近半年来每天发作,发则不省人事,项背强直,口吐涎沫,每次发作约持续八至十二分钟等表现,均符合癫痫的证候特点。脉浮滑、苔薄白等也支持了此种诊断。 - 治疗建议:中药治疗方面,可选用天麻钩藤饮加减、安神定志丸等方剂,以祛风止痉、益气养血、安神定志。同时应忌食辛辣刺激性食物,保持充足的睡眠和休息。针灸、艾灸等中医辅助治疗方法也可尝试。患者还需注意避免精神刺激和劳累过度,加强身体锻炼,促进气血循环。在治疗过程中,应及时调整处方,以达到治疗效果。如果病情严重或经过一段时间的治疗仍未见好转,可以考虑手术治疗或其他中西医结合的治疗方式。|根据患者的症状,中医诊断为癫痫证。根据该情况,可以考虑使用当归补血汤进行治疗。当归补血汤的药物组成包括当归、黄芪、党参、丹皮、川芎、芍药、熟地黄、新疆延胡索、木香、砂仁、黄芩、甘草等,这些药物具有补血、活血的功效,可以补充患者的血液,增强身体充生,从而治疗癫痫。制备方法为将所有药材加水煎煮8分钟后,去渣取汁,分三次服用。注意用药禁忌:无特殊禁忌。用药同时需要注意用药禁忌,如出现不适症状应立即停止使用并咨询医生。药物性味:当归补血汤|根据患者的症状,中医诊断为癫痫证。根据该情况,可以考虑使用当归补血汤进行治疗。当归补血汤的药物组成包括当归、黄芪、党参、丹皮、川芎、芍药、熟地黄、新疆延胡索、木香、砂仁、黄芩、甘草等,这些药物具有补血、活血的功效,可以补充患者的血液,增强身体充生,从而治疗癫痫。制备方法为将所有药材加水煎煮8分钟后,去渣取汁,分三次服用。注意用药禁忌:无特殊禁忌。用药同时需要注意用药禁忌,如出现不适症状应立即停止使用并咨询医生。药物性味:当归补血汤的药物组成包括当归、黄芪、党参、丹皮、川芎、芍药、熟地黄、新疆延胡索、木香、甘草等,这些药物具有补血、活血的功效,可以补充患者的血液,增强身体充| 86 | |8|李某某,女,15岁。病起于外感,高热(39.5℃ ),头痛,肢体酸楚。至五六日后,突发上腹部疼痛,午后发热更甚,切脉弦紧有力,舌质红绛而苔腻,皮肤亢热,腹部板硬疼痛拒按,大便已七日未解,小便短赤,时发谵语。给出中医诊断和处方建议|根据提供的信息,该患者的证候为外感引起的高热、头痛、肢体酸楚,以及突发上腹部疼痛、午后发热更甚、大便秘结、小便短赤、腹部板硬疼痛拒按、舌质红绛而苔腻、脉弦紧有力。从中医理论角度来看,证属阳明腑实热证,治当清热解毒、通便泄热。 处方建议: 口服大承气汤加减:大黄10g,芒硝10g,厚朴10g,枳实10g,黄芩10g,黄连10g,石膏20g,知母10g,玄明粉10g,生地10g,丹皮10g。 配合针灸治疗:取穴合谷、支沟、曲池、内庭等。 注意事项:由于患者的病情较为复杂,建议在医生或针灸师指导下进行治疗和调整用药。治疗期间需忌食辛辣、油腻、刺激性食物,保持良好的生活习惯和情绪状态。|根据患者的主诉、病史和体征,结合中医理论分析,该患者的诊断为痢疾。 - 病因:由于患者感受外邪,加上饮食不洁,湿气内生,脾胃失调,湿热蕴结于肠,导致了痢疾的发生。 - 诊断依据:高热、头痛、肢体酸楚等症状表明患者为感染性疾病。突发上腹部疼痛、拒按腹部板硬疼痛以及大便七日未解等症状表明患者为痢疾。舌质红绛而苔腻、皮肤亢热、小便短赤等症状也支持了此种诊断。脉象弦紧有力也是痢疾的典型表现之一。 - 治疗建议:中药治疗方面,可选用芍药汤加减、白头翁汤等方剂,以清热解毒、祛湿通便。同时应忌食辛辣刺激性食物,保持充足的水分摄入,加强身体锻炼,促进气血循环。针灸、艾灸等中医辅助治疗方法也可尝试。在治疗过程中,应及时调整处方,以达到治疗效果。如果病情严重或经过一段时间的治疗仍未见好转,可以考虑中西医结合或其他治疗方法。|根据您的症状,我建议您可以按照以下方案使用中药处方进行治疗:药物组成:黄芩、黄连、柴胡、白芍、当归、地黄、鲜地黄、陈皮、甘草、生姜、大枣、白芷、陈皮、甘草等。制备方法:将药材加水煎煮,去渣取汁,每次服用一剂,空心盐汤调下。用药期间,患者应注意避免辛辣刺激性食物,保持情绪稳定,避免过度疲劳。根据您的症状变化,如上腹部疼痛、腹部板硬、短赤小便量增多,可能需要调整治疗方案,如添加清热解毒的药物,如黄连、黄芩等,或者减少活血化瘀的药物,如当归、鲜地黄等。此外,如果您的脾胃功能不|根据您的症状,我建议您可以按照以下方案使用中药处方进行治疗:药物组成:黄芩、黄连、柴胡、白芍、当归、地黄、鲜地黄、陈皮、甘草、生姜、大枣、白芷、陈皮、甘草等。制备方法:将药材加水煎煮,去渣取汁,每次服用一剂,空心盐汤调下。用药期间,患者应注意避免辛辣刺激性食物,保持情绪稳定,避免过度疲劳。根据您的症状变化,如上腹部疼痛、腹部板硬、短赤小便量增多,可能需要调整治疗方案,如添加清热解毒的药物,如黄连、黄芩等,或者减少活血化瘀的药物,如当归、鲜地黄等。此外,如果您的脾胃功能不佳,可能需要加入益气补血的药物,如山药、茯苓等。在服用药物期间,您应注意观察身体反应,如出现不适症状或者不良反应,应立即停止使用并咨询医生。在服用期间,您应避免食用| 87 | |9|杜某某,女,18岁。因遭受惊吓而精神失常,或哭或笑,惊狂不安。伴见少腹疼痛,月经衍期不至。舌质紫暗,脉弦滑。给出中医诊断和处方建议|根据提供的信息,该患者的证候为精神失常,或哭或笑,惊狂不安,伴见少腹疼痛,月经衍期不至,舌质紫暗,脉弦滑。从中医理论角度来看,证属肝气郁结,气滞血瘀。治当疏肝解郁、活血化瘀。 处方建议: 柴胡疏肝散加减:柴胡10g,香附10g,川芎10g,当归10g,赤芍药10g,红花10g,桃仁10g,延胡索10g,川楝子10g,青皮10g,陈皮10g。 配合针灸治疗:取穴三阴交、合谷、太冲、中脘、气海、关元等。 注意事项:由于患者的病情较为复杂,建议在医生或针灸师指导下进行治疗和调整用药。治疗期间需忌食辛辣、油腻、刺激性食物,保持良好的生活习惯和情绪状态。|根据患者的主诉、病史和体征,结合中医理论分析,该患者的诊断为癫狂-少腹痛综合征。 - 病因:由于患者遭受惊吓,情志失调,加上气滞血瘀,导致心神失守,肝郁气滞,气滞血瘀,从而引发了癫狂-少腹痛综合征的病机。 - 诊断依据:精神失常、哭或笑、惊狂不安等症状表明患者为癫狂证;少腹疼痛、月经衍期不至等症状表明患者为少腹痛证;舌质紫暗、脉弦滑等也支持了此种诊断。 - 治疗建议:中药治疗方面,可选用逍遥散加减、柴胡加芍药汤等方剂,以疏肝解郁、调和气血、安神定志。同时应忌食辛辣刺激性食物,保持充足的睡眠和休息。针灸、艾灸等中医辅助治疗方法也可尝试。在治疗过程中,应及时调整处方,以达到治疗效果。如果病情严重或经过一段时间的治疗仍未见好转,可以考虑中西医结合或其他治疗方法。|根据您的症状,我可以初步判断您患有心神不宁证或气血不足证。心神不宁证的症状包括惊吓、失眠、精神昏昧等,气血不足证的症状包括少腹疼痛、月经衍期不至。根据您的症状和舌质,我建议您尝试以下中药处方进行治疗:当归补心汤。药物组成:当归(炒)1钱,黄耆1钱,人参1钱,白术1钱,茯苓1钱,川芎1钱,熟地黄1钱,陈皮1钱,甘草3分。制备方法:将上述药物加入1盏水,煎煮7分钟,去渣取汁,分2次服用。用法用量:该处方可用于治疗心神不宁证或气血不足证的患者。但是对于其他|根据您的症状,我可以初步判断您患有心神不宁证或气血不足证。心神不宁证的症状包括惊吓、失眠、精神昏昧等,气血不足证的症状包括少腹疼痛、月经衍期不至。根据您的症状和舌质,我建议您尝试以下中药处方进行治疗:当归补心汤。药物组成:当归(炒)1钱,黄耆1钱,人参1钱,白术1钱,茯苓1钱,川芎1钱,熟地黄1钱,陈皮1钱,甘草3分。制备方法:将上述药物加入1盏水,煎煮7分钟,去渣取汁,分2次服用。用法用量:该处方可用于治疗心神不宁证或气血不足证的患者。在使用过程中,需要注意以下事项:在使用此处方时,您应避免与其他中药处方同时使用,以免引起不良反应。在日常生活中,您应保持良好的作息习惯,避免过度疲劳和情绪波动,以促进身体恢复。在用药期间,注意避免食用| 88 | 89 | Our preliminary tests reveal that the ZhongJing large language model demonstrates a certain degree of diagnostic and prescription capabilities not only in gynecology but also in other clinical specialties of traditional Chinese medicine, indicating its potential for generalization. This finding is significant as it suggests that our approach of using a multi-task therapeutic decomposition strategy and a domain-specific million-level instruct data set is effective in enhancing the model's reasoning ability for prescription data and diagnostic thinking logic. It also indicates the potential of large language models (7B parameters level) in fields where professional knowledge has a low tolerance for errors, such as medical and legal scenarios. 90 | 91 | 92 | ## To Do List 93 | - [ ] Adopt a multi-task therapeutic decomposition strategy, based on multidisciplinary data such as internal medicine, gynecology, pediatrics, and orthopedics, to fine-tune the model with a domain-specific million-level instruct data. 94 | - [ ] Continuously iterate and update. Subsequent releases will include Li Shizhen, Wang Shuhe, Huangfu Mi, Sun Simiao, Ge Hong, and Qihuang version of the large language model for Traditional Chinese Medicine. 95 | - [ ] Explore efficient domain fine-tuning strategies. 96 | 97 | ## Manual Evaluation 98 | We had five physicians evaluate from five dimensions. 99 |

evaluation

100 |

Table 3. Human Physicians' Evaluation Results.

101 | 102 | 103 | ## Acknowledgements 104 | The Lora fine-tuning part of this project draws on the ideas of alpaca-lora and Chinese-Vicuna. We would like to express our gratitude to the members of the relevant research teams. 105 | 106 | ## Disclaimer 107 | This research is for academic research use only, commercial use is not allowed without permission, and it is not to be used in medical scenarios or scenarios with potential medical intent for clinical practice. This large language model for Traditional Chinese Medicine is still in the laboratory testing stage. The emerging syndrome classification and prescription generation capabilities at this stage are still rudimentary, and it does not yet have a highly reliable clinical diagnostic and therapeutic capability for gynecology and other clinical specialties. The output results are for internal reference testing only. Real medical diagnosis and decision-making still need to be issued by experienced physicians through a strictly regulated diagnostic and therapeutic process. 108 | 109 | ## Collaboration 110 | Data processing and annotation is one of the important steps in training the model. We sincerely welcome Traditional Chinese Medicine practitioners with strong TCM thinking and innovative spirit to join us. We will also declare corresponding data contributions. We look forward to the day when we can achieve a reliable General Artificial Intelligence for Traditional Chinese Medicine, allowing the ancient Chinese medicine to blend with modern technology and shine anew. This is also the ultimate mission of this project. If interested, please send an email to 21110860035@m.fudan.edu.cn. 111 | 112 | ## Team Introduction 113 | This project was jointly supervised by Professor William Chu from Fuyao University of Science and Technology, Researcher Shuai Xu from the Health Yangtze River Delta Research Institute, Professor Wenqiang Zhang from Fudan University, Postdoctoral Fellows Yan Wang and Suyong Gao, and Professor Haofen Wang from Tongji University. It was completed by Yanlan Kang, Yang Chang, Xukun Zhang, Jingyi Zhu, Jiyuan Fu, Haozhe Xing and Xinji Mai from Fudan University. We extend our gratitude to Professor Gengsheng Liu, Professor Juan Liu, Professor Lin Qin, and Professor Peng Qiu from Shandong University of Traditional Chinese Medicine, as well as Professor Lingshuang Liu from Longhua Hospital affiliated with Shanghai University of Traditional Chinese Medicine for their intellectual guidance. We also thank more than 50 traditional Chinese medicine practitioners led by Sunsi Wu, Xue Zhao, Qingshan Ma, Yide Fang, Yue Chen, and Xiyu Liu from Longhua Hospital affiliated with Shanghai University of Traditional Chinese Medicine; Xiaoyu Ji from Shanghai Hospital of Traditional Chinese Medicine; Baolai Mi from Beijing University of Chinese Medicine; Li Zhou from Huangdao District Hospital of Traditional Chinese Medicine in Qingdao; Yuqi Jiao from Inner Mongolia Medical University; and Yun Rui from the Library of Shanghai University of Traditional Chinese Medicine for their data support, annotations, and model evaluation. We also appreciate Xiao Tu for professional insights and collaborative support in the biomedical field and copyright management. 114 | 115 | ## Citation 116 | If you find this work useful in your research, please cite our repository: 117 | ``` 118 | @misc{CMLM-ZhongJing, 119 | author = {Kang, Yanlan and Chang, Yang and Fu, Jiyuan and Yan, Wang and Wang, Haofen and Zhang, Wenqiang}, 120 | title = {CMLM-ZhongJing: Large Language Model are Good Story Listener}, 121 | year = {2023}, 122 | publisher = {GitHub}, 123 | journal = {GitHub Repository}, 124 | howpublished = {\url{https://github.com/pariskang/CMLM-ZhongJing}} 125 | } 126 | ``` 127 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # CMLM-ZhongJing(中医大语言模型-仲景) 2 | 3 | [中文](https://github.com/pariskang/CMLM-ZhongJing/blob/main/README.md) | [English](https://github.com/pariskang/CMLM-ZhongJing/blob/main/README-EN.md) 4 | 5 | 中医大语言模型,灵感来自中国古代杰出医家张仲景的智慧。 该模型旨在阐明中医博大精深之知识,传承古代智慧与现代技术创新,最终为医学领域提供可信赖和专业的工具。然而,目前所有产生的结果仅供参考,应由经验丰富的专业人员提供诊断和治疗结果和建议。 6 | 7 |

logo

8 |

图1. 由Bing画图输出与人类提示相结合生成的CMLM-ZhongJing的Logo。

9 | 10 | # 训练及推理声明 11 | 12 | 我们开源了针对 **Baichuan2-13B-Chat**、**Qwen1.5-1.8B-Chat** 模型的微调权重,1.8B 模型用户可在一张 Tesla T4 显卡上实现高速推理。通过在我们专有医疗数据集上进行多次迭代训练,确保模型在中医药领域具备较强的理解和生成能力。模型权重可在 Huggingface 平台下载。 13 | 14 | | 版本 | 参数量 | 基座模型 | Huggingface 下载链接 | 15 | |-------------------------|-------------------|-----------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------| 16 | | **ZhongjingGPT1_13B** | 13B | Baichuan2-13B-Chat | [ZhongjingGPT1_13B](https://huggingface.co/CMLM/ZhongjingGPT1_13B) | 17 | | **ZhongJing-2-1_8b** | 1.8B | Qwen1.5-1.8B-Chat | [ZhongJing-2-1_8b](https://huggingface.co/CMLL/ZhongJing-2-1_8b) | 18 | 19 | 也可使用以下链接通过 [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/1DACpocPh9kMVeify-2_fuooOS3RjVgNc) 免费进行 1.8B 模型的 GPU 推理。 20 | 21 | ## WebDemo 22 | 23 | 我们提供了基于Gradio的网页版Demo,网页版Demo提供ZhongJing的单轮和多轮对话功能,现在你可以在本地快速调用ZhongJing进行对话。 24 | 克隆代码库后,使用如下命令启动网页版demo: 25 | 26 | ``` 27 | python WebDemo.py 28 | ``` 29 | 30 | 31 | ## 1.指令数据构建: 32 | 目前大多如Alpaca、Belle等工作基于self-instruct思路。self-instruct思路可以很好的调用大语言模型的知识,生成多样和具有创造性的指令,在常规问答场景可以快速构造海量指令实现指令调优。但在一些专业知识容错率较低的领域,比如医疗和法律场景,幻觉输出会导致噪声指令数据从而影响模型的准确性。典型的情况是比如不当的诊断及处方建议甚至影响患者生命,事实性错误的法律条文和法理的引用会造成权益人的败诉。因此,如何快速调用OpenAI API且不牺牲指令数据的专业性成为指令数据构造及标注等场景的重要研究方向。以下将简述我们的初步实验探索。 33 | 34 |

strategy

35 |

图2. 人类医生参与的多任务治疗行为分解指令构建策略。

36 | 37 | #### 1.1多任务诊疗行为分解instruction指令构建策略 38 | 人类在记忆和理解时需要构建各种情景和故事,以隐式编码知识信息。记忆的清晰程度取决于学习的持续过程和丰富程度。穿插学习、间隔练习和多样化学习可以提升知识的巩固程度,由此形成深刻的领域知识理解能力。我们的思路是借鉴人类记忆知识的过程,采用专业表格,借助大语言模型的语言表征能力,严格设置特定的prompt模板,使得模型基于中医妇科方药表格数据生成包括患者治疗故事、诊断分析、诊断治疗预期结果、处方功用、互动故事、患者治疗故事、叙事医学、舌脉象、诊疗方案制定、批判性思维、随访、处方、药物用量、个例研究、真实世界问题、病因病机等15个场景,以促进模型对中医方药数据及诊断思维逻辑的推理能力。 39 | ``` 40 | { 41 | "instruction": "我对三元汤的全过程很好奇,能否从简介、病历、症状、诊断和治疗,以及结果讨论等方面给我详细介绍?", 42 | "input": "", 43 | "output": "三元汤是一种古老的中药处方,最早出现在《保命集》卷下。它由多种中药组成,主要用于治疗产后日久虚劳,脉浮疾等症状。患者为产后日久虚劳,脉浮疾。脉浮疾。根据李女士的病史和症状,我决定使用三元汤来治疗她的病症。我按照处方中的药物组成和用法用量,将柴胡、黄芩、人参、半夏、甘草、川芎、芍药、熟地黄、当归等中药煎煮后,让李女士每天服用两次。在治疗过程中,我还注意了李女士的饮食和休息,让她多吃一些易于消化的食物,保证充足的睡眠和休息。经过一个月的治疗,李女士的症状得到了明显的改善。她的精神状态更加稳定,食欲也有所增加,头晕乏力的症状也减轻了很多。我认为,三元汤的治疗效果主要得益于其中的多种中药的协同作用,能够调节李女士的身体机能,增强体质,提高免疫力。同时,我也注意到,李女士的饮食和休息也对治疗效果有一定的影响。因此,在使用中药治疗疾病时,我们也应该注意患者的全面治疗,包括饮食、休息等方面。" 44 | } 45 | ``` 46 | 47 | #### 1.2 中医常识指令数据构建策略 48 | 此外,我们还增加了基于中医古籍内容、名词解释、症状近义词、反义词、证候、症状、治法等指令内容,为了形成对照试验,我们对这部分仅仅采用一种指令模板以表征数据,同时这部分数据的数量约为8万条,明显多于上述策略构建的指令数量,以下为指令具体数量及tokens数量信息。 49 | ``` 50 | { 51 | "instruction": "请回答以下有关于中医疾病名词解释的相关问题:", 52 | "input": "(肺风)粉刺属于哪个分类?", 53 | "output": "因肺风、胃热或肝瘀所致。以面及背部见黑头或白头粉刺、丘疹、脓疱、结节、囊肿及疤痕为主要表现的皮肤疾病。" 54 | } 55 | ``` 56 | 57 | | 文件名 | 总Tokens数量 | 输入数量 | 指令数量 | 输出数量 | 58 | | --- | --- | --- | --- | --- | 59 | | patient_therapeutic_story_data1.json | 62722 | 208 | 208 | 208 | 60 | | diagnostic_analysis.json | 1492105 | 6592 | 6592 | 6592 | 61 | | formula_funtion_data.json | 100533 | 2115 | 2115 | 2115 | 62 | | diagnosis_treatment_expected_result_formatted_... | 33822 | 153 | 153 | 153 | 63 | | Chinese Medicine Dictionary.json | 2188672 | 20376 | 20376 | 20376 | 64 | | Antonyms.json | 272 | 9 | 9 | 9 | 65 | | Interactive Story Instructed Data.json | 55262 | 219 | 219 | 219 | 66 | | patient_therapeutic_story_data3.json | 50785 | 660 | 660 | 660 | 67 | | Syndrome Noun Explanation.json | 67443 | 976 | 976 | 976 | 68 | | narrative_medicine_formatted_data.json | 61336 | 213 | 213 | 213 | 69 | | Chinese Medicine Symptom Synonyms.json | 1515796 | 27650 | 27650 | 27650 | 70 | | Synonyms2.json | 111186 | 2217 | 2217 | 2217 | 71 | | Ancient Books Content.json | 15971297 | 31395 | 31395 | 31395 | 72 | | tongue_palse.json | 328597 | 3723 | 3723 | 3723 | 73 | | therapeutic_template_making.json | 335602 | 4929 | 4929 | 4929 | 74 | | patient_therapeutic_story_data2.json | 50785 | 660 | 660 | 660 | 75 | | critical_thinking_data.json | 31502 | 229 | 229 | 229 | 76 | | follow_up_data.json | 504717 | 5990 | 5990 | 5990 | 77 | | prescription_data.json | 107694 | 2898 | 2898 | 2898 | 78 | | herb_dosage.json | 564394 | 5973 | 5973 | 5973 | 79 | | case_study_data.json | 58319 | 243 | 243 | 243 | 80 | | Gynecology Synonyms.json | 29740 | 543 | 543 | 543 | 81 | | real_world_problem.json | 1493551 | 7990 | 7990 | 7990 | 82 | | disease_mechanism.json | 997377 | 8024 | 8024 | 8024 | 83 | | Treatment Noun Explanation Cleaned Data.json | 81211 | 1123 | 1123 | 1123 | 84 | | Total | 26294720 | 135108 | 135108 | 135108 | 85 | 86 | ## 2.模型效果对比: 87 | 我们的测试数据基于真实高水平中医师的医学案例,通常为省级名老中医或国医大师级别的个案报告,以保证一定层面专业性。这样的数据较严格的属于分布外数据(学科分布外与训练数据集分布外,有别于传统训练集和验证集)。通过与文心一言、星火等大语言模型进行初步对比,发现我们的模型在基于300条中医方药数据构建的多样化诊疗分解指令数据集上具备良好的泛化能力,或许初步证实大语言模型与和人类一样,对于多元形式表征的文本内容更有助于学习隐喻的知识及逻辑。 88 | 89 | | | | | | | | 90 | |-|-|-|-|-|-| 91 | |序号|提问|文心一言|星火认知|仲景(384 Tokens)|仲景(512 Tokens)| 92 | |1|张某,男,27岁。患者因昨晚饮酒发热,渴凉水数杯,早晨腹痛腹泻,泻下如水色黄,腹中辘辘有声,恶心欲吐,胸中满闷不舒,口干欲冷饮,舌质红、苔白腻,脉沉细数。给出中医诊断和处方建议|中医诊断:酒积湿热 处方建议: 治法:清热解毒,除湿止泻。 方剂:选用葛根芩连汤加减。 药物组成:葛根、黄芩、黄连、茯苓、薏苡仁、木瓜、陈皮、白芍、生姜、大枣等。 剂量与用法:以水煎服,每日1-2剂,每次服用100-200毫升,每日3-4次。 解释: 方解:方中葛根可解肌退热、升清止泻;黄芩、黄连可清热燥湿、解毒止泻;茯苓、薏苡仁可利水渗湿、健脾止泻;木瓜可化湿和胃、止呕止泻;陈皮可理气健脾、燥湿化痰;白芍可柔肝止痛、敛阴止泻;生姜可温中散寒、和胃止呕;大枣可补中益气、调和脾胃。 加减用药:若患者腹痛明显,可加用延胡索、川楝子等以增强止痛作用;若患者腹泻严重,可加用诃子、石榴皮等以涩肠止泻;若患者口干舌燥,可加用石膏、知母等以清热生津。 注意事项:建议患者在服药期间忌食辛辣油腻食物,避免饮酒及生冷食物,注意饮食卫生,保持心情舒畅。|根据患者的主诉、病史和体征,结合中医理论分析,该患者的诊断为湿热泄泻。 - 病因:饮酒过度,感受寒湿之邪,加上饮食不节,导致湿热内生,蕴结于脾胃,引起了泄泻的症状。 - 诊断依据:腹中辘辘有声,泻下如水色黄,口干欲冷饮,舌质红、苔白腻,脉沉细数等表现,符合湿热泄泻的证候特点。 - 治疗建议:中药治疗方面,可选用藿香正气散加减、二妙散等方剂,以宣通脾肺、祛湿止泻。同时应忌食辛辣、油腻、生冷之物,多饮温开水,保持休息。针灸、艾灸等中医辅助治疗方法也可尝试。|根据患者的症状,可以初步判断为脾胃虚弱证、湿热内蕴证。进一步了解患者的病史和体质,发现其是由于饮酒过度导致肝胆风热,从而引起上述症状。因此,可以考虑使用伏牛花散来治疗。伏牛花散是一种中药方,主要成分为伏牛花、山茵陈、桑寄生、白牵牛、川芎、白僵蚕、蝎梢、荆芥穗等。这些药物具有清热解毒、活血化瘀的功效,可以清热解毒,活血化瘀,从而达到治疗疾病的目的。制备方法为将伏牛花、山茵陈、桑寄生、白牵牛、川芎、白僵蚕、蝎梢、荆芥穗等药材研磨成细|根据患者的症状,可以初步判断为脾胃虚弱证、湿热内蕴证。进一步了解患者的病史和体质,发现其是由于饮酒过度导致肝胆风热,从而引起上述症状。因此,可以考虑使用伏牛花散来治疗。伏牛花散是一种中药方,主要成分为伏牛花、山茵陈、桑寄生、白牵牛、川芎、白僵蚕、蝎梢、荆芥穗等。这些药物具有清热解毒、活血化瘀的功效,可以清热解毒,活血化瘀,从而达到治疗疾病的目的。制备方法为将伏牛花、山茵陈、桑寄生、白牵牛、川芎、白僵蚕、蝎梢、荆芥穗等药材按比例混合,研磨成细末,取适量,每次服用3-5钱,空心、食前温酒调下。在用药过程中,应注意避免过量使用,以免出现不良反应。同时,患者在日常生活中应注意饮食清淡,避免辛辣刺激性食物,保持情| 93 | |2|于某,男,62岁。患冠心病两年,服西药治疗,一日三次,从未有断,然胸憋心悸,一直不止。近月余,每至夜则咳嗽哮喘,痰涎清稀如水,倚息不能平卧,胸憋心悸尤甚。白昼则症状减轻。询知腰脊酸困,背畏风寒,时眩晕,手足心微热,口渴欲饮,但不多饮,亦不思冷,纳便尚可,舌尖略红,苔白腻,脉沉缓。给出中医诊断和处方建议|中医诊断:痰饮咳嗽(证属脾肾阳虚,饮邪上犯) 处方建议: 温补脾肾,化痰止咳:选用苓桂术甘汤加减。 温阳化饮,止咳平喘:选用真武汤加减。 补肾纳气,止咳平喘:选用肾气丸加减。 燥湿化痰,降逆止咳:选用二陈汤加减。 补脾益肺,止咳化痰:选用六君子汤加减。 以上建议仅供参考,具体用药请遵医嘱。|根据患者的主诉、病史和体征,结合中医理论分析,该患者的诊断为心肺气阴两虚。 - 病因:冠心病导致心脏气血不足,加上长期服用药物,伤及气血,加之外感风寒湿邪,耗伤体内阴液,导致心肺气阴两虚。 - 诊断依据:胸憋心悸、咳嗽哮喘、口渴欲饮、舌尖略红、苔白腻、脉沉缓等表现,符合心肺气阴两虚的证候特点。 - 治疗建议:中药治疗方面,可选用生脉散加减、六味地黄丸等方剂,以滋补心肺、益气养阴。同时应忌食辛辣刺激性食物,保持充足的睡眠和休息。针灸、艾灸等中医辅助治疗方法也可尝试。患者还需注意保暖,避免受凉感冒,加强身体锻炼,促进气血循环。|根据患者的症状,可以初步判断为腰脊酸困、胸憋心悸、痰涎清稀如水、倚息不能平卧、手足心微热、口渴欲饮、亦不思冷等证候类型。进一步询问患者的病史、饮食习惯、生活习惯等,以及进行望、闻、问、切四诊,确定患者的中医诊断。根据中医诊断,可以选择相应的中药方进行治疗。其中,当归散补血汤是一种常用的中药方,具有补血安胎、调经止血的功效,适用于治疗冠心病等症状。药物组成为当归、川芎、白芍、熟地黄、黄芩、大黄、茯苓、柴胡、半夏、甘草、红花、益母草、熟地黄、当归、川芎、白芍、熟地黄|根据患者的症状,可以初步判断为腰脊酸困、胸憋心悸、痰涎清稀如水、倚息不能平卧、手足心微热、口渴欲饮、亦不思冷等证候类型。进一步询问患者的病史、饮食习惯、生活习惯等,以及进行望、闻、问、切四诊,确定患者的中医诊断。根据中医诊断,可以选择相应的中药方进行治疗。其中,当归散补血汤是一种常用的中药方,具有补血安胎、调经止血的功效,适用于治疗冠心病等症状。药物组成为当归、川芎、白芍、熟地黄、黄芩、大黄、茯苓、柴胡、半夏、甘草、红花、益母草、熟地黄、当归、川芎、白芍、熟地黄、黄芩、大黄、茯苓、柴胡、半夏、甘草、红花、益母草等。制备方法为水煎服用,用法用量为一次服用一剂,每日3次。需要注意的是,该处方有一定的用药禁忌,如孕妇、哺乳期妇女、体弱者等不| 94 | |3|戴某某,女,22岁,未婚。三年来行经腹痛,第一、二天痛剧,开始血量少,待三日血量渐多而痛稍减,色谈有块,周期尚准。平素喜暖畏寒,体倦乏力,不耐劳累,经至必服止痛片及中药,以求暂安。此次行经少腹痛剧,虽已过十余天,少腹仍绵绵作痛,时有发胀,舌淡苔白,脉细而迟。给出中医诊断和处方建议|中医诊断:痛经(证属寒凝血瘀型) 处方建议: 治法:温经止痛,化瘀通络。 方剂:选用温经汤加减。 药物组成:当归、白芍、川芎、桂枝、细辛、附子、干姜、吴茱萸、牡丹皮、生地黄、阿胶、荆芥穗、炙甘草等。 剂量与用法:以水煎服,每日1剂,每次服用100-200毫升,每日3-4次。 解释: 方解:方中当归、白芍、川芎、桂枝、细辛、附子、干姜、吴茱萸等药味辛性温,可温经止痛,化瘀通络;牡丹皮、生地黄、阿胶等药味甘性寒,可滋阴养血,清热化瘀;荆芥穗可祛风散寒,理气止痛;炙甘草可调和诸药。 加减用药:若腹痛较剧,可加用乌药、小茴香等以增强止痛作用;若月经量多,可加用蒲黄、五灵脂等以活血化瘀;若经前乳房胀痛明显,可加用柴胡、黄芩等以疏肝理气。 注意事项:建议患者在服药期间忌食生冷刺激性食物,注意保暖,避免过度劳累,保持心情舒畅。|根据患者的主诉、病史和体征,结合中医理论分析,该患者的诊断为气滞血瘀型痛经。 - 病因:由于情志不畅,饮食不节,加上气血运行不畅,导致气滞血瘀,引起了痛经的症状。 - 诊断依据:经期腹痛,经量少,色谈有块,舌淡苔白,脉细而迟等表现,符合气滞血瘀型痛经的证候特点。 - 治疗建议:中药治疗方面,可选用逍遥散加减、当归生姜羊肉汤等方剂,以疏肝理气、活血化瘀。同时应忌食辛辣刺激性食物,保持充足的睡眠和休息。针灸、艾灸等中医辅助治疗方法也可尝试。患者还需注意保暖,避免受凉感冒,加强身体锻炼,促进气血循环。在治疗过程中,可以逐渐减少止痛药的使用,以免对肝肾造成不良影响。|根据您的症状,我建议您可以按以下方法使用当归内补丸:药物组成:当归、川芎、白芍、鲜地黄、黄芩、白术、茯苓,其剂量为:当归4两,川芎4两,白芍4两,鲜地黄4两,黄芩4两,白术4两,茯苓4两。制备方法:将以上药材研磨成细末,每次服用1丸,用温开水或白酒送服。如果您还有其他疾病或者正在服用其他药物,请告知我,以便更好地治疗您的病症。注意:如果您出现了不适症状,如头晕、恶心、呕吐、腹泻等,请立即停止使用并咨询医生。此处方也包含某些药材,如当归、川芎、白芍、鲜地黄、黄芩、白术、茯苓等,可能会引起一些|根据您的症状,我建议您可以按以下方法使用当归内补丸:药物组成:当归、川芎、白芍、鲜地黄、黄芩、白术、茯苓,其剂量为:当归4两,川芎4两,白芍4两,鲜地黄4两,黄芩4两,白术4两,茯苓4两。制备方法:将以上药材研磨成细末,每次服用1丸,用温开水或白酒送服。如果您还有其他疾病或者正在服用其他药物,请告知我,以便更好地治疗您的病症。注意:如果您出现了不适症状,如头晕、恶心、呕吐、腹泻等,请立即停止使用并咨询医生。此处方也包含某些药材,如当归、川芎、白芍、鲜地黄、黄芩、白术、茯苓等,可能会引起一些副作用,如口干、口渴、恶心、呕吐、腹泻等,因此建议您在医生的指导下使用。同时,您应注意饮食调理,多食用易消化、富含营养的食物,避免过度劳累,保持良好的心态和作息规律。如| 95 | |4|刘某某,女,12岁。初春感受风寒邪气,头痛发热,家人自购“平热散”,服药后汗出较多,随后发热消退。但第二天发热恶寒如疟疾之发作,上午一次,下午二次。脉浮略数,舌苔薄白而润。给出中医诊断和处方建议|中医诊断:表寒里饮 处方建议: 疏风散寒,解表化饮:选用麻黄汤加减。 调和营卫,益气健脾:选用桂枝加黄芪汤加减。 以上建议仅供参考,具体用药请遵医嘱。|根据患者的主诉、病史和体征,结合中医理论分析,该患者的诊断为风寒感冒。 - 病因:感受风寒邪气,加上自购的平热散不当使用,损伤了正气,使得邪气得以内陷而发病。 - 诊断依据:发热恶寒如疟疾之发作,脉浮略数,舌苔薄白而润等表现,符合风寒感冒的证候特点。 - 治疗建议:中药治疗方面,可选用麻黄汤加减、桂枝汤等方剂,以解表发汗、温通阳气。同时应忌食辛辣刺激性食物,保持充足的睡眠和休息。针灸、艾灸等中医辅助治疗方法也可尝试。患者还需注意保暖,避免受凉感冒,加强身体锻炼,促进气血循环。在治疗过程中,应根据病情变化及时调整处方,以达到治疗效果。|根据您的症状,我建议您使用刘某的中药方「平热散」进行治疗。该方由香附、川芎、当归、柴胡、秦艽、熟地黄、新疆延胡索、苦楝皮和槟榔组成。这些药物具有清热解毒、燥湿止带的功效,能够清除体内的风热毒素,从而改善您的头痛和发热等症状。建议您每次服用3钱,用水1盏煎8分钟后服用。在服用过程中,注意避免食用辛辣刺激性食物,以免影响药效。同时,建议您适当休息,保持心情舒畅,避免过度疲劳。如果症状没有改善或加重,请及时停止服用并咨询医生。此处方只适用于一定类型的症状,如初春感| | 96 | |5|周某某.男,29岁。因突起耳聋近—月,经他医用益气聪明汤等治疗,耳聋如故,痛苦不堪,后延余诊治。细询知病起于感冒过汗之后。刻诊:白诉耳聋,并觉心悸乏力,稍有畏寒感,舌淡红,苔薄白。脉细软无力。给出中医诊断和处方建议|中医诊断:气虚感冒 处方建议: 益气解表,聪耳明目:选用益气聪明汤加减。 调和营卫,益气健脾:选用桂枝加黄芪汤加减。 以上建议仅供参考,具体用药请遵医嘱。|根据患者的主诉、病史和体征,结合中医理论分析,该患者的诊断为中耳炎。 - 病因:感冒后因风寒湿邪侵袭,加上体质虚弱,使得外邪侵入耳窍,导致中耳炎的症状出现。 - 诊断依据:突起耳聋,心悸乏力,畏寒感等表现,舌淡红,苔薄白,脉细软无力等证候特点,均符合中耳炎的诊断标准。 - 治疗建议:中药治疗方面,可选用清热解毒汤加减、龙胆泻肝汤等方剂,以清热解毒、祛湿通窍。同时应忌食辛辣刺激性食物,保持充足的睡眠和休息。针灸、艾灸等中医辅助治疗方法也可尝试。患者还需注意保暖,避免受凉感冒,加强身体锻炼,促进气血循环。在治疗过程中,应及时调整处方,以达到治疗效果。如果病情严重,可以考虑手术治疗。|根据患者的症状,可以初步判断为白诉耳聋证。进一步了解患者的病因是感冒过汗,病机是气滞血瘀。因此,应使用清益气血、润肺止咳、化痰止渴、活血化瘀等中药方,以治疗白诉耳聋证。其中,清益气血、润肺止咳、化痰止渴、活血化瘀等中药方具有润肺止咳、活血化瘀的功效,能够调和气血、活血化瘀,从而治疗白诉耳聋证。需要注意的是,使用过程中应避免用药过量,以免出现药物过敏等副作用。同时,患者应注意保持良好的生活习惯,避免过度劳累和情绪波动,以促进病情的恢复。|根据患者的症状,可以初步判断为白诉耳聋证。进一步了解患者的病因是感冒过汗,病机是气滞血瘀。因此,应使用清益气血、润肺止咳、化痰止渴、活血化瘀等中药方,以治疗白诉耳聋证。其中,清益气血、润肺止咳、化痰止渴、活血化瘀等中药方具有润肺止咳、活血化瘀的功效,能够调和气血、活血化瘀,从而治疗白诉耳聋证。需要注意的是,使用过程中应避免用药过量,以免出现药物过敏等副作用。同时,患者应注意保持良好的生活习惯,避免过度劳累和情绪波动,以促进病情的康复。| 97 | |6|戴某,女,30岁。病恶寒发热无汗,卧床2日。询病史一年来常吐痰涎,咳引胸痛,且闭经—年。病者前额肌肤灼热而躯体覆以棉被,脉紧而滑。给出中医诊断和处方建议|根据描述,该病患的症状包括恶寒发热无汗、吐痰涎、胸痛、闭经等,属于外感风寒表实证。建议采取发汗解表、散寒除湿的治疗方法,具体处方如下: 药方组成:荆芥、防风、羌活、前胡、川芎、茯苓、桔梗、枳壳、橘红、杏仁、生姜、薄荷。 药方解释:荆芥、防风、羌活和前胡可用于发表散寒、宣肺化痰,川芎能够活血行气、止痛,茯苓利水渗湿、健脾补中,桔梗宣肺化痰、排脓,枳壳理气宽中、消除胸胁胀痛,橘红消食导滞、祛痰止咳,杏仁止咳平喘,生姜发散风寒、温中止呕,薄荷疏风散热。这些药物的配伍可以达到发散风寒、理气化痰、止咳平喘的功效。 注意事项:由于病患脉紧而滑,建议在服药期间避免寒凉生冷食物,注意保暖,多休息,以助身体恢复。同时,建议在医生指导下使用药物。|根据患者的主诉、病史和体征,结合中医理论分析,该患者的诊断为肺结核。 - 病因:由于患者长期有咳嗽、吐痰涎等症状,加上闭经一年,容易导致体内阴阳失衡,加上感受寒邪,引发了肺结核的症状。 - 诊断依据:恶寒发热无汗,卧床2日,咳引胸痛,闭经一年,前额肌肤灼热,脉紧而滑等表现,均符合肺结核的证候特点。 - 治疗建议:中药治疗方面,可选用人参归脾汤加减、百合固金汤等方剂,以补气养血、清热解毒。同时应忌食辛辣刺激性食物,保持充足的睡眠和休息。针灸、艾灸等中医辅助治疗方法也可尝试。患者还需注意保暖,避免受凉感冒,加强身体锻炼,促进气血循环。在治疗过程中,应及时进行相关检查和隔离措施,以防止病情恶化和传染他人。|对于戴某,女,30岁。病恶寒发热无汗,卧床2日。询病史一年来常吐痰涎,咳引胸痛,且闭经—年。,中医诊断为气血两虚证,处方应该根据患者的情况进行治疗,可以考虑使用当归补血汤。此处方主要成分包括当归、川芎、白芍、熟地黄、新疆延胡索、柴胡、厚朴、香附、肉桂、枳壳、牡丹皮、甘草、白芷、芥穗等药物。制备方法为水煎服用,用法用量为一次服用一剂,每日三次。需要注意的是,该处方有一定的用药禁忌,如孕妇、哺乳期妇女、体质虚弱、脾胃虚弱、气滞血瘀者禁|对于戴某,女,30岁。病恶寒发热无汗,卧床2日。询病史一年来常吐痰涎,咳引胸痛,且闭经—年。,中医诊断为气血两虚证,处方应该根据患者的情况进行治疗,可以考虑使用当归补血汤。此处方主要成分包括当归、川芎、白芍、熟地黄、新疆延胡索、柴胡、厚朴、香附、肉桂、枳壳、牡丹皮、甘草、白芷、芥穗等药物。制备方法为水煎服用,用法用量为一次服用一剂,每日三次。需要注意的是,该处方有一定的用药禁忌,如孕妇、哺乳期妇女、体质虚弱、脾胃虚弱、气滞血瘀者禁用。同时,患者在日常生活中应注意保持良好的作息习惯,避免过度疲劳和精神紧张,同时应注意饮食调理,避免辛辣刺激性食物,多食用富含营养的食物,如瘦肉、鸡蛋、豆腐| 98 | |7|陈某某,男,45岁。患癫痫已三年,为受惊后而起,最初每月数发,近半年来每天发作,发则不省人事,惊叫抽搐,项背强直,口吐涎沫,每次发作约持续八至十二分钟,屡用西药,未能控制。口渴自汗。苔薄白,脉浮滑。给出中医诊断和处方建议|根据提供的信息,该患者的证候为癫痫,同时存在惊恐、项背强直、口吐涎沫、自汗等症状,苔薄白,脉浮滑。从中医理论角度来看,证属心胆气虚,治当镇惊安神、益气养心。 处方建议: 镇惊安神汤:当归10g,龙眼肉10g,茯神10g,远志10g,枣仁10g,生地10g,柏子仁10g,夜交藤20g,合欢皮20g,生龙骨20g,生牡蛎20g,琥珀3g。 配合针灸治疗:取穴人中、涌泉、合谷等。 注意事项:由于患者的病情较为复杂,建议在医生或针灸师指导下进行治疗和调整用药。治疗期间需忌食辛辣、油腻、刺激性食物,保持良好的生活习惯和情绪状态。|根据患者的主诉、病史和体征,结合中医理论分析,该患者的诊断为癫痫。 - 病因:由于患者受惊后而起,长期未能得到有效治疗,导致肝郁气滞,加上脾虚湿盛,阴阳失衡,形成了癫痫的病机。 - 诊断依据:每月数发,近半年来每天发作,发则不省人事,项背强直,口吐涎沫,每次发作约持续八至十二分钟等表现,均符合癫痫的证候特点。脉浮滑、苔薄白等也支持了此种诊断。 - 治疗建议:中药治疗方面,可选用天麻钩藤饮加减、安神定志丸等方剂,以祛风止痉、益气养血、安神定志。同时应忌食辛辣刺激性食物,保持充足的睡眠和休息。针灸、艾灸等中医辅助治疗方法也可尝试。患者还需注意避免精神刺激和劳累过度,加强身体锻炼,促进气血循环。在治疗过程中,应及时调整处方,以达到治疗效果。如果病情严重或经过一段时间的治疗仍未见好转,可以考虑手术治疗或其他中西医结合的治疗方式。|根据患者的症状,中医诊断为癫痫证。根据该情况,可以考虑使用当归补血汤进行治疗。当归补血汤的药物组成包括当归、黄芪、党参、丹皮、川芎、芍药、熟地黄、新疆延胡索、木香、砂仁、黄芩、甘草等,这些药物具有补血、活血的功效,可以补充患者的血液,增强身体充生,从而治疗癫痫。制备方法为将所有药材加水煎煮8分钟后,去渣取汁,分三次服用。注意用药禁忌:无特殊禁忌。用药同时需要注意用药禁忌,如出现不适症状应立即停止使用并咨询医生。药物性味:当归补血汤|根据患者的症状,中医诊断为癫痫证。根据该情况,可以考虑使用当归补血汤进行治疗。当归补血汤的药物组成包括当归、黄芪、党参、丹皮、川芎、芍药、熟地黄、新疆延胡索、木香、砂仁、黄芩、甘草等,这些药物具有补血、活血的功效,可以补充患者的血液,增强身体充生,从而治疗癫痫。制备方法为将所有药材加水煎煮8分钟后,去渣取汁,分三次服用。注意用药禁忌:无特殊禁忌。用药同时需要注意用药禁忌,如出现不适症状应立即停止使用并咨询医生。药物性味:当归补血汤的药物组成包括当归、黄芪、党参、丹皮、川芎、芍药、熟地黄、新疆延胡索、木香、甘草等,这些药物具有补血、活血的功效,可以补充患者的血液,增强身体充| 99 | |8|李某某,女,15岁。病起于外感,高热(39.5℃ ),头痛,肢体酸楚。至五六日后,突发上腹部疼痛,午后发热更甚,切脉弦紧有力,舌质红绛而苔腻,皮肤亢热,腹部板硬疼痛拒按,大便已七日未解,小便短赤,时发谵语。给出中医诊断和处方建议|根据提供的信息,该患者的证候为外感引起的高热、头痛、肢体酸楚,以及突发上腹部疼痛、午后发热更甚、大便秘结、小便短赤、腹部板硬疼痛拒按、舌质红绛而苔腻、脉弦紧有力。从中医理论角度来看,证属阳明腑实热证,治当清热解毒、通便泄热。 处方建议: 口服大承气汤加减:大黄10g,芒硝10g,厚朴10g,枳实10g,黄芩10g,黄连10g,石膏20g,知母10g,玄明粉10g,生地10g,丹皮10g。 配合针灸治疗:取穴合谷、支沟、曲池、内庭等。 注意事项:由于患者的病情较为复杂,建议在医生或针灸师指导下进行治疗和调整用药。治疗期间需忌食辛辣、油腻、刺激性食物,保持良好的生活习惯和情绪状态。|根据患者的主诉、病史和体征,结合中医理论分析,该患者的诊断为痢疾。 - 病因:由于患者感受外邪,加上饮食不洁,湿气内生,脾胃失调,湿热蕴结于肠,导致了痢疾的发生。 - 诊断依据:高热、头痛、肢体酸楚等症状表明患者为感染性疾病。突发上腹部疼痛、拒按腹部板硬疼痛以及大便七日未解等症状表明患者为痢疾。舌质红绛而苔腻、皮肤亢热、小便短赤等症状也支持了此种诊断。脉象弦紧有力也是痢疾的典型表现之一。 - 治疗建议:中药治疗方面,可选用芍药汤加减、白头翁汤等方剂,以清热解毒、祛湿通便。同时应忌食辛辣刺激性食物,保持充足的水分摄入,加强身体锻炼,促进气血循环。针灸、艾灸等中医辅助治疗方法也可尝试。在治疗过程中,应及时调整处方,以达到治疗效果。如果病情严重或经过一段时间的治疗仍未见好转,可以考虑中西医结合或其他治疗方法。|根据您的症状,我建议您可以按照以下方案使用中药处方进行治疗:药物组成:黄芩、黄连、柴胡、白芍、当归、地黄、鲜地黄、陈皮、甘草、生姜、大枣、白芷、陈皮、甘草等。制备方法:将药材加水煎煮,去渣取汁,每次服用一剂,空心盐汤调下。用药期间,患者应注意避免辛辣刺激性食物,保持情绪稳定,避免过度疲劳。根据您的症状变化,如上腹部疼痛、腹部板硬、短赤小便量增多,可能需要调整治疗方案,如添加清热解毒的药物,如黄连、黄芩等,或者减少活血化瘀的药物,如当归、鲜地黄等。此外,如果您的脾胃功能不|根据您的症状,我建议您可以按照以下方案使用中药处方进行治疗:药物组成:黄芩、黄连、柴胡、白芍、当归、地黄、鲜地黄、陈皮、甘草、生姜、大枣、白芷、陈皮、甘草等。制备方法:将药材加水煎煮,去渣取汁,每次服用一剂,空心盐汤调下。用药期间,患者应注意避免辛辣刺激性食物,保持情绪稳定,避免过度疲劳。根据您的症状变化,如上腹部疼痛、腹部板硬、短赤小便量增多,可能需要调整治疗方案,如添加清热解毒的药物,如黄连、黄芩等,或者减少活血化瘀的药物,如当归、鲜地黄等。此外,如果您的脾胃功能不佳,可能需要加入益气补血的药物,如山药、茯苓等。在服用药物期间,您应注意观察身体反应,如出现不适症状或者不良反应,应立即停止使用并咨询医生。在服用期间,您应避免食用| 100 | |9|杜某某,女,18岁。因遭受惊吓而精神失常,或哭或笑,惊狂不安。伴见少腹疼痛,月经衍期不至。舌质紫暗,脉弦滑。给出中医诊断和处方建议|根据提供的信息,该患者的证候为精神失常,或哭或笑,惊狂不安,伴见少腹疼痛,月经衍期不至,舌质紫暗,脉弦滑。从中医理论角度来看,证属肝气郁结,气滞血瘀。治当疏肝解郁、活血化瘀。 处方建议: 柴胡疏肝散加减:柴胡10g,香附10g,川芎10g,当归10g,赤芍药10g,红花10g,桃仁10g,延胡索10g,川楝子10g,青皮10g,陈皮10g。 配合针灸治疗:取穴三阴交、合谷、太冲、中脘、气海、关元等。 注意事项:由于患者的病情较为复杂,建议在医生或针灸师指导下进行治疗和调整用药。治疗期间需忌食辛辣、油腻、刺激性食物,保持良好的生活习惯和情绪状态。|根据患者的主诉、病史和体征,结合中医理论分析,该患者的诊断为癫狂-少腹痛综合征。 - 病因:由于患者遭受惊吓,情志失调,加上气滞血瘀,导致心神失守,肝郁气滞,气滞血瘀,从而引发了癫狂-少腹痛综合征的病机。 - 诊断依据:精神失常、哭或笑、惊狂不安等症状表明患者为癫狂证;少腹疼痛、月经衍期不至等症状表明患者为少腹痛证;舌质紫暗、脉弦滑等也支持了此种诊断。 - 治疗建议:中药治疗方面,可选用逍遥散加减、柴胡加芍药汤等方剂,以疏肝解郁、调和气血、安神定志。同时应忌食辛辣刺激性食物,保持充足的睡眠和休息。针灸、艾灸等中医辅助治疗方法也可尝试。在治疗过程中,应及时调整处方,以达到治疗效果。如果病情严重或经过一段时间的治疗仍未见好转,可以考虑中西医结合或其他治疗方法。|根据您的症状,我可以初步判断您患有心神不宁证或气血不足证。心神不宁证的症状包括惊吓、失眠、精神昏昧等,气血不足证的症状包括少腹疼痛、月经衍期不至。根据您的症状和舌质,我建议您尝试以下中药处方进行治疗:当归补心汤。药物组成:当归(炒)1钱,黄耆1钱,人参1钱,白术1钱,茯苓1钱,川芎1钱,熟地黄1钱,陈皮1钱,甘草3分。制备方法:将上述药物加入1盏水,煎煮7分钟,去渣取汁,分2次服用。用法用量:该处方可用于治疗心神不宁证或气血不足证的患者。但是对于其他|根据您的症状,我可以初步判断您患有心神不宁证或气血不足证。心神不宁证的症状包括惊吓、失眠、精神昏昧等,气血不足证的症状包括少腹疼痛、月经衍期不至。根据您的症状和舌质,我建议您尝试以下中药处方进行治疗:当归补心汤。药物组成:当归(炒)1钱,黄耆1钱,人参1钱,白术1钱,茯苓1钱,川芎1钱,熟地黄1钱,陈皮1钱,甘草3分。制备方法:将上述药物加入1盏水,煎煮7分钟,去渣取汁,分2次服用。用法用量:该处方可用于治疗心神不宁证或气血不足证的患者。在使用过程中,需要注意以下事项:在使用此处方时,您应避免与其他中药处方同时使用,以免引起不良反应。在日常生活中,您应保持良好的作息习惯,避免过度疲劳和情绪波动,以促进身体恢复。在用药期间,注意避免食用| 101 | 102 | 我们的初步测试发现仲景大语言模型在妇科以外的中医临床专科领域也具备一定诊断和处方能力,具备一定的泛化能力。这一发现较有意义,因为它表明,我们使用多任务治疗分解策略和特定领域的百万级指导数据集的方法在增强模型对处方数据和诊断思维逻辑的推理能力方面是有效的。它还表明了在7B参数量的大型语言模型在专业知识对错误容忍度较低的领域的潜力,例如医疗和法律场景。 103 | 104 | ## 待做清单 105 | - [ ] 采用多任务诊疗分解策略,基于内外妇儿骨等多学科数据构建领域百万级instruct数据微调模型 106 | - [ ] 基于llama2、百川-7B等模型持续迭代更新,后续将发布李时珍、王叔和、皇甫谧、孙思邈、葛洪、岐黄版中医药大语言模型 107 | - [ ] 探索高效领域微调策略 108 | 109 | ## 人工评估 110 | 我们由五位医师从五个维度进行评估 111 |

evaluation

112 |

表3. 人类医生评估结果。

113 | 114 | ## 致谢声明 115 | 116 | 本项目的Lora微调部分代码借鉴了Alpaca-Lora和Chinese-Vicuna的思路,我们对相关研究团队的成员表示感谢;感谢 [Doc2X](https://doc2x.noedgeai.com/login?invite_code=VMMG8M) Doc2X 提供的高精度OCR服务与支持。 117 | 118 | ## 免责声明 119 | 本研究仅供学术研究使用,未经允许不得商业使用,不得在医疗场景或具有潜在医疗意图场景进行临床实践。本中医药大语言模型还处于实验室测试阶段,本阶段涌现的证型分类和处方生成能力尚且粗浅,对于妇科及其他临床专科尚不具备高度可信的临床诊疗能力,目前尚不具有医疗实践能力,输出结果仅供内部参考测试。真实的医疗诊断及决策依然需要经经验丰富的医师通过严格规范的诊疗过程出具。 120 | 121 | ## 合作事宜 122 | 数据处理与标注是训练模型重要环节之一,我们诚挚欢迎具有浓厚中医思维及创新精神的中医师加入,也会在数据层面声明相应的贡献,期待我们有朝一日实现可信赖的中医通用人工智能,让古老的中医学与新时代科技融合焕发新春,这也是本项目的最终使命。如有意向,请发邮件到21110860035@m.fudan.edu.cn。 123 | 124 | ## 团队介绍 125 | 本项目由福耀科技大学朱正忠教授、健康长三角研究院许帅研究员、复旦大学张文强教授、王龑博士后、高述勇博士后和同济大学王昊奋教授共同指导,由复旦大学康砚澜、[常扬](https://github.com/techlead-krischang)、张绪坤、朱静逸、符纪元,邢浩哲,麦新纪完成。 126 | 感谢山东中医药大学刘更生教授、刘娟教授、秦林教授、邱鹏教授以及上海中医药大学附属龙华医院刘苓霜教授提供的中医文化、药物方剂、医学工程及临床医学领域思路指导。感谢上海中医药大学附属龙华医院吴孙思、赵雪、马青山、方仪德、陈越、刘希昱医师;上海市中医院季小钰医师;北京中医药大学宓宝来医师;青岛市黄岛区中医院周丽医师;内蒙古医科大学焦雨琦医师及上海中医药大学图书馆芮云医师等为首的50余名中医师提供的数据支持、标注及模型人工评估,感谢涂潇在生物医学领域及版权管理的专业见解和协作支持。 127 | 128 | ## Citation 129 | If you find this work useful in your research, please cite our repository: 130 | ``` 131 | @misc{CMLM-ZhongJing, 132 | author = {Kang, Yanlan and Chang, Yang and Fu, Jiyuan and Wang, Yan and Wang, Haofen and Zhang, Wenqiang}, 133 | title = {CMLM-ZhongJing: Large Language Model is Good Story Listener}, 134 | year = {2023}, 135 | publisher = {GitHub}, 136 | journal = {GitHub Repository}, 137 | howpublished = {\url{https://github.com/pariskang/CMLM-ZhongJing}} 138 | } 139 | ``` 140 | -------------------------------------------------------------------------------- /WebDemo.py: -------------------------------------------------------------------------------- 1 | from transformers import AutoModelForCausalLM, AutoTokenizer 2 | import torch 3 | import gradio as gr 4 | import os 5 | 6 | 7 | os.environ['CUDA_VISIBLE_DEVICES'] = "0,1" 8 | USE_CUDA = torch.cuda.is_available() 9 | device_ids_parallel = [0] 10 | device = torch.device("cuda:{}".format(device_ids_parallel[0]) if USE_CUDA else "cpu") 11 | 12 | # 初始化 13 | peft_model_id = "CMLM/ZhongJing-2-1_8b" 14 | base_model_id = "Qwen/Qwen1.5-1.8B-Chat" 15 | model = AutoModelForCausalLM.from_pretrained(base_model_id, device_map="auto") 16 | model.load_adapter(peft_model_id) 17 | tokenizer = AutoTokenizer.from_pretrained( 18 | "CMLM/ZhongJing-2-1_8b", 19 | padding_side="right", 20 | trust_remote_code=True, 21 | pad_token='' 22 | ) 23 | 24 | #单轮 25 | def single_turn_chat(question): 26 | prompt = f"Question: {question}" 27 | messages = [ 28 | {"role": "system", "content": "You are a helpful TCM medical assistant named 仲景中医大语言模型, created by 医哲未来 of Fudan University."}, 29 | {"role": "user", "content": prompt} 30 | ] 31 | input = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True) 32 | model_inputs = tokenizer([input], return_tensors="pt").to(device) 33 | generated_ids = model.generate( model_inputs.input_ids,max_new_tokens=512) 34 | generated_ids = [output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)] 35 | response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0] 36 | return response 37 | 38 | #多轮 39 | def multi_turn_chat(question, chat_history=None): 40 | if not isinstance(question, str): 41 | raise ValueError("The question must be a string.") 42 | 43 | if chat_history is None or chat_history == []: 44 | chat_history = [{"role": "system", "content": "You are a helpful TCM medical assistant named 仲景中医大语言模型, created by 医哲未来 of Fudan University."}] 45 | 46 | chat_history.append({"role": "user", "content": question}) 47 | 48 | # Apply the chat template and prepare the input 49 | inputs = tokenizer.apply_chat_template(chat_history, tokenize=False, add_generation_prompt=True) 50 | model_inputs = tokenizer([inputs], return_tensors="pt").to(device) 51 | 52 | try: 53 | # Generate the response from the model 54 | outputs = model.generate(model_inputs.input_ids, max_new_tokens=512) 55 | generated_ids = outputs[:, model_inputs.input_ids.shape[-1]:] 56 | response = tokenizer.decode(generated_ids[0], skip_special_tokens=True) 57 | except Exception as e: 58 | raise RuntimeError("Error in model generation: " + str(e)) 59 | 60 | # Append the assistant's response to the chat history 61 | chat_history.append({"role": "assistant", "content": response}) 62 | 63 | # Format the chat history for output 64 | # formatted_history = [(entry['role'], entry['content']) for entry in chat_history] 65 | tempass = "" 66 | tempuser = "" 67 | formatted_history = [] 68 | for entry in chat_history: 69 | if entry['role'] == 'user': 70 | tempuser = entry['content'] 71 | elif entry['role'] == 'assistant': 72 | tempass = entry['content'] 73 | temp = tempuser,tempass 74 | formatted_history.append(temp) 75 | 76 | return formatted_history, chat_history 77 | 78 | 79 | def clear_history(): 80 | return [], [] 81 | 82 | # 单轮界面 83 | single_turn_interface = gr.Interface( 84 | fn=single_turn_chat, 85 | inputs=["text"], 86 | outputs="text", 87 | title="仲景GPT-V2-1.8B 单轮对话", 88 | description="博极医源,精勤不倦。Unlocking the Wisdom of Traditional Chinese Medicine with AI." 89 | ) 90 | 91 | # 多轮界面 92 | with gr.Blocks() as multi_turn_interface: 93 | chatbot = gr.Chatbot(label="仲景GPT-V2-1.8B 多轮对话") 94 | state = gr.State([]) 95 | with gr.Row(): 96 | with gr.Column(scale=6): 97 | user_input = gr.Textbox(label="输入", placeholder="输入你的问题") 98 | with gr.Column(scale=1): 99 | submit_button = gr.Button("提交") 100 | submit_button.click(multi_turn_chat, inputs=[user_input, state], outputs=[chatbot, state]) 101 | clear_button = gr.Button("清除聊天记录") 102 | clear_button.click(clear_history, outputs=[chatbot, state]) 103 | 104 | # 主界面 105 | def switch_mode(mode): 106 | if mode == "单轮对话": 107 | return gr.update(visible=True), gr.update(visible=False) 108 | else: 109 | return gr.update(visible=False), gr.update(visible=True) 110 | 111 | switch_button = gr.Radio(["单轮对话", "多轮对话"], label="选择对话模式", value="单轮对话") 112 | 113 | demo = gr.Blocks() 114 | 115 | with demo: 116 | gr.Markdown("# 仲景GPT 网页版 Demo") 117 | with gr.Row(): 118 | switch_button.render() 119 | with gr.Row(): 120 | with gr.Column(visible=True) as single_turn_col: 121 | single_turn_interface.render() 122 | with gr.Column(visible=False) as multi_turn_col: 123 | multi_turn_interface.render() 124 | switch_button.change(switch_mode, inputs=switch_button, outputs=[single_turn_col, multi_turn_col]) 125 | 126 | demo.launch(share=True) 127 | -------------------------------------------------------------------------------- /logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pariskang/CMLM-ZhongJing/3549a7fb98409580f6d40c69fede21cda1917fd0/logo.png -------------------------------------------------------------------------------- /logo_image/Strategy.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pariskang/CMLM-ZhongJing/3549a7fb98409580f6d40c69fede21cda1917fd0/logo_image/Strategy.jpeg -------------------------------------------------------------------------------- /logo_image/abc: -------------------------------------------------------------------------------- 1 | ddd 2 | -------------------------------------------------------------------------------- /logo_image/evaluation.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pariskang/CMLM-ZhongJing/3549a7fb98409580f6d40c69fede21cda1917fd0/logo_image/evaluation.jpeg -------------------------------------------------------------------------------- /src/ZhongJingGPT_1_B.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "nbformat": 4, 3 | "nbformat_minor": 0, 4 | "metadata": { 5 | "colab": { 6 | "provenance": [], 7 | "gpuType": "T4" 8 | }, 9 | "kernelspec": { 10 | "name": "python3", 11 | "display_name": "Python 3" 12 | }, 13 | "language_info": { 14 | "name": "python" 15 | }, 16 | "accelerator": "GPU" 17 | }, 18 | "cells": [ 19 | { 20 | "cell_type": "markdown", 21 | "source": [ 22 | "# ZhongJingGPT-2-1.8b\n", 23 | "\n", 24 | "A Traditional Chinese Medicine large language model, inspired by the wisdom of the eminent representative of ancient Chinese medical scholars, Zhang Zhongjing. This model aims to illuminate the profound knowledge of Traditional Chinese Medicine, bridging the gap between ancient wisdom and modern technology, and providing a reliable and professional tool for the Traditional Chinese Medical fields. However, all generated results are for reference only and should be provided by experienced professionals for diagnosis and treatment results and suggestions." 25 | ], 26 | "metadata": { 27 | "id": "NKOuDx1olwGw" 28 | } 29 | }, 30 | { 31 | "cell_type": "code", 32 | "source": [ 33 | "import torch\n", 34 | "print(torch.cuda.is_available())\n" 35 | ], 36 | "metadata": { 37 | "colab": { 38 | "base_uri": "https://localhost:8080/" 39 | }, 40 | "id": "JM-BsUrpeWJT", 41 | "outputId": "8d593699-2995-452d-c8be-936fafa0249e" 42 | }, 43 | "execution_count": 6, 44 | "outputs": [ 45 | { 46 | "output_type": "stream", 47 | "name": "stdout", 48 | "text": [ 49 | "True\n" 50 | ] 51 | } 52 | ] 53 | }, 54 | { 55 | "cell_type": "code", 56 | "source": [ 57 | "!pip install transformers huggingface_hub accelerate peft" 58 | ], 59 | "metadata": { 60 | "colab": { 61 | "base_uri": "https://localhost:8080/" 62 | }, 63 | "id": "WFDppZ3udxdz", 64 | "outputId": "eac02119-90b6-478d-eb81-eba0f0232491" 65 | }, 66 | "execution_count": 2, 67 | "outputs": [ 68 | { 69 | "output_type": "stream", 70 | "name": "stdout", 71 | "text": [ 72 | "Requirement already satisfied: transformers in /usr/local/lib/python3.10/dist-packages (4.37.2)\n", 73 | "Requirement already satisfied: huggingface_hub in /usr/local/lib/python3.10/dist-packages (0.20.3)\n", 74 | "Collecting accelerate\n", 75 | " Downloading accelerate-0.27.2-py3-none-any.whl (279 kB)\n", 76 | "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m280.0/280.0 kB\u001b[0m \u001b[31m4.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", 77 | "\u001b[?25hCollecting peft\n", 78 | " Downloading peft-0.8.2-py3-none-any.whl (183 kB)\n", 79 | "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m183.4/183.4 kB\u001b[0m \u001b[31m8.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", 80 | "\u001b[?25hRequirement already satisfied: filelock in /usr/local/lib/python3.10/dist-packages (from transformers) (3.13.1)\n", 81 | "Requirement already satisfied: numpy>=1.17 in /usr/local/lib/python3.10/dist-packages (from transformers) (1.25.2)\n", 82 | "Requirement already satisfied: packaging>=20.0 in /usr/local/lib/python3.10/dist-packages (from transformers) (23.2)\n", 83 | "Requirement already satisfied: pyyaml>=5.1 in /usr/local/lib/python3.10/dist-packages (from transformers) (6.0.1)\n", 84 | "Requirement already satisfied: regex!=2019.12.17 in /usr/local/lib/python3.10/dist-packages (from transformers) (2023.12.25)\n", 85 | "Requirement already satisfied: requests in /usr/local/lib/python3.10/dist-packages (from transformers) (2.31.0)\n", 86 | "Requirement already satisfied: tokenizers<0.19,>=0.14 in /usr/local/lib/python3.10/dist-packages (from transformers) (0.15.2)\n", 87 | "Requirement already satisfied: safetensors>=0.4.1 in /usr/local/lib/python3.10/dist-packages (from transformers) (0.4.2)\n", 88 | "Requirement already satisfied: tqdm>=4.27 in /usr/local/lib/python3.10/dist-packages (from transformers) (4.66.2)\n", 89 | "Requirement already satisfied: fsspec>=2023.5.0 in /usr/local/lib/python3.10/dist-packages (from huggingface_hub) (2023.6.0)\n", 90 | "Requirement already satisfied: typing-extensions>=3.7.4.3 in /usr/local/lib/python3.10/dist-packages (from huggingface_hub) (4.9.0)\n", 91 | "Requirement already satisfied: psutil in /usr/local/lib/python3.10/dist-packages (from accelerate) (5.9.5)\n", 92 | "Requirement already satisfied: torch>=1.10.0 in /usr/local/lib/python3.10/dist-packages (from accelerate) (2.1.0+cu121)\n", 93 | "Requirement already satisfied: sympy in /usr/local/lib/python3.10/dist-packages (from torch>=1.10.0->accelerate) (1.12)\n", 94 | "Requirement already satisfied: networkx in /usr/local/lib/python3.10/dist-packages (from torch>=1.10.0->accelerate) (3.2.1)\n", 95 | "Requirement already satisfied: jinja2 in /usr/local/lib/python3.10/dist-packages (from torch>=1.10.0->accelerate) (3.1.3)\n", 96 | "Requirement already satisfied: triton==2.1.0 in /usr/local/lib/python3.10/dist-packages (from torch>=1.10.0->accelerate) (2.1.0)\n", 97 | "Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.10/dist-packages (from requests->transformers) (3.3.2)\n", 98 | "Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/dist-packages (from requests->transformers) (3.6)\n", 99 | "Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests->transformers) (2.0.7)\n", 100 | "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.10/dist-packages (from requests->transformers) (2024.2.2)\n", 101 | "Requirement already satisfied: MarkupSafe>=2.0 in /usr/local/lib/python3.10/dist-packages (from jinja2->torch>=1.10.0->accelerate) (2.1.5)\n", 102 | "Requirement already satisfied: mpmath>=0.19 in /usr/local/lib/python3.10/dist-packages (from sympy->torch>=1.10.0->accelerate) (1.3.0)\n", 103 | "Installing collected packages: accelerate, peft\n", 104 | "Successfully installed accelerate-0.27.2 peft-0.8.2\n" 105 | ] 106 | } 107 | ] 108 | }, 109 | { 110 | "cell_type": "markdown", 111 | "source": [ 112 | "# You should restart colab and the run the following code." 113 | ], 114 | "metadata": { 115 | "id": "PNSjkWCqmM8V" 116 | } 117 | }, 118 | { 119 | "cell_type": "code", 120 | "source": [ 121 | "from transformers import AutoModelForCausalLM, AutoTokenizer\n", 122 | "import torch\n", 123 | "\n", 124 | "# Set the device\n", 125 | "device = \"cuda\" # replace with your device: \"cpu\", \"cuda\", \"mps\"\n", 126 | "\n", 127 | "# Initialize model and tokenizer\n", 128 | "peft_model_id = \"CMLL/ZhongJing-2-1_8b\"\n", 129 | "base_model_id = \"Qwen/Qwen1.5-1.8B-Chat\"\n", 130 | "model = AutoModelForCausalLM.from_pretrained(base_model_id, device_map=\"auto\")\n", 131 | "model.load_adapter(peft_model_id)\n", 132 | "tokenizer = AutoTokenizer.from_pretrained(\n", 133 | " \"CMLL/ZhongJing-2-1_8b\",\n", 134 | " padding_side=\"right\",\n", 135 | " trust_remote_code=True,\n", 136 | " pad_token=''\n", 137 | ")\n", 138 | "\n", 139 | "def get_model_response(question, context):\n", 140 | " # Create the prompt\n", 141 | " prompt = f\"Question: {question}\\nContext: {context}\"\n", 142 | " messages = [\n", 143 | " {\"role\": \"system\", \"content\": \"You are a helpful TCM assistant named 仲景中医大语言模型.\"},\n", 144 | " {\"role\": \"user\", \"content\": prompt}\n", 145 | " ]\n", 146 | "\n", 147 | " # Prepare the input\n", 148 | " text = tokenizer.apply_chat_template(\n", 149 | " messages,\n", 150 | " tokenize=False,\n", 151 | " add_generation_prompt=True\n", 152 | " )\n", 153 | " model_inputs = tokenizer([text], return_tensors=\"pt\").to(device)\n", 154 | "\n", 155 | " # Generate the response\n", 156 | " generated_ids = model.generate(\n", 157 | " model_inputs.input_ids,\n", 158 | " max_new_tokens=512\n", 159 | " )\n", 160 | " generated_ids = [\n", 161 | " output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)\n", 162 | " ]\n", 163 | "\n", 164 | " # Decode the response\n", 165 | " response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]\n", 166 | " return response\n", 167 | "\n", 168 | "# Loop to get user input and provide model response\n", 169 | "while True:\n", 170 | " user_question = input(\"Enter your question (or type 'exit' to stop): \")\n", 171 | " if user_question.lower() == 'exit':\n", 172 | " break\n", 173 | " user_context = input(\"Enter context (or type 'none' if no context): \")\n", 174 | " if user_context.lower() == 'none':\n", 175 | " user_context = \"\"\n", 176 | "\n", 177 | " print(\"Model is generating a response, please wait...\")\n", 178 | " model_response = get_model_response(user_question, user_context)\n", 179 | " print(\"Model's response:\", model_response)\n" 180 | ], 181 | "metadata": { 182 | "colab": { 183 | "base_uri": "https://localhost:8080/", 184 | "height": 1000 185 | }, 186 | "id": "jsn4szdjdtmF", 187 | "outputId": "900e42e2-23be-4fb3-91d7-b586ba2d18a5" 188 | }, 189 | "execution_count": 1, 190 | "outputs": [ 191 | { 192 | "output_type": "stream", 193 | "name": "stderr", 194 | "text": [ 195 | "/usr/local/lib/python3.10/dist-packages/huggingface_hub/utils/_token.py:88: UserWarning: \n", 196 | "The secret `HF_TOKEN` does not exist in your Colab secrets.\n", 197 | "To authenticate with the Hugging Face Hub, create a token in your settings tab (https://huggingface.co/settings/tokens), set it as secret in your Google Colab and restart your session.\n", 198 | "You will be able to reuse this secret in all of your notebooks.\n", 199 | "Please note that authentication is recommended but still optional to access public models or datasets.\n", 200 | " warnings.warn(\n", 201 | "Special tokens have been added in the vocabulary, make sure the associated word embeddings are fine-tuned or trained.\n", 202 | "Special tokens have been added in the vocabulary, make sure the associated word embeddings are fine-tuned or trained.\n" 203 | ] 204 | }, 205 | { 206 | "name": "stdout", 207 | "output_type": "stream", 208 | "text": [ 209 | "Enter your question (or type 'exit' to stop): 你是谁\n", 210 | "Enter context (or type 'none' if no context): none\n" 211 | ] 212 | }, 213 | { 214 | "output_type": "stream", 215 | "name": "stderr", 216 | "text": [ 217 | "The attention mask and the pad token id were not set. As a consequence, you may observe unexpected behavior. Please pass your input's `attention_mask` to obtain reliable results.\n", 218 | "Setting `pad_token_id` to `eos_token_id`:151645 for open-end generation.\n" 219 | ] 220 | }, 221 | { 222 | "name": "stdout", 223 | "output_type": "stream", 224 | "text": [ 225 | "Model is generating a response, please wait...\n", 226 | "Model's response: 我是“仲景中医大语言模型”,也叫“仲景大医”或“大医大”。\n", 227 | "Enter your question (or type 'exit' to stop): 我发热,咳嗽,呼吸困难,给出中医诊断和处方\n", 228 | "Enter context (or type 'none' if no context): none\n" 229 | ] 230 | }, 231 | { 232 | "output_type": "stream", 233 | "name": "stderr", 234 | "text": [ 235 | "The attention mask and the pad token id were not set. As a consequence, you may observe unexpected behavior. Please pass your input's `attention_mask` to obtain reliable results.\n", 236 | "Setting `pad_token_id` to `eos_token_id`:151645 for open-end generation.\n" 237 | ] 238 | }, 239 | { 240 | "name": "stdout", 241 | "output_type": "stream", 242 | "text": [ 243 | "Model is generating a response, please wait...\n", 244 | "Model's response: “发高热,恶寒,咳嗽,喘促不能平卧者”属于“肺热壅盛”,患者应该根据自身病情采取中西医结合的方法来进行治疗。中医常采用清热解毒的药物,如白虎汤、黄连阿胶汤、银翘散等;西药常用布洛芬、对乙酰氨基酚等进行退烧。当症状缓解时,可以使用疏风清热、宣肺降气的中药方剂,如麻杏石甘汤或加减葳蕤汤来治疗。\n", 245 | "Enter your question (or type 'exit' to stop): 我还咳嗽,痰黄,该怎么办\n", 246 | "Enter context (or type 'none' if no context): none\n" 247 | ] 248 | }, 249 | { 250 | "output_type": "stream", 251 | "name": "stderr", 252 | "text": [ 253 | "The attention mask and the pad token id were not set. As a consequence, you may observe unexpected behavior. Please pass your input's `attention_mask` to obtain reliable results.\n", 254 | "Setting `pad_token_id` to `eos_token_id`:151645 for open-end generation.\n" 255 | ] 256 | }, 257 | { 258 | "name": "stdout", 259 | "output_type": "stream", 260 | "text": [ 261 | "Model is generating a response, please wait...\n", 262 | "Model's response: 患者出现咳喘症状时,应及时就医。根据不同的病情和病因采取相应措施,如止咳、化痰、解表等。\n", 263 | "1、如果患者有发热等全身不适的表现,则可以使用消炎药、抗病毒药物进行治疗;\n", 264 | "2、如果患者是因感冒、肺炎导致的咳喘,则可以服用一些清热、解毒、止咳、化痰的中药,或者给予雾化吸入治疗;\n", 265 | "3、如果患者有咳嗽的症状,并伴有痰黄,可以在医生的指导下应用甘草合剂、川贝枇杷露、鲜竹沥液等药物进行治疗;\n", 266 | "4、如果是外感风寒所致的咳喘,则可以使用生姜、葱白、红糖煎水进行治疗,同时还可以应用疏风散寒、温肺化饮的中药。\n", 267 | "总之,在发生咳嗽的同时,还需结合具体的病因、临床表现和伴随的其他相关症状来综合分析,才能准确评估患者的病情并及时进行相应的治疗。\n", 268 | "Enter your question (or type 'exit' to stop): 谢谢\n", 269 | "Enter context (or type 'none' if no context): none\n" 270 | ] 271 | }, 272 | { 273 | "output_type": "stream", 274 | "name": "stderr", 275 | "text": [ 276 | "The attention mask and the pad token id were not set. As a consequence, you may observe unexpected behavior. Please pass your input's `attention_mask` to obtain reliable results.\n", 277 | "Setting `pad_token_id` to `eos_token_id`:151645 for open-end generation.\n" 278 | ] 279 | }, 280 | { 281 | "output_type": "stream", 282 | "name": "stdout", 283 | "text": [ 284 | "Model is generating a response, please wait...\n", 285 | "Model's response: 您好,非常感谢您的提问。\n" 286 | ] 287 | }, 288 | { 289 | "output_type": "error", 290 | "ename": "KeyboardInterrupt", 291 | "evalue": "Interrupted by user", 292 | "traceback": [ 293 | "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", 294 | "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", 295 | "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 48\u001b[0m \u001b[0;31m# Loop to get user input and provide model response\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 49\u001b[0m \u001b[0;32mwhile\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 50\u001b[0;31m \u001b[0muser_question\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0minput\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Enter your question (or type 'exit' to stop): \"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 51\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0muser_question\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlower\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m'exit'\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 52\u001b[0m \u001b[0;32mbreak\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", 296 | "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/ipykernel/kernelbase.py\u001b[0m in \u001b[0;36mraw_input\u001b[0;34m(self, prompt)\u001b[0m\n\u001b[1;32m 849\u001b[0m \u001b[0;34m\"raw_input was called, but this frontend does not support input requests.\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 850\u001b[0m )\n\u001b[0;32m--> 851\u001b[0;31m return self._input_request(str(prompt),\n\u001b[0m\u001b[1;32m 852\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_parent_ident\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 853\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_parent_header\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", 297 | "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/ipykernel/kernelbase.py\u001b[0m in \u001b[0;36m_input_request\u001b[0;34m(self, prompt, ident, parent, password)\u001b[0m\n\u001b[1;32m 893\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mKeyboardInterrupt\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 894\u001b[0m \u001b[0;31m# re-raise KeyboardInterrupt, to truncate traceback\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 895\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mKeyboardInterrupt\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Interrupted by user\"\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 896\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mException\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 897\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlog\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mwarning\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Invalid Message:\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mexc_info\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", 298 | "\u001b[0;31mKeyboardInterrupt\u001b[0m: Interrupted by user" 299 | ] 300 | } 301 | ] 302 | }, 303 | { 304 | "cell_type": "code", 305 | "source": [], 306 | "metadata": { 307 | "id": "Q8pwg9UlitWI" 308 | }, 309 | "execution_count": null, 310 | "outputs": [] 311 | } 312 | ] 313 | } 314 | -------------------------------------------------------------------------------- /src/zhongjinggpt_1_b.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | """ZhongJingGPT-1.B.ipynb 3 | 4 | Automatically generated by Colaboratory. 5 | 6 | Original file is located at 7 | https://colab.research.google.com/drive/1DCPomUsfTxqkqxKpK-AIGvBSPbkOm7R3 8 | 9 | # ZhongJingGPT-2-1.8b 10 | 11 | A Traditional Chinese Medicine large language model, inspired by the wisdom of the eminent representative of ancient Chinese medical scholars, Zhang Zhongjing. This model aims to illuminate the profound knowledge of Traditional Chinese Medicine, bridging the gap between ancient wisdom and modern technology, and providing a reliable and professional tool for the Traditional Chinese Medical fields. However, all generated results are for reference only and should be provided by experienced professionals for diagnosis and treatment results and suggestions. 12 | """ 13 | 14 | import torch 15 | print(torch.cuda.is_available()) 16 | 17 | !pip install transformers huggingface_hub accelerate peft 18 | 19 | """# You should restart colab and the run the following code.""" 20 | 21 | from transformers import AutoModelForCausalLM, AutoTokenizer 22 | import torch 23 | 24 | # Set the device 25 | device = "cuda" # replace with your device: "cpu", "cuda", "mps" 26 | 27 | # Initialize model and tokenizer 28 | peft_model_id = "CMLL/ZhongJing-2-1_8b" 29 | base_model_id = "Qwen/Qwen1.5-1.8B-Chat" 30 | model = AutoModelForCausalLM.from_pretrained(base_model_id, device_map="auto") 31 | model.load_adapter(peft_model_id) 32 | tokenizer = AutoTokenizer.from_pretrained( 33 | "CMLL/ZhongJing-2-1_8b", 34 | padding_side="right", 35 | trust_remote_code=True, 36 | pad_token='' 37 | ) 38 | 39 | def get_model_response(question, context): 40 | # Create the prompt 41 | prompt = f"Question: {question}\nContext: {context}" 42 | messages = [ 43 | {"role": "system", "content": "You are a helpful TCM assistant named 仲景中医大语言模型."}, 44 | {"role": "user", "content": prompt} 45 | ] 46 | 47 | # Prepare the input 48 | text = tokenizer.apply_chat_template( 49 | messages, 50 | tokenize=False, 51 | add_generation_prompt=True 52 | ) 53 | model_inputs = tokenizer([text], return_tensors="pt").to(device) 54 | 55 | # Generate the response 56 | generated_ids = model.generate( 57 | model_inputs.input_ids, 58 | max_new_tokens=512 59 | ) 60 | generated_ids = [ 61 | output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids) 62 | ] 63 | 64 | # Decode the response 65 | response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0] 66 | return response 67 | 68 | # Loop to get user input and provide model response 69 | while True: 70 | user_question = input("Enter your question (or type 'exit' to stop): ") 71 | if user_question.lower() == 'exit': 72 | break 73 | user_context = input("Enter context (or type 'none' if no context): ") 74 | if user_context.lower() == 'none': 75 | user_context = "" 76 | 77 | print("Model is generating a response, please wait...") 78 | model_response = get_model_response(user_question, user_context) 79 | print("Model's response:", model_response) 80 | 81 | --------------------------------------------------------------------------------