系统架构设计
架构概述
"岐黄智鉴"系统采用分层架构设计,通过前后端分离、模型服务化、容器化部署等方式,实现高效、可扩展的中医智能诊疗服务。(由于时间有限,前后端集成与知识图谱等组件仍在开发中)
整体系统架构
系统架构图
架构分层说明
前端展示层
技术选型:HTML5 + CSS3 + JavaScript
- Web前端界面:提供用户友好的操作界面
- 对话交互系统:实现流畅的问答交互体验
- 结果展示组件:美观地展示中医诊断结果
主要功能:
- 用户输入症状描述
- 实时对话交互
- 诊断结果可视化展示
- 响应式界面适配
API服务层
技术选型:FastAPI + Uvicorn
- FastAPI网关:统一的API入口,提供RESTful接口
- 请求路由模块:根据请求类型分发到对应处理模块
- 响应处理模块:统一处理响应格式和错误处理
核心接口:
python
# 主要API端点
POST /api/chat # 对话接口
GET /api/health # 健康检查
POST /api/history # 对话历史
GET /api/models # 模型状态
业务逻辑层
核心组件:
- 问诊对话管理:管理用户与AI的对话流程
- 症状分析处理:解析和理解用户描述的症状
- 诊断结果生成:基于AI模型输出生成结构化诊断
处理流程:
- 接收用户症状描述
- 构建对话上下文
- 调用AI模型进行推理
- 解析模型输出结果
- 生成标准化诊断报告
AI模型层
技术选型:GLM-4.1V-9B + LoRA微调
- GLM-4.1V基座模型:智谱AI的多模态大语言模型
- LoRA微调适配器:针对中医领域的参数高效微调
- 模型推理引擎:优化的推理服务,支持批处理
模型特点:
- 9B参数规模,适合个人GPU部署
- 支持中文理解和生成
- 具备多模态能力(文本+图像)
- LoRA微调参数量仅92M
数据存储层
存储设计:
- 训练数据集:精心标注的1000+条中医医案数据
- 对话历史缓存:Redis缓存用户对话历史
- 配置文件存储:模型配置、系统参数等
数据格式:
json
{
"messages": [
{
"role": "user",
"content": "患者岳某,女,45岁。初诊:1979年12月12日。主诉及病史:前额及眼眶痛1个月,以中午最甚,其痛如裂,难以忍受。在某医院神经科检查诊断为“血管神经性头痛。”每日需服麦角胺、安乃近3次,可暂时缓解。已服药20多天,不能停药。并有疲倦、食少、心慌、气短疲乏。无外伤史。诊查:面色黄白,形体偏瘦,舌边有齿痕、苔白薄。气息不足、声音低弱。脉沉细。"
},
{
"role": "assistant",
"content": "<think>\n这是一个典型的中医辨证论治案例。我需要根据患者的症状、体征和病史进行辨证分析,然后给出相应的治疗方案。\n\n首先,整理患者的症状和体征:\n1. 主诉:前额及眼眶痛1个月,以中午最甚,其痛如裂,难以忍受\n2. 诊断:血管神经性头痛\n3. 用药情况:每日需服麦角胺、安乃近3次,已服药20多天,不能停药\n4. 伴随症状:疲倦、食少、心慌、气短疲乏\n5. 体征:面色黄白,形体偏瘦,舌边有齿痕、苔白薄,气息不足、声音低弱,脉沉细\n\n现在进行辨证分析:\n\n1. 头痛特点分析:\n - 部位:前额及眼眶,属于阳明经循行部位\n - 时间特点:中午最甚,中午为阳气最盛之时\n - 性质:其痛如裂,难以忍受,属于剧烈头痛\n\n2. 全身症状分析:\n - 疲倦、气短疲乏、气息不足、声音低弱:提示气虚\n - 食少:提示脾胃功能虚弱\n - 心慌:可能为气血不足,心失所养\n - 面色黄白:提示气血不足\n - 形体偏瘦:提示脾胃虚弱,气血生化不足\n\n3. 舌脉分析:\n - 舌边有齿痕:为气虚、脾虚的表现\n - 苔白薄:提示有寒湿或虚寒\n - 脉沉细:提示气血不足,阳气虚弱\n\n综合分析:\n患者头痛部位在前额及眼眶,属于阳明经,中午最甚,可能是因为正午阳气最盛,而患者体质虚弱,不能承受阳气之盛,导致疼痛加剧。全身症状表现为明显的气虚、脾虚、气血不足之象。\n\n辨证:气虚血弱,脾虚清阳不升,阳明经气不利。\n\n病机:患者脾胃虚弱,气血生化不足,清阳不升,不能上荣头目,加之阳明经气不利,导致前额及眼眶剧烈疼痛。由于气血不足,正气虚弱,难以抗邪,故疼痛剧烈且持续不愈。\n\n治法:补中益气,升阳举陷,健脾养血,通络止痛。\n\n方药选择:\n可选用补中益气汤加减,以补中益气、升阳举陷为主,配合养血通络止痛之品。\n\n处方:\n黄芪30g 党参15g 白术12g 茯苓15g\n陈皮10g 升麻6g 柴胡6g 当归15g\n川芎12g 白芷10g 葛根15g 炙甘草6g\n生姜3片 大枣5枚\n\n方解:\n- 黄芪、党参、白术、茯苓、炙甘草:补中益气,健脾养胃\n- 升麻、柴胡、葛根:升阳举陷,引药上行\n- 当归、川芎:养血活血,通络止痛\n- 白芷:善治阳明经头痛\n- 陈皮:理气健脾\n- 生姜、大枣:调和脾胃\n\n加减:\n- 头痛剧烈可加全蝎3g、蜈蚣2条以通络止痛\n- 心慌明显可加酸枣仁15g、柏子仁15g以养心安神\n- 食欲不振可加砂仁6g、麦芽15g以开胃消食\n\n医嘱:\n1. 饮食宜清淡易消化,忌辛辣刺激、生冷油腻之品\n2. 保持充足休息,避免过度劳累\n3. 调节情志,保持心情舒畅\n4. 适当进行头部按摩,缓解头痛\n\n这个治疗方案主要是针对患者脾胃气虚、清阳不升的病机,通过补中益气、升阳举陷的方法来治疗头痛,同时兼顾养血通络止痛。由于患者长期服用西药,可能会影响脾胃功能,因此治疗上需兼顾调理脾胃,恢复正气。\n</think>\n<answer>\n# 中医辨证论治\n\n## 辨证分析\n\n根据患者症状和体征,我进行如下辨证分析:\n\n### 四诊合参\n**望诊**:面色黄白,形体偏瘦,舌边有齿痕、苔白薄 - 提示气血不足,脾虚湿盛\n**闻诊**:气息不足、声音低弱 - 提示肺气虚弱\n**问诊**:前额及眼眶痛1个月,中午最甚,痛如裂;疲倦、食少、心慌、气短疲乏 - 提示气虚清阳不升,阳明经气不利\n**切诊**:脉沉细 - 提示气血亏虚\n\n### 病机分析\n1. 头痛部位在前额及眼眶,属阳明经循行部位\n2. 中午头痛加剧,因午时阳气最盛,患者气虚不能承受阳气之盛\n3. 气短、疲倦、声音低弱、脉沉细均为气虚表现\n4. 舌边有齿痕、食少为脾虚湿盛之象\n5. 心慌为气血不足,心失所养\n\n### 证型诊断\n**气虚血弱,脾虚清阳不升,阳明经气不利**\n\n## 治法与方药\n\n### 治法\n补中益气,升阳举陷,健脾养血,通络止痛\n\n### 方药\n**补中益气汤加减**\n\n```\n黄芪30g 党参15g 白术12g 茯苓15g\n陈皮10g 升麻6g 柴胡6g 当归15g\n川芎12g 白芷10g 葛根15g 炙甘草6g\n生姜3片 大枣5枚\n```\n\n### 方解\n- 黄芪、党参、白术、茯苓、炙甘草:补中益气,健脾养胃\n- 升麻、柴胡、葛根:升阳举陷,引药上行\n- 当归、川芎:养血活血,通络止痛\n- 白芷:善治阳明经头痛\n- 陈皮:理气健脾\n- 生姜、大枣:调和脾胃\n\n## 医嘱\n1. 饮食宜清淡易消化,忌辛辣刺激、生冷油腻之品\n2. 保持充足休息,避免过度劳累\n3. 调节情志,保持心情舒畅\n4. 逐渐减少西药用量,避免依赖\n5. 建议每日上午9-11点(脾经当令之时)服药,以增强疗效\n\n此方案针对患者脾胃气虚、清阳不升的病机,通过补中益气、升阳举陷的方法治疗头痛,同时兼顾养血通络止痛,从根本上调理患者体质,减少头痛发作。\n</answer>"
}
]
},
部署支撑层
容器化部署:
- Docker容器:打包应用和依赖,确保环境一致性
- Nginx代理:反向代理,负载均衡,静态文件服务
- GPU资源管理:CUDA环境管理,显存优化
技术架构特点
模块化设计
- 松耦合:各层之间通过标准接口通信
- 可扩展:支持水平扩展和功能模块增加
- 可维护:清晰的分层便于开发和维护
性能优化
- 异步处理:FastAPI异步框架提升并发性能
- 缓存机制:Redis缓存减少重复计算
- GPU加速:CUDA加速模型推理过程
部署友好
- 容器化:Docker确保部署环境一致性
- 轻量化:LoRA微调降低部署资源需求
- 可移植:支持Linux和Windows环境
数据流架构
请求处理流程
典型的用户请求处理流程:
- 用户输入:用户在前端界面输入症状描述
- 请求转发:前端通过POST /api/chat发送请求到API网关
- 请求处理:API网关将请求转发给业务逻辑层
- 历史获取:业务逻辑层从数据存储获取用户对话历史
- 模型推理:调用AI模型进行智能诊断推理
- 结果返回:模型返回诊断结果给业务逻辑层
- 数据保存:保存本次对话记录到数据存储
- 响应生成:业务逻辑层返回处理结果给API网关
- 结果展示:前端接收JSON响应并向用户展示诊断结果
扩展架构
未来扩展点
- 多模态支持:增加图像分析能力(舌象、面诊)
- 知识图谱:集成中医知识图谱增强推理
- 个性化:基于用户历史的个性化推荐
- 集群部署:支持多GPU集群部署
接口标准化
- RESTful API:标准化的API设计
- OpenAPI文档:自动生成的API文档
- 版本管理:API版本控制和向后兼容
架构优势
- 技术成熟:采用成熟稳定的技术栈
- 部署简单:一键Docker部署
- 资源友好:适合个人和小团队使用
- 扩展性强:支持功能和性能扩展
设计理念:在保证功能完整性的前提下,追求架构的简洁性和实用性,确保系统能够稳定运行并便于维护。