一个使用 React、TypeScript、FastAPI、SQLite 和 DeepSeek API 实现的 AI 请求风险分诊系统。
用户提交 AI 使用请求后,系统生成风险等级、下一步建议和判断理由,再由人工批准或拒绝。每次模型调用、审核决定和业务动作都会保存,方便失败重试和审计。
项目参考了 ai-operations-control-center 的业务方向和目录组织,核心数据模型、状态流程、Provider、风险策略、前端交互与测试均按本项目需求重新设计。
- 创建、查询和修改 Request
- 使用 Mock 或 DeepSeek 进行风险分诊
- 验证模型返回的结构化 JSON
- 用固定规则覆盖不安全的模型判断
- 保存运行耗时、Token、错误和审核历史
- 支持分诊失败重试和人工修改审核决定
- 保存并查询审计日志
- Python、FastAPI、Pydantic
- SQLAlchemy、SQLite
- DeepSeek API(OpenAI-compatible SDK)
- pytest
- React、TypeScript
- Vite、Fetch API、CSS
flowchart LR
U[用户提交 Request] --> API[FastAPI]
API --> S[Triage Service]
S --> P{Provider}
P --> M[Mock]
P --> D[DeepSeek]
M --> V[Pydantic Validation]
D --> V
V --> R[Risk Policy]
R --> DB[(SQLite)]
DB --> H[人工审核]
H --> DB
API --> A[Audit Log]
A --> DB
状态流程:
submitted → triaging → pending_review → approved / rejected
└→ triage_failed → retry
personal_data或external_write的最终风险至少为high。customer_data的最终风险至少为medium。- 高风险 Request 要批准时必须填写
review_note。 - 修改待审核 Request 后,旧分诊结果失效,需要重新分诊。
ai-request-triage-agent/
├── backend/
│ ├── app/
│ │ ├── api/ # FastAPI 路由
│ │ ├── services/ # 分诊、Provider、风险规则、审计和种子数据
│ │ ├── config.py # 环境配置
│ │ ├── database.py # 数据库连接与 Session
│ │ ├── models.py # SQLAlchemy 模型
│ │ ├── schemas.py # Pydantic 数据合同
│ │ └── main.py # 后端入口
│ └── tests/ # 后端测试
├── frontend/
│ └── src/
│ ├── api/client.ts # 通用 Fetch 与错误处理
│ ├── api/requests.ts # Request API 函数
│ ├── types.ts # TypeScript 类型
│ └── App.tsx # 页面和交互
├── refs/ # 参考项目
└── project-learning-guide.html # 七天学习手册
- 参考上游的 FastAPI + React 双进程结构,以及 Request、Audit 的基础思路。
- 自己实现了 Provider 契约、Mock/DeepSeek 切换、风险规则、失败重试和 Review 1:N 历史。
- 上游偏通用运营 Dashboard,本项目聚焦 Request → Triage → Review → Audit 闭环。
在 backend 中复制环境变量示例:
Copy-Item .env.example .envLLM_PROVIDER=mock
DEEPSEEK_API_KEY=
DEEPSEEK_BASE_URL=https://api.deepseek.com
DEEPSEEK_MODEL=deepseek-v4-flash
LLM_TIMEOUT_SECONDS=30日常开发推荐使用 mock。需要调用真实模型时改为 deepseek 并填写 API Key。不要提交真实 .env。
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r backend\requirements.txt
cd backend
uvicorn app.main:app --reload- Swagger:http://127.0.0.1:8000/docs
- Health:http://127.0.0.1:8000/health
cd frontend
npm install
npm run dev后端测试使用 Mock 和独立内存数据库,不会调用 DeepSeek:
cd backend
python -m pytest tests -q前端生产构建:
cd frontend
npm run build当前项目只负责分诊和人工决策,不会自动执行模型建议中的外部操作。