6.9 KiB
6.9 KiB
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 客户用户使用流程
-
认证令牌分发:
- 管理员通过后台为客户用户生成认证令牌,并分发给客户用户。
-
生成访问令牌:
- 客户用户使用认证令牌,通过 API 获取短期访问令牌。
-
提示词请求:
- 客户用户使用访问令牌,向 Frontend API 发送提示词请求。
- 系统根据客户用户绑定的 LLM 提供商,调用对应的服务逻辑,发送请求并获取响应。
- 返回处理后的 LLM 响应给客户用户。
3.2 管理员操作流程
-
管理员登录:
- 超级管理员和管理员使用用户名和密码登录管理后台。
-
客户用户管理:
- 超级管理员可以管理所有客户用户。
- 管理员只能管理分配给他们的客户用户。
-
LLM 提供商管理:
- 管理员可以新增、修改、删除 LLM 提供商。
- 配置提供商的名称、服务名称、URL、Token 等信息。
-
令牌管理:
- 管理员为客户用户生成和管理认证令牌。
- 可以查看、修改或注销令牌。
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 服务分层
-
应用层
- 部署 Laravel 应用,分别处理 Frontend API 和 Admin Backend。
-
缓存层
- 部署 Redis,用于存储和管理短期访问令牌。
-
数据库层
- 部署 MySQL,存储持久化数据。
-
日志与监控层
- 部署 ELK 或 Prometheus,用于日志收集和系统监控。
6.2 部署方式
-
容器化部署
- 使用 Docker 对各服务进行容器化,便于部署和扩展。
-
负载均衡
- 使用 Nginx 或其他负载均衡器,实现流量分发和高可用性。
-
高可用性
- 数据库和 Redis 配置主从或集群模式,支持高并发和容错。
7. 总结
-
灵活性:
- 系统支持管理员动态管理 LLM 提供商,便于扩展和维护。
-
安全性:
- 采用多重安全措施,确保系统和数据的安全。
-
可扩展性:
- 系统架构设计支持高并发和横向扩展,满足业务增长需求。
如有任何进一步的需求或需要调整的地方,请随时告知!