# 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 提供商,便于扩展和维护。 - **安全性**: - 采用多重安全措施,确保系统和数据的安全。 - **可扩展性**: - 系统架构设计支持高并发和横向扩展,满足业务增长需求。 如有任何进一步的需求或需要调整的地方,请随时告知!