AIstudioProxyAPI / docs /architecture-guide.md
lengfeng1360's picture
Upload 87 files
927965d verified

项目架构指南

本文档详细介绍 AI Studio Proxy API 项目的模块化架构设计、组件职责和交互关系。

🏗️ 整体架构概览

项目采用现代化的模块化架构设计,遵循单一职责原则,确保代码的可维护性和可扩展性。

核心设计原则

  • 模块化分离: 按功能领域划分模块,避免循环依赖
  • 单一职责: 每个模块专注于特定的功能领域
  • 配置统一: 使用 .env 文件和 config/ 模块统一管理配置
  • 依赖注入: 通过 dependencies.py 管理组件依赖关系
  • 异步优先: 全面采用异步编程模式,提升性能

📁 模块结构详解

AIstudioProxyAPI/
├── api_utils/              # FastAPI 应用核心模块
│   ├── app.py             # FastAPI 应用入口和生命周期管理
│   ├── routes.py          # API 路由定义和端点实现
│   ├── request_processor.py # 请求处理核心逻辑
│   ├── queue_worker.py    # 异步队列工作器
│   ├── auth_utils.py      # API 密钥认证管理
│   └── dependencies.py   # FastAPI 依赖注入
├── browser_utils/          # 浏览器自动化模块
│   ├── page_controller.py # 页面控制器和生命周期管理
│   ├── model_management.py # AI Studio 模型管理
│   ├── script_manager.py  # 脚本注入管理 (v3.0)
│   ├── operations.py      # 浏览器操作封装
│   └── initialization.py # 浏览器初始化逻辑
├── config/                 # 配置管理模块
│   ├── settings.py        # 主要设置和环境变量
│   ├── constants.py       # 系统常量定义
│   ├── timeouts.py        # 超时配置管理
│   └── selectors.py       # CSS 选择器定义
├── models/                 # 数据模型定义
│   ├── chat.py           # 聊天相关数据模型
│   ├── exceptions.py     # 自定义异常类
│   └── logging.py        # 日志相关模型
├── stream/                 # 流式代理服务模块
│   ├── main.py           # 流式代理服务入口
│   ├── proxy_server.py   # 代理服务器实现
│   ├── interceptors.py   # 请求拦截器
│   └── utils.py          # 流式处理工具
├── logging_utils/          # 日志管理模块
│   └── setup.py          # 日志系统配置
└── node_stream/            # Node流式处理模块

🔧 核心模块详解

1. api_utils/ - FastAPI 应用核心

职责: FastAPI 应用的核心逻辑,包括路由、认证、请求处理等。

app.py - 应用入口

  • FastAPI 应用创建和配置
  • 生命周期管理 (startup/shutdown)
  • 中间件配置 (API 密钥认证)
  • 全局状态初始化

routes.py - API 路由

  • /v1/chat/completions - 聊天完成端点
  • /v1/models - 模型列表端点
  • /api/keys/* - API 密钥管理端点
  • /health - 健康检查端点
  • WebSocket 日志端点

request_processor.py - 请求处理核心

  • 三层响应获取机制实现
  • 流式和非流式响应处理
  • 客户端断开检测
  • 错误处理和重试逻辑

queue_worker.py - 队列工作器

  • 异步请求队列处理
  • 并发控制和资源管理
  • 请求优先级处理

2. browser_utils/ - 浏览器自动化

职责: 浏览器自动化、页面控制、脚本注入等功能。

page_controller.py - 页面控制器

  • Camoufox 浏览器生命周期管理
  • 页面导航和状态监控
  • 认证文件管理

script_manager.py - 脚本注入管理 (v3.0)

  • Playwright 原生网络拦截
  • 油猴脚本解析和注入
  • 模型数据同步

model_management.py - 模型管理

  • AI Studio 模型列表获取
  • 模型切换和验证
  • 排除模型处理

3. config/ - 配置管理

职责: 统一的配置管理,包括环境变量、常量、超时等。

settings.py - 主要设置

  • .env 文件加载
  • 环境变量解析
  • 配置验证和默认值

constants.py - 系统常量

  • API 端点常量
  • 错误代码定义
  • 系统标识符

4. stream/ - 流式代理服务

职责: 独立的流式代理服务,提供高性能的请求转发。

proxy_server.py - 代理服务器

  • HTTP/HTTPS 代理实现
  • 请求拦截和修改
  • 上游代理支持

interceptors.py - 请求拦截器

  • AI Studio 请求拦截
  • 响应数据解析
  • 流式数据处理

🔄 三层响应获取机制

项目实现了三层响应获取机制,确保高可用性和最佳性能:

第一层: 集成流式代理 (Stream Proxy)

  • 位置: stream/ 模块
  • 端口: 3120 (可配置)
  • 优势: 最佳性能,直接处理请求
  • 适用: 日常使用,生产环境

第二层: 外部 Helper 服务

  • 配置: 通过 --helper 参数或环境变量
  • 依赖: 需要有效的认证文件
  • 适用: 备用方案,特殊环境

第三层: Playwright 页面交互

  • 位置: browser_utils/ 模块
  • 方式: 浏览器自动化操作
  • 优势: 完整参数支持,最终后备
  • 适用: 调试模式,参数精确控制

🔐 认证系统架构

API 密钥管理

  • 存储: auth_profiles/key.txt 文件
  • 格式: 每行一个密钥
  • 验证: Bearer Token 和 X-API-Key 双重支持
  • 管理: Web UI 分级权限查看

浏览器认证

  • 文件: auth_profiles/active/*.json
  • 内容: 浏览器会话和 Cookie
  • 更新: 通过调试模式重新获取

📊 配置管理架构

配置优先级

  1. 命令行参数 (最高优先级)
  2. 环境变量 (.env 文件)
  3. 默认值 (代码中定义)

配置分类

  • 服务配置: 端口、代理、日志等
  • 功能配置: 脚本注入、认证、超时等
  • API 配置: 默认参数、模型设置等

🚀 脚本注入架构 v3.0

工作机制

  1. 脚本解析: 从油猴脚本解析 MODELS_TO_INJECT 数组
  2. 网络拦截: Playwright 拦截 /api/models 请求
  3. 数据合并: 将注入模型与原始模型合并
  4. 响应修改: 返回包含注入模型的完整列表
  5. 前端注入: 同时注入脚本确保显示一致

技术优势

  • 100% 可靠: Playwright 原生拦截,无时序问题
  • 零维护: 脚本更新自动生效
  • 完全同步: 前后端使用相同数据源

🔧 开发和部署

开发环境

  • 依赖管理: Poetry
  • 类型检查: Pyright
  • 代码格式: Black + isort
  • 测试框架: pytest

部署方式

  • 本地部署: Poetry 虚拟环境
  • Docker 部署: 多阶段构建,支持多架构
  • 配置管理: 统一的 .env 文件

📈 性能优化

异步处理

  • 全面采用 async/await
  • 异步队列处理请求
  • 并发控制和资源管理

缓存机制

  • 模型列表缓存
  • 认证状态缓存
  • 配置热重载

资源管理

  • 浏览器实例复用
  • 连接池管理
  • 内存优化

🔍 监控和调试

日志系统

  • 分级日志记录
  • WebSocket 实时日志
  • 错误追踪和报告

健康检查

  • 组件状态监控
  • 队列长度监控
  • 性能指标收集

这种模块化架构确保了项目的可维护性、可扩展性和高性能,为用户提供稳定可靠的 AI Studio 代理服务。