Files
NexusAI/docs/01-软件需求文档-SRS.md

200 lines
7.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 软件需求规格说明书SRS
## 自建多模态 AI 网关系统AI Gateway System
| 项目 | 内容 |
|---|---|
| 文档版本 | V1.0 |
| 编写日期 | 2026-08-23 |
| 项目负责人 | 紫川 |
| 文档状态 | 草案 |
---
## 1. 引言
### 1.1 编写目的
本文档描述"自建多模态 AI 网关系统"的功能需求、非功能需求与约束条件作为后续软件设计说明书SDD编写和开发实现的依据。
### 1.2 项目背景
由于公司内网访问 NVIDIA NIM、Gemini 等免费大模型 API 不稳定,希望在自有美国服务器上搭建一套类似 Gemini 首页体验的对话系统,聚合多个免费 AI API 渠道,实现"一个渠道不可用自动切换下一个"的高可用能力,同时支持图文多模态问答。
### 1.3 项目目标
- 提供稳定、统一的 Web 对话入口,界面体验接近 Gemini 首页
- 聚合至少 5 家免费多模态 APIGemini、NVIDIA NIM、Groq、OpenRouter、Mistral
- 单一渠道失败时自动故障转移Failover用户无感知
- 支持图片 + 文字混合输入的问答
- 部署在美国服务器,规避公司内网对海外 API 的直连限制
- 全部使用免费额度,不产生 API 调用费用
### 1.4 术语定义
| 术语 | 说明 |
|---|---|
| 渠道Channel | 指某一家 AI API 提供商的接入配置,如 Gemini 渠道、Groq 渠道 |
| 网关Gateway | 统一转发、聚合多个渠道请求的中间层服务,本项目采用 One-API |
| Failover | 故障转移,某渠道不可用时自动切换到下一优先级渠道 |
| 多模态Multimodal | 同时支持文本与图像作为输入的模型能力 |
| RPM | Requests Per Minute每分钟请求数限制 |
---
## 2. 总体描述
### 2.1 产品定位
本系统是一个**私有部署的 AI 对话网关**,面向单用户(紫川本人,未来可扩展至团队),核心价值是"聚合免费额度 + 高可用" —— 让用户无需关心具体调用了哪家模型,只需要在统一界面里提问、上传图片,系统自动选择当前可用的免费渠道完成响应。
### 2.2 用户角色
| 角色 | 描述 |
|---|---|
| 终端用户 | 使用 LobeChat 前端进行日常图文问答的人(紫川本人) |
| 系统管理员 | 配置渠道、监控用量、调整优先级的人(紫川本人,同一人身兼两角) |
### 2.3 运行环境
- 部署位置:美国服务器(无地区网络限制)
- 访问方来源:公司内网(网络不稳定,仅需保证到本服务器一段链路可用)
- 容器化部署Docker + Docker Compose
- 操作系统LinuxUbuntu/Debian 系)
### 2.4 约束与假设
- 假设:美国服务器可稳定访问 Google、NVIDIA、Groq、OpenRouter、Mistral 官方域名
- 约束:仅使用各平台免费额度,不产生付费调用
- 约束:不做未成年人相关内容、不涉及企业内部代码泄露到公网模型(需用户自行注意脱敏)
- 假设:公司内网到美国服务器的连接比公司内网直连各 API 官方域名更稳定
---
## 3. 功能需求
### FR-1 统一对话界面
| 编号 | 描述 | 优先级 |
|---|---|---|
| FR-1.1 | 提供 Web 端对话界面,支持文本输入 | 高 |
| FR-1.2 | 支持图片上传并随文本一起提问(多模态输入) | 高 |
| FR-1.3 | 支持流式输出(打字机效果) | 中 |
| FR-1.4 | 支持多轮对话上下文保留 | 高 |
| FR-1.5 | 支持对话历史保存与查看 | 中 |
| FR-1.6 | 界面访问需密码验证Access Code | 高 |
### FR-2 多渠道聚合与路由
| 编号 | 描述 | 优先级 |
|---|---|---|
| FR-2.1 | 支持接入 Gemini、NVIDIA NIM、Groq、OpenRouter、Mistral 五家渠道 | 高 |
| FR-2.2 | 支持为渠道设置优先级与权重 | 高 |
| FR-2.3 | 支持将多个渠道的不同模型映射为统一对外模型名 | 高 |
| FR-2.4 | 请求失败(限流/超时/额度耗尽)时自动切换下一优先级渠道 | 高 |
| FR-2.5 | 渠道故障后自动禁用,冷却期后自动恢复重试 | 中 |
### FR-3 多模态能力
| 编号 | 描述 | 优先级 |
|---|---|---|
| FR-3.1 | 图文问答仅路由到支持视觉的渠道/模型 | 高 |
| FR-3.2 | 纯文本问答可路由到所有渠道(含无视觉能力的 Groq | 中 |
### FR-4 渠道管理(管理员)
| 编号 | 描述 | 优先级 |
|---|---|---|
| FR-4.1 | 支持在后台新增/编辑/删除渠道 | 高 |
| FR-4.2 | 支持查看每个渠道的调用次数、成功率、余额/额度状态 | 中 |
| FR-4.3 | 支持手动启用/禁用某个渠道 | 中 |
| FR-4.4 | 支持生成/吊销对外 Token | 高 |
### FR-5 安全与访问控制
| 编号 | 描述 | 优先级 |
|---|---|---|
| FR-5.1 | 前端需 Access Code 才能进入对话界面 | 高 |
| FR-5.2 | 后台管理端口不直接暴露公网 | 高 |
| FR-5.3 | 全站启用 HTTPS | 高 |
| FR-5.4 | API Key 等敏感信息通过环境变量管理,不写入代码仓库 | 高 |
---
## 4. 非功能需求
### 4.1 性能需求
| 指标 | 目标值 |
|---|---|
| 单次请求响应首字延迟 | < 3 秒(视具体渠道而定) |
| Failover 切换耗时 | < 5 秒 |
| 并发用户数 | 支持 1~5 人同时使用(当前阶段单用户为主) |
### 4.2 可用性需求
- 系统整体可用性目标99%(不含各免费 API 官方自身故障)
- 任一单个渠道不可用不应导致整体服务中断
### 4.3 可维护性需求
- 渠道配置修改无需重新部署代码,后台界面操作即可生效
- 日志需可追溯每次请求实际路由到了哪个渠道,便于排查
### 4.4 兼容性需求
- 前端需兼容主流桌面浏览器Chrome/Edge/Safari及移动端浏览器
- 网关对外接口需兼容 OpenAI API 格式,便于未来接入其他客户端(如 Claude Code、第三方 App
### 4.5 安全需求
- 所有对外 API Key 不得硬编码在配置文件中提交至版本库
- HTTPS 全站加密传输
- 访问密码需具备一定复杂度
---
## 5. 外部接口需求
### 5.1 用户接口
- Web 浏览器访问,响应式布局,适配桌面与移动端
### 5.2 外部 API 接口
| 渠道 | Base URL | 认证方式 |
|---|---|---|
| Gemini | generativelanguage.googleapis.com/v1beta | API KeyHeader/Query |
| NVIDIA NIM | integrate.api.nvidia.com/v1 | Bearer TokenOpenAI 兼容) |
| Groq | api.groq.com/openai/v1 | Bearer TokenOpenAI 兼容) |
| OpenRouter | openrouter.ai/api/v1 | Bearer TokenOpenAI 兼容) |
| Mistral | api.mistral.ai/v1 | Bearer TokenOpenAI 兼容) |
---
## 6. 数据需求
| 数据项 | 存储位置 | 说明 |
|---|---|---|
| 对话历史 | LobeChat浏览器 IndexedDB 或 PostgreSQL | 视部署模式而定 |
| 渠道配置、API Key | One-API 数据库MySQL | 敏感信息,需备份加密 |
| 调用日志 | One-API 数据库 | 用于用量统计与故障排查 |
---
## 7. 验收标准
1. 通过 Web 界面可正常发起文本对话并获得响应
2. 上传图片后可正常获得图片理解相关的回答
3. 手动关闭优先级最高的渠道后,系统能自动切换到下一渠道且用户侧无明显感知
4. 后台可查看各渠道当日调用次数
5. 全站访问强制 HTTPS非法访问无法进入后台管理端口
---
## 8. 后续可扩展需求(非本期范围)
- 多用户账号体系与权限隔离
- 语音输入/输出支持
- 与紫川的 FAM家庭 AI 监控系统)前端集成展示
- 接入更多免费渠道(如 Cerebras、阿里云百炼等