Multi-Agent-Medical-Assistant
基于LangGraph的多智能体医疗AI助手,融合RAG检索、医学影像分析与实时网络搜索
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
基于LangGraph的多智能体医疗AI助手,融合RAG检索、医学影像分析与实时网络搜索
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。

图1:多智能体医学诊断系统整体流程图
想象这样的场景:一位基层全科医生李医生,面对一位患者递来的胸部X光片,犹豫不决——他不是影像科专科医生,但又必须在今天的门诊里给出一个初步判断。传统的做法是转诊、等待,而这位医生的电脑上,正在运行着一个叫 Multi-Agent-Medical-Assistant 的开源项目,通过拖入一张胸片,AI迅速给出了"疑似右上肺野浸润性病灶,建议进一步CT检查"的参考意见,同时附上了相关医学文献链接。
这并不是科幻。这个由印度加尔各答工程师 Souvik Majumder 开发的多智能体医学辅助系统,已经在GitHub上获得了超过900颗星标,成为医学AI辅助领域最具代表性的开源项目之一。它将大语言模型、计算机视觉、检索增强生成和实时网络搜索整合在同一个框架下,形成了一个可协作的"AI医生团队"。
单一大模型直接回答医学问题的局限性显而易见:知识陈旧(训练数据有截止日期)、容易产生幻觉(一本正经地胡说八道)、对影像束手无策(纯文本模型无法处理X光片)。
Multi-Agent-Medical-Assistant 的核心设计思路是任务分解与专业路由:不再让一个通用模型独自应对所有问题,而是根据用户输入的内容类型,动态分配给最合适的"专科Agent"。这种设计借鉴了现实医院里分诊台(Triage)的逻辑——患者进门,先判断该挂哪个科,再由对应专科医生接诊。
系统的指挥中心是 Agent Decision 模块,基于 LangGraph 构建的有向无环图工作流。当用户发起查询时,首先经过**输入/输出安全护栏(Guardrails)**过滤有害内容,然后由决策Agent判断该路由到哪个专科:
对话Agent(Conversation Agent):处理日常寒暄、非医学问题,保持对话连贯性。
检索增强生成Agent(RAG Agent):内置Qdrant向量数据库,通过Docling解析PDF文档(目前已内置脑肿瘤和新冠胸片相关文献),支持混合检索(BM25稀疏检索 + 密集向量检索),并使用HuggingFace Cross-Encoder做二次重排序,提升答案的精准度。
网络搜索Agent(Web Search Agent):当问题涉及最新医学进展、疫情动态等时效性内容时,由Tavily API抓取最新网络资源,确保回答与时俱进。
脑肿瘤Agent(Brain Tumor Agent):接收脑部MRI影像,通过PyTorch模型进行语义分割,标注肿瘤位置。该Agent仍在集成中(标记为TBD)。
胸片Agent(Chest X-ray Agent):接收胸部X光片,使用PyTorch分类模型检测新冠、肺炎等异常,目前处于开发阶段。
皮肤病灶Agent(Skin Lesion Agent):接收皮肤病变影像,进行语义分割,区分良性/恶性,该模块也处于模型集成阶段。

