File size: 7,620 Bytes
927965d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
# 项目架构指南

本文档详细介绍 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 代理服务。