File size: 7,077 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
# 流式处理模式详解

本文档详细介绍 AI Studio Proxy API 的三层流式响应获取机制,包括各种模式的工作原理、配置方法和适用场景。

## 🔄 三层响应获取机制概览

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

```

请求 → 第一层: 集成流式代理 → 第二层: 外部Helper服务 → 第三层: Playwright页面交互

```

### 工作原理

1. **优先级处理**: 按层级顺序尝试获取响应
2. **自动降级**: 上层失败时自动降级到下层
3. **性能优化**: 优先使用高性能方案
4. **完整后备**: 确保在任何情况下都能获取响应

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

### 概述
集成流式代理是默认启用的高性能响应获取方案,提供最佳的性能和稳定性。

### 技术特点
- **独立进程**: 运行在独立的进程中,不影响主服务
- **直接转发**: 直接转发请求到 AI Studio,减少中间环节
- **流式处理**: 原生支持流式响应,实时传输数据
- **高性能**: 最小化延迟,最大化吞吐量

### 配置方式

#### .env 文件配置 (推荐)
```env

# 启用集成流式代理

STREAM_PORT=3120



# 禁用集成流式代理

STREAM_PORT=0

```

#### 命令行配置
```bash

# 启用 (默认端口 3120)

python launch_camoufox.py --headless --stream-port 3120



# 自定义端口

python launch_camoufox.py --headless --stream-port 3125



# 禁用

python launch_camoufox.py --headless --stream-port 0

```

### 工作流程
1. 主服务接收 API 请求
2. 将请求转发到集成流式代理 (端口 3120)
3. 流式代理直接与 AI Studio 通信
4. 实时流式返回响应数据
5. 主服务转发响应给客户端

### 适用场景
- **日常使用**: 提供最佳性能体验
- **生产环境**: 稳定可靠的生产部署
- **高并发**: 支持多用户同时使用
- **流式应用**: 需要实时响应的应用

## 🔧 第二层: 外部 Helper 服务

### 概述
外部 Helper 服务是可选的备用方案,当集成流式代理不可用时启用。

### 技术特点
- **外部服务**: 独立部署的外部服务
- **认证依赖**: 需要有效的认证文件
- **灵活配置**: 支持自定义端点
- **备用方案**: 作为流式代理的备用

### 配置方式

#### .env 文件配置
```env

# 配置 Helper 服务端点

GUI_DEFAULT_HELPER_ENDPOINT=http://your-helper-service:port



# 或留空禁用

GUI_DEFAULT_HELPER_ENDPOINT=

```

#### 命令行配置
```bash

# 启用 Helper 服务

python launch_camoufox.py --headless --helper 'http://your-helper-service:port'



# 禁用 Helper 服务

python launch_camoufox.py --headless --helper ''

```

### 认证要求
- **认证文件**: 需要 `auth_profiles/active/*.json` 文件
- **SAPISID Cookie**: 从认证文件中提取必要的认证信息
- **有效性检查**: 自动验证认证文件的有效性

### 工作流程
1. 检查集成流式代理是否可用
2. 如果不可用,检查 Helper 服务配置
3. 验证认证文件的有效性
4. 将请求转发到外部 Helper 服务
5. Helper 服务处理请求并返回响应

### 适用场景
- **特殊环境**: 需要特定网络环境的部署
- **自定义服务**: 使用自己开发的 Helper 服务
- **备用方案**: 当集成代理不可用时的备选
- **分布式部署**: Helper 服务独立部署的场景

## 🎭 第三层: Playwright 页面交互

### 概述
Playwright 页面交互是最终的后备方案,通过浏览器自动化获取响应。

### 技术特点
- **浏览器自动化**: 使用 Camoufox 浏览器模拟用户操作
- **完整参数支持**: 支持所有 AI Studio 参数
- **反指纹检测**: 使用 Camoufox 降低检测风险
- **最终后备**: 确保在任何情况下都能工作

### 配置方式

#### .env 文件配置
```env

# 禁用前两层,强制使用 Playwright

STREAM_PORT=0

GUI_DEFAULT_HELPER_ENDPOINT=



# 浏览器配置

LAUNCH_MODE=headless

DEFAULT_CAMOUFOX_PORT=9222

```

#### 命令行配置
```bash

# 纯 Playwright 模式

python launch_camoufox.py --headless --stream-port 0 --helper ''



# 调试模式 (有头浏览器)

python launch_camoufox.py --debug

```

### 参数支持
Playwright 模式支持完整的 AI Studio 参数控制:

- **基础参数**: `temperature`, `max_output_tokens`, `top_p`
- **停止序列**: `stop` 参数
- **思考预算**: `reasoning_effort` 参数
- **工具调用**: `tools` 参数 (Google Search 等)
- **URL上下文**: `ENABLE_URL_CONTEXT` 配置

### 工作流程
1. 检查前两层是否可用
2. 如果都不可用,启用 Playwright 模式
3. 在 AI Studio 页面设置参数
4. 发送消息到聊天界面
5. 通过编辑/复制按钮获取响应
6. 解析并返回响应数据

### 适用场景
- **调试模式**: 开发和调试时使用
- **参数精确控制**: 需要精确控制所有参数
- **首次认证**: 获取认证文件时使用
- **故障排除**: 当其他方式都失败时的最终方案

## ⚙️ 模式选择和配置

### 推荐配置

#### 生产环境
```env

# 优先使用集成流式代理

STREAM_PORT=3120

GUI_DEFAULT_HELPER_ENDPOINT=

LAUNCH_MODE=headless

```

#### 开发环境
```env

# 启用调试日志

DEBUG_LOGS_ENABLED=true

STREAM_PORT=3120

LAUNCH_MODE=normal

```

#### 调试模式
```env

# 强制使用 Playwright,启用详细日志

STREAM_PORT=0

GUI_DEFAULT_HELPER_ENDPOINT=

DEBUG_LOGS_ENABLED=true

TRACE_LOGS_ENABLED=true

LAUNCH_MODE=normal

```

### 性能对比

| 模式 | 延迟 | 吞吐量 | 参数支持 | 稳定性 | 适用场景 |
|------|------|--------|----------|--------|----------|
| 集成流式代理 | 最低 | 最高 | 基础 | 最高 | 生产环境 |
| Helper 服务 | 中等 | 中等 | 取决于实现 | 中等 | 特殊环境 |
| Playwright | 最高 | 最低 | 完整 | 中等 | 调试开发 |

### 故障排除

#### 集成流式代理问题
- 检查端口是否被占用
- 验证代理配置
- 查看流式代理日志

#### Helper 服务问题
- 验证认证文件有效性
- 检查 Helper 服务可达性
- 确认 SAPISID Cookie

#### Playwright 问题
- 检查浏览器连接状态
- 验证页面加载状态
- 查看浏览器控制台错误

## 🔍 监控和调试

### 日志配置
```env

# 启用详细日志

DEBUG_LOGS_ENABLED=true

TRACE_LOGS_ENABLED=true

SERVER_LOG_LEVEL=DEBUG

```

### 健康检查
访问 `/health` 端点查看各层状态:
```json

{

  "status": "healthy",

  "playwright_ready": true,

  "browser_connected": true,

  "page_ready": true,

  "worker_running": true,

  "queue_length": 0,

  "stream_proxy_status": "running"

}

```

### 实时监控
- Web UI 的"服务器信息"标签页
- WebSocket 日志流 (`/ws/logs`)
- 队列状态端点 (`/v1/queue`)

这种三层机制确保了系统的高可用性和最佳性能,为不同的使用场景提供了灵活的配置选项。