毕业设计项目
HealthAI 是一个智能健康管理系统,融合了机器学习模型、RAG 知识库和自建 LLM Agent 技术,为用户提供:
- 🏥 疾病风险预测 - 基于 Framingham、FINDRISC、FRAX® 等权威医学评估模型
- 📊 健康趋势分析 - 时序数据分析、异常检测、健康评分
- 🤖 智能健康咨询 - 自建 LLM Agent,支持工具调用与流式对话
- � 体检报告解析 - 上传 PDF/图片,AI 自动 OCR + LLM 结构化解析
- 📚 RAG 健康知识库 - 基于《默克家庭诊疗手册》的检索增强问答
- � 数据可视化 - ECharts 健康趋势图表
- 基于 ReAct 循环的自建 Agent,自主决策调用工具
- 支持流式输出,工具调用期间显示思考状态
- 滑动窗口对话历史管理
- 工具链:查询健康指标、趋势分析、风险评估、健康档案、录入数据、知识库查询、体检报告解读
- 基于《默克家庭诊疗手册》构建,约 360 个文本块
- 向量检索:SiliconFlow
BAAI/bge-m3嵌入 + ChromaDB 本地存储 - 精排:
BAAI/bge-reranker-v2-m3Reranker,Top-3 结果 - 索引未就绪时自动降级到结构化知识库
- 上传 PDF / 图片,后端 OCR 提取文本
- LLM 结构化解析:生成指标摘要和健康建议
- 支持历史报告列表查看,支持按 ID 跳转定位
- 心血管疾病风险 - Framingham Risk Score (2008),Cox 回归统计模型
- 糖尿病风险 - FINDRISC 评分系统,循证评分量表
- 代谢综合征 - IDF/NCEP ATP III 联合诊断标准
- 骨质疏松风险 - FRAX® 骨折风险评估工具,Logistic 回归模型
- 风险因素分析 + 个性化健康建议
- 健康指标录入(血压收缩压+舒张压双轨、血糖、心率、BMI 等)
- 每日唯一制记录(当日同类型数据重复录入自动更新)
- 概览/血压/血糖/心率 Tab 切换联动图表,含异常标注与预测曲线
- 异常检测和预警通知
- 完整健康档案(身体数据、生化指标、生活习惯、家族病史)
- 档案完整度进度条
- 智能健康标签:AI 基于档案数据自动评估生成,支持手动添加/编辑
- 汇总体检报告(exam)与系统生成报告(风险评估、健康分析)
- 按来源分组展示,支持跳转详情
- 搜索框:实时搜索页面导航 + 健康报告 + 体检报告,分组下拉展示
- 通知:指标异常 / 高中风险评估 / 体检报告解析完成,支持已读状态
- 设置:个人信息编辑、修改密码、通知偏好配置
- 框架: Vue 3 + Vite
- 路由: Vue Router 4
- 图表: ECharts + vue-echarts
- 图标: Lucide Vue Next
- 样式: 原生 CSS (Meta 风格设计系统)
- 框架: Flask
- 数据库: SQLite + SQLAlchemy ORM
- 认证: JWT Token
- LLM Agent: 自建 ReAct Agent,基于 OpenAI SDK 调用硅基流动 API
- RAG: ChromaDB 向量库 + SiliconFlow bge-m3 嵌入 + bge-reranker-v2-m3 精排
- OCR: pdfplumber(PDF)+ pytesseract(图片)
- 风险评估: Framingham (Cox 回归)、FINDRISC (循证评分)、代谢综合征 (IDF/NCEP 标准)、FRAX® (Logistic 回归)
- 趋势分析: 移动平均、线性回归
- 异常检测: Z-Score、IQR、医学阈值
health-agent/
├── backend/ # 后端服务
│ ├── app.py # Flask 应用入口
│ ├── config.py # 配置管理
│ ├── database/ # 数据库模块
│ │ ├── models.py # SQLAlchemy 模型
│ │ ├── seed.py # 种子数据生成
│ │ └── __init__.py
│ ├── services/ # 业务逻辑层
│ │ ├── ml_models/ # ML 模型实现
│ │ ├── agent_service.py # LLM Agent ReAct 循环
│ │ ├── agent_tools.py # Agent 工具链(7 个工具)
│ │ ├── rag_service.py # RAG 检索 + 精排服务
│ │ ├── exam_service.py # 体检报告 OCR + LLM 解析
│ │ ├── health_service.py
│ │ ├── risk_service.py
│ │ ├── trend_service.py
│ │ ├── auth_service.py
│ │ └── user_service.py
│ ├── routes/ # API 路由层
│ ├── rag_data/ # RAG 知识库
│ │ ├── build_index.py # 索引构建脚本
│ │ ├── 默克家庭诊疗手册.txt
│ │ └── chroma_db/ # 向量索引(已 .gitignore)
│ └── utils/ # 工具模块
│ ├── llm_client.py # LLM 客户端封装
│ └── jwt_utils.py # JWT 工具
└── frontend/ # 前端应用
├── src/
│ ├── views/ # 页面视图
│ │ ├── Home.vue
│ │ ├── Consultation.vue # 智能问诊
│ │ ├── HealthData.vue # 健康数据
│ │ ├── RiskAssessment.vue
│ │ ├── ExamReport.vue # 体检报告
│ │ ├── Profile.vue # 健康档案
│ │ ├── Reports.vue # 健康报告列表
│ │ └── Settings.vue # 设置
│ ├── components/
│ │ └── layout/
│ │ ├── Header.vue # 顶栏(搜索+通知+设置)
│ │ └── Sidebar.vue
│ ├── router/ # 路由配置
│ └── api/ # API 服务层
└── package.json
- Node.js >= 18
- Python >= 3.9
git clone https://github.com/DabRlin/health-agent.git
cd health-agentcd backend
# 创建并激活虚拟环境
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
# 安装依赖
pip install -r requirements.txt
# 初始化数据库
python database/seed.py
# 配置环境变量
cp .env.example .env
# 编辑 .env,填入硅基流动 API Key(https://cloud.siliconflow.cn)
# 启动后端服务
python app.py后端服务将运行在 http://127.0.0.1:5000
cd frontend
# 安装依赖
npm install
# 启动开发服务器
npm run dev前端应用将运行在 http://localhost:5173
| 变量 | 说明 | 默认值 |
|---|---|---|
LLM_API_KEY |
硅基流动 API Key | 必填 |
LLM_BASE_URL |
LLM API 地址 | https://api.siliconflow.cn/v1 |
LLM_MODEL |
使用的模型 | Pro/zai-org/GLM-4.7 |
LLM_MAX_HISTORY |
对话历史滑动窗口大小 | 10 |
智能问诊模块采用自建 ReAct(Reasoning + Acting)Agent:
- 用户发送消息 → Agent 接收并构建上下文(系统提示 + 滑动窗口历史)
- LLM 推理 → 判断是否需要调用工具(
stream=False) - 工具执行 → 调用对应服务获取真实数据,结果追加到上下文
- 循环推理 → 重复步骤 2-3,直到无需更多工具调用
- 流式输出 → 最终回复以
stream=True实时推送到前端
可用工具(7 个):
get_health_metrics- 查询用户最新健康指标get_health_trend- 分析指定指标的历史趋势run_risk_assessment- 运行心血管/糖尿病/代谢综合征风险评估get_user_profile- 获取用户健康档案add_health_metric- 录入新的健康数据get_health_knowledge- RAG 知识库检索(优先向量检索,降级到结构化库)analyze_exam_report- 解读最近一份体检报告
- 类型: 多元 Cox 统计回归模型
- 基于 Framingham Heart Study,D'Agostino et al., Circulation 2008
- 预测 10 年内心肌梗死、冠心病死亡、中风等心血管事件风险
- 输入:年龄、性别、总胆固醇、HDL、收缩压、吸烟史、糖尿病史、降压药使用
- 类型: 循证医学评分量表(Finnish Diabetes Risk Score)
- 基于 Lindström & Tuomilehto,Diabetes Care 2003
- 预测未来 10 年内发生 2 型糖尿病的风险,评分范围 0–26 分
- 无需实验室检查,适合人群筛查
- 类型: 规则引擎(基于国际诊断标准)
- 基于 IDF/NCEP ATP III 联合声明,Circulation 2009
- 采用亚洲人群腰围标准(男 ≥90cm,女 ≥80cm)
- 腹围、甘油三酯、HDL、血压、血糖 5 项中满足 ≥3 项即确诊
- 类型: Logistic 回归统计模型
- 基于 WHO 骨折风险评估工具,Kanis et al., Osteoporosis International 2008
- 预测 10 年内主要骨质疏松性骨折及髋部骨折概率
- 无需骨密度检测(BMD-free 版本),适合初筛
- 项目架构设计
- 前端 UI 框架搭建
- 后端 API 开发
- 数据库设计与实现
- JWT 用户认证
- ML 风险评估模型集成
- 健康趋势分析模块
- 自建 LLM Agent(ReAct + Function Calling)
- Agent 工具链(7 个工具)
- 流式输出 + 思考状态显示
- 体检报告 OCR + LLM 解析
- RAG 健康知识库(ChromaDB + bge-m3 + Reranker)
- 健康数据图表 Tab 切换
- 健康档案完整度 + 智能标签
- 健康报告列表页
- 顶栏搜索 / 通知 / 设置
- 血压双轨显示(收缩压 + 舒张压独立趋势线与预测)
- 健康数据每日唯一制(当日重复录入自动更新)
- 智能问诊历史实时排序 + 双击重命名
- 移动端适配
本项目采用 MIT 许可证 - 详见 LICENSE 文件
毕业设计项目 - HealthAI