ChatDoctor

GitHub
3.6k 431 中等 1 次阅读 3天前Apache-2.0语言模型
AI 解读 由 AI 自动生成,仅供参考

ChatDoctor 是一款基于 Meta AI 的 LLaMA 大语言模型,经过医疗领域专业知识微调而成的智能医疗对话助手。它旨在模拟真实的医患沟通场景,能够理解患者描述的症状并提供初步的健康咨询建议。

该项目主要解决了通用大模型在垂直医疗领域专业知识不足、回答不够严谨的问题。通过利用来自 HealthCareMagic 和 icliniq 等平台的数十万条真实医患对话数据,以及由 ChatGPT 生成的专业医学问答进行训练,ChatDoctor 显著提升了在疾病诊断、健康指导等方面的准确性与专业度。

ChatDoctor 非常适合人工智能研究人员、医疗科技开发者以及对医疗大模型感兴趣的技术爱好者使用。研究人员可将其作为医疗 NLP 领域的基准模型进行深入探索;开发者则能基于其开源代码和数据集,构建定制化的健康咨询应用或辅助诊疗系统。需要注意的是,由于模型输出尚未达到 100% 准确,官方明确提示切勿将其直接用于真实的临床诊疗决策,而应作为科研参考或辅助工具。

其技术亮点在于构建了高质量的医疗指令微调数据集,并成功验证了将通用大语言模型迁移至专业医疗领域的可行性,为开源医疗 AI 的发展提供了宝贵的数据资源与模型权重。

使用场景

某基层社区卫生服务中心的全科医生,正面临大量患者通过线上渠道咨询常见病症(如感冒、肠胃不适)的初步分诊压力。

没有 ChatDoctor 时

  • 医生需反复手动回复大量重复性的基础症状询问,挤占了处理重症患者的宝贵时间。
  • 面对非工作时间的患者留言,无法及时提供专业引导,导致患者焦虑或盲目自行用药。
  • 缺乏统一的医学知识库支撑,不同医生对相似症状的初步建议存在差异,标准化程度低。
  • 整理典型病例用于教学或科研时,人工从海量聊天记录中筛选高质量对话效率极低。

使用 ChatDoctor 后

  • ChatDoctor 能基于 10 万 + 真实医患对话数据,自动回答常见病的初步咨询,让医生专注于复杂病例。
  • 提供 7×24 小时的智能预问诊服务,根据患者描述给出就医指引和注意事项,缓解患者等待焦虑。
  • 依托微调后的 LLaMA 模型与疾病数据库,输出符合医学规范的标准化建议,提升服务一致性。
  • 快速生成结构化的模拟医患对话数据,辅助医生高效完成病例库构建与实习生培训素材准备。

ChatDoctor 通过将通用大语言模型转化为懂医学的专属助手,有效释放了基层医生的精力并提升了医疗服务的可及性与规范性。

运行环境要求

操作系统
  • 未说明
GPU
  • 必需 NVIDIA GPU
  • 微调示例显示支持多卡并行(--nproc_per_node=4 或 6),并使用 FSDP (full_shard) 策略,暗示需要较大显存
  • 具体型号和显存大小未明确说明,但运行 LLaMA 基座模型通常建议 16GB+ 显存
内存

未说明

依赖
notes1. 必须在包含 PyTorch 的 conda 环境中运行。2. 项目基于 LLaMA 模型,需自行准备转换后的 Hugging Face 格式权重文件并放入 ./pretrained 目录。3. 提供了全量微调 (train.py) 和 LoRA 微调 (train_lora.py) 两种脚本,后者对显存要求较低。4. 模型仅供学术研究,严禁用于临床或商业用途。5. 推理前需下载约 100k 条医疗对话数据集及预训练权重。
python3.9+
torch
transformers
accelerate
peft (推测用于 LoRA)
datasets
sentencepiece
bitsandbytes (推测用于量化)
ChatDoctor hero image

快速开始

ChatDoctor:基于Meta AI大型语言模型(LLaMA)并结合医学领域知识微调的医疗对话模型

Yunxiang Li1, Zihan Li2, Kai Zhang3, Ruilong Dan4, Steve Jiang1, You Zhang1

1 美国西南医学中心
2 美国内布拉斯加大学林肯分校
3 美国俄亥俄州立大学
4 中国杭州电子科技大学

许可证 Python 3.9+ 网页

资源列表

具备疾病数据库的自主型ChatDoctor 演示