图2:Multi-Agent-Medical-Assistant 项目Logo
值得注意的是,所有涉及影像分析的Agent都需要GPT-4o Vision作为图像理解的基础——也就是说,在本地PyTorch模型做分割/分类之前,图像类型的识别(是胸片还是皮肤照片?)是由GPT-4o Vision来完成的。这是一个混合架构:本地模型负责特定病种的精准分割/分类,云端多模态大模型负责图像类型的路由判断。
后端框架:FastAPI(异步API),搭配Uvicorn运行,Gunicorn作为生产级WSGI服务器。应用提供 /chat 端点接受文本查询,/health 端点供Docker健康检查使用。
多智能体编排:LangGraph 0.3,这是LangChain官方出品的工作流编排库。相比直接用LangChain,LangGraph允许定义带状态的有向图,支持条件分支和循环——这正是多智能体路由场景所需的。Agent间的消息传递通过LangChain Core的MessagesState管理,记忆通过MemorySaver实现跨线程会话保持。
检索增强(RAG)层:Docling(来自IBM)替代了早期版本中的Unstructured.io来解析PDF,能同时提取文本、表格和嵌入图片;向量存储使用Qdrant本地模式(SQLite文件存储),嵌入维度1536(text-embedding-ada-002);重排序模型使用ms-marco-TinyBERT-L-6。
计算机视觉:三个病种分析模块均基于PyTorch,但作者在代码中标注了"集成中"状态。skin_lesion_inference.py和brain_tumor_inference.py目前存在但效果待验证,chest_xray则使用了基于PyTorch的图像分类流程。
语音交互:ElevenLabs API提供文字转语音能力,后台每5分钟清理一次生成的音频文件,防止存储泄漏。
容器化:项目提供标准单阶段Dockerfile,基于 python:3.11-slim,包含OpenCV所需的全部系统依赖(libgl1、libglib等),以及ffmpeg(音视频处理依赖)。部署流程要求:构建镜像 -> 运行容器 -> 通过 docker exec 执行RAG数据注入脚本。
数据隐私:整个系统在本地运行(Qdrant为本地文件模式),不向第三方服务器发送患者影像数据,但调用Azure OpenAI GPT-4o时,影像数据会上传至微软Azure服务器——这在隐私敏感场景下需要额外评估合规性。
项目提供了Docker部署方案,相比手动装Python环境已经省心很多,但仍有几道"关卡":
环境变量配置:需要填写 .env 文件中的Azure OpenAI密钥(包括deployment_name、model_name、azure_endpoint、openai_api_key、openai_api_version),以及ElevenLabs、Tavily、HuggingFace等多个第三方API Key,配置项超过15个,对非技术背景的医学人员有一定门槛。
GPU依赖:系统需要NVIDIA GPU(4GB+ 显存)来运行PyTorch医学影像模型,虽然纯RAG和对话功能可以在CPU上运行,但无法体验完整的影像分析能力。
向量数据库初始化:运行 ingest_rag_data.py 脚本才能把PDF文献灌入Qdrant数据库,新用户需要自行准备高质量医学文献。
Web UI:基于Jinja2模板的FastAPI应用,提供基础的聊天界面,支持上传影像和语音输入,设计简洁但功能较为基础。
项目自身在README中坦诚标注了多个"正在进行中"的功能(尤其是脑肿瘤和胸片分析Agent),部分计算机视觉模块尚未完全集成,实际效果未经验证。
更根本的问题在于:当前版本的医学影像分析严重依赖GPT-4o Vision进行图像类型识别和初步判断,本地PyTorch模型的实际贡献权重尚不清晰。对于追求完全本地化、可解释性的医疗AI场景,这种混合架构可能无法满足监管要求。
此外,作为一名开源贡献者Majumder独立维护的项目,缺少标准的医疗器械软件质量认证流程(IEC 62304),在真实临床环境使用前,需要经过严格的临床验证和伦理审查。
Multi-Agent-Medical-Assistant 项目的价值,不仅在于它本身能做什么,更在于它展示了多智能体架构在垂直领域应用的可行性范式:
医学AI的分诊路由设计,正在成为行业共识。从Google Med-PaLM到OpenHealth,在单一模型不够用的情况下,路由到专业子模型是必然选择。本项目将这一理念以最小可用产品的形式呈现,任何人都可以fork并接入自己的医学数据库。
检索增强生成(RAG)在医学领域的落地,正在从"把PDF向量化"的粗糙方案,向"Docling解析 + 语义分块 + 混合检索 + 二次重排"的工业级方案演进,本项目是这个演进过程的一个活样本。
如果你对AI辅助医疗感兴趣,这个项目是一个极佳的学习起点——它涵盖了LangGraph工作流、RAG工程化、医疗影像分析和Web搜索集成的完整链路,值得深入研究每一个Agent的源码。

图3:项目创始人Souvik Majumder的GitHub头像
本报告基于 GitHub 仓库 v2.1 版本源码分析生成,部分计算机视觉模块状态为 TBD,实际部署效果请以最新代码为准。