llmbackend/doc/systemDesign.md
2024-12-04 11:24:47 +08:00

6.9 KiB
Raw Blame History

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 提供商,便于扩展和维护。
  • 安全性

    • 采用多重安全措施,确保系统和数据的安全。
  • 可扩展性

    • 系统架构设计支持高并发和横向扩展,满足业务增长需求。

如有任何进一步的需求或需要调整的地方,请随时告知!