来自HealthCareMagic.com的10万条患者与医生的真实对话 HealthCareMagic-100k

来自icliniq.com的1万条患者与医生的真实对话 icliniq-10k

ChatDoctor的检查点,链接

用于基础对话能力的斯坦福Alpaca数据。Alpaca链接

设置:

在已安装PyTorch的conda环境中,运行:

pip install -r requirements.txt

交互式演示页面:

演示页面:https://huggingface.co/spaces/kenton-li/chatdoctor_csv 值得注意的是,我们的模型尚未达到100%准确的输出,请勿将其应用于真实的临床场景。

对于想要尝试在线演示的人士,请注册Hugging Face并填写此表格 链接

数据与模型:

1. ChatDoctor数据集:

您可以下载以下训练数据集

来自HealthCareMagic.com的10万条患者与医生的真实对话 HealthCareMagic-100k

来自icliniq.com的1万条患者与医生的真实对话 icliniq-10k

由ChatGPT生成的5千条患者与医生的对话 GenMedGPT-5k以及疾病数据库

我们的模型首先使用斯坦福Alpaca的数据进行微调,以获得一些基础的对话能力。Alpaca链接

2. 模型权重:

将模型权重文件放置在./pretrained文件夹中。

微调方法

torchrun --nproc_per_node=4 --master_port=<your_random_port> train.py \
   --model_name_or_path <your_path_to_hf_converted_llama_ckpt_and_tokenizer> \
   --data_path ./HealthCareMagic-100k.json \
   --bf16 True \
   --output_dir pretrained \
   --num_train_epochs 1 \
   --per_device_train_batch_size 4 \
   --per_device_eval_batch_size 4 \
   --gradient_accumulation_steps 8 \
   --evaluation_strategy "no" \
   --save_strategy "steps" \
   --save_steps 2000 \
   --save_total_limit 1 \
   --learning_rate 2e-6 \
   --weight_decay 0. \
   --warmup_ratio 0.03 \
   --lr_scheduler_type "cosine" \
   --logging_steps 1 \
   --fsdp "full_shard auto_wrap" \
   --fsdp_transformer_layer_cls_to_wrap 'LLaMADecoderLayer' \
   --tf32 True

使用LoRA进行微调

WORLD_SIZE=6 CUDA_VISIBLE_DEVICES=0,1,2,3,4,5 torchrun --nproc_per_node=6 --master_port=4567 train_lora.py \
  --base_model './weights-alpaca/' \
  --data_path 'HealthCareMagic-100k.json' \
  --output_dir './lora_models/' \
  --batch_size 32 \
  --micro_batch_size 4 \
  --num_epochs 1 \
  --learning_rate 3e-5 \
  --cutoff_len 256 \
  --val_set_size 120 \
  --adapter_name lora

推理方法

您可以在自己的机器上构建一个ChatDoctor模型并与之交流。

python chat.py
cd Autonomous_ChatDoctor_csv
python chat_csv.py
cd Autonomous_ChatDoctor_Wikipedia
python chat_wiki.py

示例:

我们在 HealthCareMagic-100K 数据集上对模型进行了微调,并在 iCliniq-10k 数据集上测试了该模型。

iCliniq 上的患者提问:医生您好,我最近出现单侧头痛。这种情况并不常见。疼痛位于右眼后方和太阳穴附近。这次还伴有严重的感冒和咳嗽。症状今天上午晚些时候开始,咳嗽、摇头或弯腰时疼痛会加剧。大约四个月前我也出现过类似的头痛,当时是在下午中段发作,一直持续到第二天早上。再之前的一次也是右侧头痛,持续了一天。我现在正在服用 CCB 和质子泵抑制剂。我很担心自己得了脑瘤,请您帮忙。

iCliniq 上的真实医生回答:您好!根据您的描述,这更可能是鼻窦炎引起的。鼻窦是颅骨内的小空腔,充满空气。当它们感染时,就会引起眼后方的头痛。这种头痛在感冒和咳嗽期间更为常见。而脑瘤引起的头痛通常是双侧的,多见于前额,并且常伴有呕吐。因此,根据您的情况,这更像是普通的鼻窦感染,而非脑瘤。建议进行头部 CT 和鼻窦 CT 检查。

