Skip to content

Mingrui-Li/BioMedAI

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BioMedAI Playground

面向生物医学、医药领域无编程背景的研究人员与临床医生,通过图形化界面,让用户一键式使用前沿生物医疗 AI 模型。

当前进度

第1阶段(MVP 骨架)

  • FastAPI + PostgreSQL + Redis + Celery
  • 注册/登录、JWT、8 场景模型卡片、异步任务状态流转

第2阶段(平台化能力,已实现)

  • 对象存储:支持 STORAGE_BACKEND=local(默认,零依赖)或 STORAGE_BACKEND=s3(MinIO / S3 兼容)
  • 文件管理:上传、列表、删除(已绑定任务的文件需先删除任务)
  • 任务:创建时可挂载已上传输入文件;完成后生成 result.json 工件;下载删除任务(并清理输出对象)
  • 分享POST /tasks/{id}/shares 生成令牌;GET /public/shares/{token} 查看元数据;公开下载工件(可选密码)
  • 管理后台:指标概览、用户禁用/配额、模型启用/禁用
  • 用户storage_used_bytes 配额统计、task_retention_days 字段

第3阶段(本次迭代,已实现)

  • 模型扩展框架:新增可插拔模型适配层 model_adapters.py,8 个场景均有独立适配逻辑
  • 多模型结果工件:不再固定 result.json,按模型输出对应工件(如 pdb/csv/markdown/json
  • 任务执行分发:Worker 根据 model_name 自动路由到对应适配器,后续替换为真实推理只需改适配器
  • Docker 容器执行(可选)EXECUTION_BACKEND=docker 时,按 models.docker_image + runner_config_json 执行 docker run,挂载 /input(只读)与 /output,将容器产出同步为任务工件;并写入 tasks.runner_log_json 供前端轮询展示
  • 模型表扩展docker_imagerunner_config_json;种子数据默认 alpine:3.20 便于联调(真实环境请在管理后台改为正式镜像与启动命令)
  • 邮件通知:任务提交支持 notify_email,任务完成/失败后发邮件(SMTP 可配置)
  • 定时清理任务:Celery 定时任务 cleanup_expired_tasks,按用户 task_retention_days 清理过期任务与输出工件
  • 团队空间:团队创建、添加成员、团队任务列表(任务可绑定 team_id
  • 完整监控告警(基础版)
    • 管理后台指标扩展(pending/running/succeeded/failed、failure_rate)
    • 告警接口 /admin/alerts(失败率与队列积压阈值告警)
    • 前端管理页展示告警面板

可选:Docker Compose

仓库仍保留 docker-compose.yml,需要容器化时可使用。日常开发推荐下方「本地启动」。

本地启动(不使用 Docker)

0. 准备环境

  • Python 3.10+
  • Node.js 20+(前端)
  • PostgreSQL 14+(本地服务)
  • Redis(Celery 消息队列)

macOS 示例(Homebrew):

brew install postgresql@14 redis
brew services start postgresql@14
brew services start redis
createuser biomedai -s || true
psql postgres -c "CREATE USER biomedai WITH PASSWORD 'biomedai';" 2>/dev/null || true
psql postgres -c "CREATE DATABASE biomedai OWNER biomedai;" 2>/dev/null || true

1. 后端

cd backend
python3 -m venv .venv
source .venv/bin/activate   # Windows: .venv\Scripts\activate
pip install -r requirements.txt

backend/ 下创建 .env(可参考仓库根目录的 .env.example 复制并修改),至少包含:

  • DATABASE_URL:例如 postgresql+psycopg2://biomedai:biomedai@127.0.0.1:5432/biomedai
  • REDIS_URL:例如 redis://127.0.0.1:6379/0
  • SECRET_KEY:随机字符串
  • STORAGE_BACKENDlocals3
  • 若使用 MinIO / S3S3_ENDPOINT_URLS3_ACCESS_KEYS3_SECRET_KEYS3_BUCKET

管理员:在 .env 中设置 ADMIN_BOOTSTRAP_EMAILS=你的邮箱首次用该邮箱注册的用户会自动成为 admin(已存在的用户不会自动升格,需由管理员在后台修改角色或在库中更新)。

启动 API:

cd backend
source .venv/bin/activate
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000

另开终端启动 Celery Worker(与 API 相同目录与环境变量):

cd backend
source .venv/bin/activate
celery -A app.celery_app worker --loglevel=info

再开一个终端启动 Celery Beat(用于定时清理):

cd backend
source .venv/bin/activate
celery -A app.celery_app beat --loglevel=info

本地对象存储默认写入 backend/data/storage/(可通过 LOCAL_STORAGE_PATH 修改)。

Docker 模式说明

  • backend/.env 设置 EXECUTION_BACKEND=docker
  • Celery Worker 进程必须能执行 docker 命令(本机安装 Docker Desktop / Engine,或将 docker.sock 挂载进 Worker 容器并安装 Docker CLI)。
  • 每个模型需配置镜像;管理后台「模型启停与容器」中可编辑镜像与 runner_config_json(支持 commandenv)。
  • 容器约定:平台会把用户上传文件放到宿主机的 .../input,映射为容器内 /input;请将结果写入 /output(平台会收集该目录下所有文件作为工件)。

2. 前端

cd frontend
npm install
# 若 API 非 localhost:8000,可设置:
# export VITE_API_BASE=http://127.0.0.1:8000
npm run dev

浏览器访问:http://localhost:5173
OpenAPI:http://127.0.0.1:8000/docs

演示流程

  1. 注册并登录(管理员邮箱见上文配置)
  2. 在「我的文件」上传输入文件(可选)
  3. 「工作台」选择模型,勾选文件后提交任务
  4. 可勾选「完成后邮件通知我」,任务完成后接收通知
  5. 在「团队空间」创建团队并查看团队任务
  6. 管理员在「管理后台」查看指标、告警、禁用用户、启停模型

数据库变更说明

若你使用过第1周旧库(含 storage_used_gb 等旧字段),建议重建数据库或自行编写迁移脚本对齐当前模型。全新库由 SQLAlchemy create_all 自动建表即可。

若已有库但缺少 models.docker_imagemodels.runner_config_jsontasks.runner_log_json 等列,同样需要迁移或重建后再启动新版本。

About

面向生物医学、医药领域无编程背景的研究人员与临床医生,通过图形化界面,让用户“一键式”使用前沿生物医疗AI模型

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors