|
|
2 달 전 | |
|---|---|---|
| .. | ||
| backend | 2 달 전 | |
| data | 2 달 전 | |
| frontend | 2 달 전 | |
| .gitignore | 2 달 전 | |
| README.md | 2 달 전 | |
| requirements.txt | 2 달 전 | |
基于 HelloAgents(HelloAgentsLLM)与 FastAPI 的多智能体应用:体检报告解读、饮食推荐与执行反馈闭环,可选 Milvus 语义检索 + SQLite 长期记忆。
声明:本项目输出仅供健康信息与流程演示,不能替代执业医师的诊断或处方。
截图位于 frontend/screenshots/,更新时替换同名文件即可。
档案与报告(report.png)
饮食推荐(diet.png)
执行反馈 Reflect(reflect.png)
| 模块 | 说明 |
|---|---|
| 档案分析 | 文本或 PDF 体检报告 → 多 Agent 流水线(规划 → 指标 → 风险 → 建议 → 报告),异步任务可轮询状态 |
| 饮食助手 | 自然语言 今日饮食日志 → LLM 解析与营养汇总 → 营养师 / 教练 / 习惯 多阶段结构化输出;结合历史记忆与 Reflect 反馈 |
| 长期记忆 | SQLite 存运行记录与反馈;可选 Milvus 向量索引 + Hybrid 检索(失败回退 SQL 列表) |
| 可观测 | pipeline_trace、errors / degraded、rag_debug;报告/饮食 run 的 observability 接口与饮食 replay |
| 前端 | 静态页 + Tab(档案分析 | 饮食助手 | 历史);类 Apple Health 信息层级;开发者模式控制技术细节展示;饮食 Reflect 反馈闭环 |
PlannerAgent 后多 Specialist 串行);饮食为 多阶段流水线(食物解析 → 营养师 → 教练 → 习惯),各阶段 Pydantic 校验与失败降级。hello_agents.HelloAgentsLLM 调用兼容 OpenAI 的 API;Agent 基类与业务流水线在本仓库 backend/agents、backend/service 中实现。HealthRecordAgent/
├── README.md
├── requirements.txt
├── data/ # 默认 SQLite:health_memory.db(可 .gitignore)
├── backend/
│ ├── api/main.py # FastAPI 入口
│ ├── agents/ # 报告分析各 Agent
│ ├── service/ # health_analysis、diet_pipeline 等
│ ├── memory/ # SQLite 存取
│ ├── rag/ # 嵌入、Milvus、统一 retrieve
│ └── tools/ # 饮食相关工具
└── frontend/
├── index.html, app.js, style.css
└── screenshots/ # README 界面截图(见「界面概览」)
进入 本 README 所在目录(即 HealthRecordAgent 项目根目录):
python3 -m venv backend/.venv
source backend/.venv/bin/activate # Windows: backend\.venv\Scripts\activate
pip install -r requirements.txt
在 backend/ 下创建 .env(python-dotenv 随进程工作目录加载;请在 backend 目录下启动 Uvicorn,以便正确读取 backend/.env):
cd backend
cp .env.example .env
# 编辑 .env:至少配置 OPENAI_API_KEY;使用兼容网关时需配置 OPENAI_BASE_URL
主要变量说明见 backend/.env.example。开启语义记忆检索时设置 RAG_ENABLED=true,并保证 MILVUS_URI 与嵌入相关变量可用。
cd backend
source .venv/bin/activate # 若尚未激活虚拟环境
python -m uvicorn api.main:app --host 127.0.0.1 --port 8000 --reload
/api(例如 POST /api/health/analysis)另开终端:
cd frontend
python3 -m http.server 8080 --bind 127.0.0.1
浏览器打开:http://127.0.0.1:8080/
前端默认请求 http://127.0.0.1:8000(见 frontend/app.js 中 API_BASE),请与后端端口一致。
| 方法 | 路径 | 说明 |
|---|---|---|
| POST | /api/health/analysis |
文本报告分析,返回 task_id |
| POST | /api/health/analysis/pdf |
上传 PDF 分析 |
| GET | /api/health/task_status/{task_id} |
任务与 Agent 状态 |
| GET | /api/health/users/{user_id}/report_history |
用户历史报告 |
| GET | /api/health/report_runs/{task_id} |
单次运行详情 |
| GET | /api/health/report_runs/{task_id}/observability |
可观测性摘要 |
| 方法 | 路径 | 说明 |
|---|---|---|
| POST | /api/diet/recommend |
饮食推荐(context.today_food_log_text 等) |
| POST | /api/diet/reflect |
是否按推荐执行及原因(闭环记忆) |
| GET | /api/diet/users/{user_id}/runs |
饮食运行历史 |
| GET | /api/diet/users/{user_id}/reflect_history |
反馈历史 |
| GET | /api/diet/runs/{run_id} |
单次饮食 run |
| GET | /api/diet/runs/{run_id}/observability |
可观测性视图 |
| POST | /api/diet/runs/{run_id}/replay |
同输入重跑(新 run_id) |
19530 可访问(与 MILVUS_URI 一致)。RAG_ENABLED=true,并配置与 LLM 网关一致的 Embedding 调用(见 .env.example)。backend/scripts/reindex_milvus.py 按需执行。未启用 Milvus 时,检索会自动使用 SQL 侧记忆列表作为回退,不影响主流程演示。
frontend/app.js 里 API_BASE 一致。RAG_ENABLED、Milvus 进程与嵌入 API;响应中的 rag_debug.mode 可帮助判断当前是 milvus 还是回退。HealthRecordAgent/data/health_memory.db,可通过环境变量 HEALTH_MEMORY_DB_PATH 覆盖。感谢 DataWhale 与 Hello-Agents 项目提供的教程与 hello-agents 依赖生态。
欢迎 Issue / PR。使用本项目时请遵守仓库根目录及上游社区的许可约定;若作为学习案例引用,建议注明出处。