ChatGPT 的回答:您好!很抱歉您正在经历这些头痛。从疼痛的位置来看,这可能是紧张性头痛或偏头痛。这类头痛有时会因感冒或其他疾病而诱发。不过,为了排除其他潜在问题,最好还是去看一下医生。至于脑瘤,它导致头痛的情况非常罕见。大多数头痛患者并不会患有脑瘤。当然,如果您出现视力变化、无力或麻木等令人担忧的症状,应立即就医。在此期间,您可以尝试服用一些非处方止痛药,如布洛芬或对乙酰氨基酚来缓解头痛。同时也要注意休息和保持水分充足。如果头痛持续不减或变得更加频繁,请尽快预约医生。祝您早日康复!

ChatDoctor 的回答:您好!感谢您的提问。首先,请放心,您不必担心脑瘤的问题。此外,我们也应该排除偏头痛的可能性。您头痛的最可能原因很可能是鼻窦炎。这一点可以通过面部 X 光检查来确认。治疗方案包括使用减充血剂片剂或鼻喷剂。祝您健康!

ChatDoctor 准确提到了鼻窦炎,这一点与 iCliniq 中的真实对话一致。

概述

ChatDoctor 是一款基于 LLaMA 模型的新一代 AI 医生模型。该项目的目标是为患者提供一个智能可靠的医疗助手,能够解答他们的医学疑问并给出个性化的医疗建议。

ChatDoctor 是一种专为医疗应用设计的先进语言模型。它接受了大量医学文献的训练,对医学术语、诊疗流程和疾病诊断有着深刻的理解。这一基础使 ChatDoctor 能够分析患者的症状和病史,做出准确的诊断,并提出合适的治疗方案。

ChatDoctor 模型通过自然语言处理(NLP)和机器学习技术,模拟医生与患者之间的对话过程。患者可以通过聊天界面与模型互动,询问自己的健康状况、症状或疾病相关问题。模型会根据输入内容,结合患者的具体情况,给出针对性的回答。

ChatDoctor 模型的一大特点是其不断学习和自我优化的能力。随着越来越多的患者与模型交互,它的回答将更加精准,准确性也会逐步提升。这意味着患者可以随着时间推移获得越来越个性化和准确的医疗建议。

患者-医生对话数据集

微调的第一步是收集患者与医生的对话数据。在真实的医患对话中,患者对病情症状的描述往往较为口语化且简略。如果人工构建合成的医患对话数据集,则容易出现多样性不足、描述过于专业化等问题,从而偏离真实场景。因此,直接收集真实的医患对话数据是一个更好的选择。我们从在线医疗咨询网站 HealthCareMagic(www.healthcaremagic.com)上收集了约 10 万条真实的医患对话记录。随后,我们通过人工和自动化的方式对数据进行了筛选,去除了医生和患者的个人信息,并利用语言工具修正了语法错误,最终将该数据集命名为 HealthCareMagic-100k。此外,我们还从另一家在线医疗咨询网站 iCliniq 收集了约 1 万条医患对话,用于评估模型的表现。

基于知识库的自主 ChatDoctor

借助外部知识库——例如维基百科或我们构建的包含 700 多种疾病的数据库——ChatDoctor 可以检索相关信息及可靠来源,从而更准确地回答患者的咨询。在构建好外部知识库后,我们需要让 ChatDoctor 自主获取所需知识。通常,在大型语言模型中,这可以通过设计合适的提示词来实现。为了进一步自动化这一过程,我们为 ChatDoctor 设计了关键词挖掘提示,帮助其提取与查询相关的关键术语。然后,系统会通过词条匹配检索机制,从知识库中提取排名靠前的相关内容。对于疾病数据库而言,由于模型无法一次性读取所有数据,我们先让模型分批读取数据,并自行筛选出可能有助于回答患者问题的数据条目。最后,模型会综合所有筛选出的信息,生成最终答案。这种方法能够更好地确保患者获得有充分依据且精确的回答。

局限性

我们强调,ChatDoctor 仅用于学术研究,禁止任何商业用途和临床应用。作出这一决定主要有三个原因:首先,ChatDoctor 基于 LLaMA 模型,而该模型采用非商业许可,因此我们不得不遵循这一限制;其次,我们的模型并未获得医疗相关用途的许可;此外,我们尚未设计足够的安全措施,当前模型仍无法完全保证诊断结果的准确性。

参考文献

ChatDoctor:基于 LLaMA 模型并结合医学领域知识微调的医疗对话模型

