239 lines
No EOL
6.9 KiB
Markdown
239 lines
No EOL
6.9 KiB
Markdown
# LLM API 转发平台系统设计书
|
||
|
||
---
|
||
|
||
## 1. 系统概览
|
||
|
||
### 1.1 系统目标
|
||
|
||
- **基于令牌的 LLM API 转发平台**:建立一个平台,允许客户用户通过认证和访问令牌,向绑定的 LLM 提供商发送提示词并获取响应。
|
||
- **多层级管理员功能**:
|
||
- **超级管理员**:管理所有管理员、客户用户和 LLM 提供商。
|
||
- **管理员**:管理分配给他们的客户用户和对应的 LLM 提供商。
|
||
- **LLM 提供商管理功能**:支持管理员通过后台管理不同的 LLM 提供商及其对应的服务处理逻辑。
|
||
- **高性能与安全性**:利用 Redis 提升短期令牌的验证性能,支持动态注销,确保系统安全。
|
||
|
||
### 1.2 技术选型
|
||
|
||
- **后端框架:Laravel**
|
||
- 支持服务容器绑定和多种中间件扩展,便于实现动态服务逻辑。
|
||
- **数据库:MySQL**
|
||
- 用于存储管理员、客户用户、令牌、LLM 提供商等数据。
|
||
- **缓存系统:Redis**
|
||
- 存储短期访问令牌,实现高效验证和动态注销。
|
||
- **安全措施**:
|
||
- 强制使用 HTTPS 加密通信。
|
||
- 敏感数据如令牌和 LLM 提供商配置加密存储。
|
||
|
||
---
|
||
|
||
## 2. 系统架构
|
||
|
||
### 2.1 核心组件
|
||
|
||
#### 1. **Frontend API**
|
||
|
||
- **功能**:
|
||
- 面向客户用户的 API 服务。
|
||
- 根据客户用户的 LLM 配置,路由请求至对应的 LLM 提供商。
|
||
- 动态调用不同的响应处理逻辑,适配各 LLM 提供商。
|
||
|
||
#### 2. **Admin Backend**
|
||
|
||
- **功能**:
|
||
- 面向管理员的后台管理模块。
|
||
- 支持管理员对客户用户、令牌和 LLM 提供商的管理。
|
||
- 提供 LLM 提供商管理功能,允许新增、修改和删除 LLM 提供商。
|
||
|
||
#### 3. **数据库层(MySQL)**
|
||
|
||
- **功能**:
|
||
- 持久化存储管理员、客户用户、令牌、LLM 提供商等信息。
|
||
- 支持复杂的关系管理和查询。
|
||
|
||
#### 4. **缓存层(Redis)**
|
||
|
||
- **功能**:
|
||
- 存储短期访问令牌,实现高效验证和动态注销。
|
||
- 支持令牌的自动过期和主动注销。
|
||
|
||
---
|
||
|
||
### 2.2 模块划分
|
||
|
||
#### 1. **身份验证模块**
|
||
|
||
- **功能**:
|
||
- 管理认证令牌和访问令牌的生成、验证与注销。
|
||
- 使用 Redis 提升验证性能,支持动态注销。
|
||
|
||
#### 2. **客户用户管理模块**
|
||
|
||
- **功能**:
|
||
- 管理员可以添加、修改、删除客户用户。
|
||
- 客户用户绑定特定的 LLM 提供商。
|
||
|
||
#### 3. **LLM 提供商管理模块**
|
||
|
||
- **功能**:
|
||
- 管理员可以管理 LLM 提供商列表。
|
||
- 每个提供商需配置名称、服务名称(对应的服务逻辑)、URL 和 Token。
|
||
|
||
#### 4. **日志与监控模块**
|
||
|
||
- **功能**:
|
||
- 记录系统操作日志,便于审计和故障排查。
|
||
- 提供系统性能监控接口,支持集成第三方监控工具。
|
||
|
||
#### 5. **安全模块**
|
||
|
||
- **功能**:
|
||
- 实现 HTTPS 加密通信。
|
||
- 防御常见的安全攻击,如 SQL 注入、XSS、CSRF 等。
|
||
- 管理令牌的安全性,支持即时注销和过期机制。
|
||
|
||
---
|
||
|
||
## 3. 数据流程
|
||
|
||
### 3.1 客户用户使用流程
|
||
|
||
1. **认证令牌分发**:
|
||
- 管理员通过后台为客户用户生成认证令牌,并分发给客户用户。
|
||
|
||
2. **生成访问令牌**:
|
||
- 客户用户使用认证令牌,通过 API 获取短期访问令牌。
|
||
|
||
3. **提示词请求**:
|
||
- 客户用户使用访问令牌,向 Frontend API 发送提示词请求。
|
||
- 系统根据客户用户绑定的 LLM 提供商,调用对应的服务逻辑,发送请求并获取响应。
|
||
- 返回处理后的 LLM 响应给客户用户。
|
||
|
||
---
|
||
|
||
### 3.2 管理员操作流程
|
||
|
||
1. **管理员登录**:
|
||
- 超级管理员和管理员使用用户名和密码登录管理后台。
|
||
|
||
2. **客户用户管理**:
|
||
- 超级管理员可以管理所有客户用户。
|
||
- 管理员只能管理分配给他们的客户用户。
|
||
|
||
3. **LLM 提供商管理**:
|
||
- 管理员可以新增、修改、删除 LLM 提供商。
|
||
- 配置提供商的名称、服务名称、URL、Token 等信息。
|
||
|
||
4. **令牌管理**:
|
||
- 管理员为客户用户生成和管理认证令牌。
|
||
- 可以查看、修改或注销令牌。
|
||
|
||
---
|
||
|
||
## 4. 关键技术实现
|
||
|
||
### 4.1 令牌机制
|
||
|
||
- **认证令牌**:
|
||
- 长期有效,由管理员生成,客户用户使用其获取访问令牌。
|
||
|
||
- **访问令牌**:
|
||
- 短期有效(如 1 小时),存储在 Redis 中,支持自动过期和动态注销。
|
||
|
||
### 4.2 权限控制
|
||
|
||
- **超级管理员**:
|
||
- 具有全局权限,管理所有资源,包括管理员、客户用户和 LLM 提供商。
|
||
|
||
- **管理员**:
|
||
- 管理分配给他们的客户用户和 LLM 提供商。
|
||
- 无法访问其他管理员的资源。
|
||
|
||
### 4.3 LLM 提供商管理
|
||
|
||
#### 功能描述
|
||
|
||
- **提供商管理**:
|
||
- 管理员可通过后台管理 LLM 提供商列表。
|
||
- 每个提供商需配置:
|
||
- 提供商名称(如 OpenAI、Anthropic 等)。
|
||
- 服务名称(对应 Laravel 中的服务类,用于处理逻辑)。
|
||
- API URL 和访问 Token。
|
||
|
||
- **客户用户绑定**:
|
||
- 客户用户在创建或修改时,需要绑定一个 LLM 提供商。
|
||
|
||
#### 业务规则
|
||
|
||
- **权限限制**:
|
||
- 管理员只能管理自己添加的 LLM 提供商。
|
||
- 超级管理员可以管理所有 LLM 提供商。
|
||
|
||
- **动态调用**:
|
||
- 系统根据客户用户绑定的 LLM 提供商,动态调用对应的服务逻辑,适配不同的请求和响应格式。
|
||
|
||
---
|
||
|
||
## 5. 安全设计
|
||
|
||
### 5.1 加密通信
|
||
|
||
- **HTTPS 强制加密**:所有通信均通过 HTTPS,确保数据传输安全。
|
||
|
||
### 5.2 权限隔离
|
||
|
||
- **数据隔离**:
|
||
- 管理员和客户用户的资源严格隔离,防止未授权访问。
|
||
- **令牌安全**:
|
||
- 令牌在存储和传输过程中均加密,防止泄露。
|
||
|
||
### 5.3 令牌注销
|
||
|
||
- **即时注销**:
|
||
- 支持管理员主动注销令牌,令牌立即失效。
|
||
- **动态验证**:
|
||
- 使用 Redis 存储令牌状态,支持高效的验证和注销。
|
||
|
||
---
|
||
|
||
## 6. 部署架构
|
||
|
||
### 6.1 服务分层
|
||
|
||
1. **应用层**
|
||
- 部署 Laravel 应用,分别处理 Frontend API 和 Admin Backend。
|
||
|
||
2. **缓存层**
|
||
- 部署 Redis,用于存储和管理短期访问令牌。
|
||
|
||
3. **数据库层**
|
||
- 部署 MySQL,存储持久化数据。
|
||
|
||
4. **日志与监控层**
|
||
- 部署 ELK 或 Prometheus,用于日志收集和系统监控。
|
||
|
||
### 6.2 部署方式
|
||
|
||
- **容器化部署**
|
||
- 使用 Docker 对各服务进行容器化,便于部署和扩展。
|
||
|
||
- **负载均衡**
|
||
- 使用 Nginx 或其他负载均衡器,实现流量分发和高可用性。
|
||
|
||
- **高可用性**
|
||
- 数据库和 Redis 配置主从或集群模式,支持高并发和容错。
|
||
|
||
---
|
||
|
||
## 7. 总结
|
||
|
||
- **灵活性**:
|
||
- 系统支持管理员动态管理 LLM 提供商,便于扩展和维护。
|
||
|
||
- **安全性**:
|
||
- 采用多重安全措施,确保系统和数据的安全。
|
||
|
||
- **可扩展性**:
|
||
- 系统架构设计支持高并发和横向扩展,满足业务增长需求。
|
||
|
||
如有任何进一步的需求或需要调整的地方,请随时告知! |