面向生物医学、医药领域无编程背景的研究人员与临床医生,通过图形化界面,让用户一键式使用前沿生物医疗 AI 模型。
- FastAPI + PostgreSQL + Redis + Celery
- 注册/登录、JWT、8 场景模型卡片、异步任务状态流转
- 对象存储:支持
STORAGE_BACKEND=local(默认,零依赖)或STORAGE_BACKEND=s3(MinIO / S3 兼容) - 文件管理:上传、列表、删除(已绑定任务的文件需先删除任务)
- 任务:创建时可挂载已上传输入文件;完成后生成
result.json工件;下载、删除任务(并清理输出对象) - 分享:
POST /tasks/{id}/shares生成令牌;GET /public/shares/{token}查看元数据;公开下载工件(可选密码) - 管理后台:指标概览、用户禁用/配额、模型启用/禁用
- 用户:
storage_used_bytes配额统计、task_retention_days字段
- 模型扩展框架:新增可插拔模型适配层
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_image、runner_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.yml,需要容器化时可使用。日常开发推荐下方「本地启动」。
- 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 || truecd 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/biomedaiREDIS_URL:例如redis://127.0.0.1:6379/0SECRET_KEY:随机字符串STORAGE_BACKEND:local或s3- 若使用 MinIO / S3:
S3_ENDPOINT_URL、S3_ACCESS_KEY、S3_SECRET_KEY、S3_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 修改)。
- 在
backend/.env设置EXECUTION_BACKEND=docker。 - Celery Worker 进程必须能执行
docker命令(本机安装 Docker Desktop / Engine,或将docker.sock挂载进 Worker 容器并安装 Docker CLI)。 - 每个模型需配置镜像;管理后台「模型启停与容器」中可编辑镜像与
runner_config_json(支持command、env)。 - 容器约定:平台会把用户上传文件放到宿主机的
.../input,映射为容器内/input;请将结果写入/output(平台会收集该目录下所有文件作为工件)。
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周旧库(含 storage_used_gb 等旧字段),建议重建数据库或自行编写迁移脚本对齐当前模型。全新库由 SQLAlchemy create_all 自动建表即可。
若已有库但缺少 models.docker_image、models.runner_config_json、tasks.runner_log_json 等列,同样需要迁移或重建后再启动新版本。