@article{li2023chatdoctor,
  title={ChatDoctor:基于大型语言模型 Meta-AI (LLaMA) 并结合医学领域知识微调的医疗对话模型},
  author={李云翔、李子涵、张凯、单瑞龙、江史蒂夫、张友},
  journal={Cureus},
  volume={15},
  number={6},
  year={2023},
  publisher={Cureus}
}

常见问题

相似工具推荐

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

152.6k|★★☆☆☆|今天
开发框架Agent语言模型

LLMs-from-scratch

LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目,旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型(LLM)。它不仅是同名技术著作的官方代码库,更提供了一套完整的实践方案,涵盖模型开发、预训练及微调的全过程。 该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型,却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码,用户能够透彻掌握 Transformer 架构、注意力机制等关键原理,从而真正理解大模型是如何“思考”的。此外,项目还包含了加载大型预训练权重进行微调的代码,帮助用户将理论知识延伸至实际应用。 LLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API,而是渴望探究模型构建细节的技术人员而言,这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计:将复杂的系统工程拆解为清晰的步骤,配合详细的图表与示例,让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础,还是为未来研发更大规模的模型做准备

90.1k|★★★☆☆|1周前
语言模型图像Agent

NextChat

NextChat 是一款轻量且极速的 AI 助手,旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性,以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发,NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。 这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言,它也提供了便捷的自托管方案,支持一键部署到 Vercel 或 Zeabur 等平台。 NextChat 的核心亮点在于其广泛的模型兼容性,原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型,让用户在一个界面即可自由切换不同 AI 能力。此外,它还率先支持 MCP(Model Context Protocol)协议,增强了上下文处理能力。针对企业用户,NextChat 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。

87.6k|★★☆☆☆|1周前
开发框架语言模型

ML-For-Beginners

ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。

85.1k|★★☆☆☆|3天前
图像数据工具视频

funNLP

funNLP 是一个专为中文自然语言处理(NLP)打造的超级资源库,被誉为"NLP 民工的乐园”。它并非单一的软件工具,而是一个汇集了海量开源项目、数据集、预训练模型和实用代码的综合性平台。 面对中文 NLP 领域资源分散、入门门槛高以及特定场景数据匮乏的痛点,funNLP 提供了“一站式”解决方案。这里不仅涵盖了分词、命名实体识别、情感分析、文本摘要等基础任务的标准工具,还独特地收录了丰富的垂直领域资源,如法律、医疗、金融行业的专用词库与数据集,甚至包含古诗词生成、歌词创作等趣味应用。其核心亮点在于极高的全面性与实用性,从基础的字典词典到前沿的 BERT、GPT-2 模型代码,再到高质量的标注数据和竞赛方案,应有尽有。 无论是刚刚踏入 NLP 领域的学生、需要快速验证想法的算法工程师,还是从事人工智能研究的学者,都能在这里找到急需的“武器弹药”。对于开发者而言,它能大幅减少寻找数据和复现模型的时间;对于研究者,它提供了丰富的基准测试资源和前沿技术参考。funNLP 以开放共享的精神,极大地降低了中文自然语言处理的开发与研究成本,是中文 AI 社区不可或缺的宝藏仓库。

79.9k|★☆☆☆☆|4天前
语言模型数据工具其他

gpt4all

GPT4All 是一款让普通电脑也能轻松运行大型语言模型(LLM)的开源工具。它的核心目标是打破算力壁垒,让用户无需依赖昂贵的显卡(GPU)或云端 API,即可在普通的笔记本电脑和台式机上私密、离线地部署和使用大模型。 对于担心数据隐私、希望完全掌控本地数据的企业用户、研究人员以及技术爱好者来说,GPT4All 提供了理想的解决方案。它解决了传统大模型必须联网调用或需要高端硬件才能运行的痛点,让日常设备也能成为强大的 AI 助手。无论是希望构建本地知识库的开发者,还是单纯想体验私有化 AI 聊天的普通用户,都能从中受益。 技术上,GPT4All 基于高效的 `llama.cpp` 后端,支持多种主流模型架构(包括最新的 DeepSeek R1 蒸馏模型),并采用 GGUF 格式优化推理速度。它不仅提供界面友好的桌面客户端,支持 Windows、macOS 和 Linux 等多平台一键安装,还为开发者提供了便捷的 Python 库,可轻松集成到 LangChain 等生态中。通过简单的下载和配置,用户即可立即开始探索本地大模型的无限可能。

77.3k|★☆☆☆☆|2天前
语言模型开发框架