File size: 7,563 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
# Web UI 使用指南

本项目内置了一个功能丰富的现代化 Web 用户界面,提供聊天测试、状态监控、API 密钥管理等完整功能。

## 访问方式

在浏览器中打开服务器的根地址,默认为 `http://127.0.0.1:2048/`**端口配置**- 默认端口:2048
- 配置方式:在 `.env` 文件中设置 `PORT=2048``DEFAULT_FASTAPI_PORT=2048`
- 命令行覆盖:使用 `--server-port` 参数
- GUI 配置:通过图形启动器直接设置

## 主要功能

### 聊天界面

- **基本聊天**: 发送消息并接收来自 AI Studio 的回复,支持三层响应获取机制
- **Markdown 支持**: 支持 Markdown 格式化、代码块高亮和数学公式渲染
- **自动 API 密钥认证**: 对话请求会自动包含 Bearer token 认证,支持本地存储
- **智能错误处理**: 针对 401 认证错误、配额超限等提供专门的中文提示信息
- **输入验证**: 防止发送空消息,双重检查确保内容有效性
- **流式响应**: 支持实时流式输出,提供类似 ChatGPT 的打字机效果
- **客户端断开检测**: 智能检测客户端连接状态,优化资源使用

### 服务器信息

切换到 "服务器信息" 标签页可以查看:

- **API 调用信息**: Base URL、模型名称、认证状态等
- **服务健康检查**: `/health` 端点的详细状态,包括:
  - Playwright 连接状态
  - 浏览器连接状态
  - 页面就绪状态
  - 队列工作器状态
  - 当前队列长度
- **系统状态**: 三层响应获取机制的状态
- **实时更新**: 提供 "刷新" 按钮手动更新信息

### 安全的 API 密钥管理系统

"设置" 标签页提供完整的密钥管理功能:

#### 分级权限查看系统

**工作原理**:

- **未验证状态**: 只显示基本的密钥输入界面和提示信息
- **验证成功后**: 显示完整的密钥管理界面,包括服务器密钥列表

**验证流程**:

1. 在密钥输入框中输入有效的 API 密钥
2. 点击"验证密钥"按钮进行验证
3. 验证成功后,界面自动刷新显示完整功能
4. 验证状态在浏览器会话期间保持有效

#### 密钥管理功能

**密钥验证**:

- 支持验证任意 API 密钥的有效性
- 验证成功的密钥会自动保存到浏览器本地存储
- 验证失败会显示具体的错误信息

**密钥列表查看**:

- 显示服务器上配置的所有 API 密钥
- 所有密钥都经过打码处理显示(格式:`xxxx****xxxx`- 显示密钥的添加时间和状态信息
- 提供单独的密钥验证按钮

**安全机制**:

- **打码显示**: 所有密钥都经过安全打码处理,保护敏感信息
- **会话保持**: 验证状态仅在当前浏览器会话中有效
- **本地存储**: 验证成功的密钥保存在浏览器本地存储中
- **重置功能**: 可随时重置验证状态,重新进行密钥验证

#### 密钥输入界面

**自动保存**: 输入框内容会自动保存到浏览器本地存储
**快捷操作**: 支持回车键快速验证
**可见性切换**: 提供密钥可见性切换按钮
**状态指示**: 实时显示当前的验证状态和密钥配置情况

### 模型设置

"模型设置" 标签页允许用户配置并保存(至浏览器本地存储)以下参数:

- **系统提示词 (System Prompt)**: 自定义指导模型的行为和角色
- **温度 (Temperature)**: 控制生成文本的随机性
- **最大输出 Token (Max Output Tokens)**: 限制模型单次回复的长度
- **Top-P**: 控制核心采样的概率阈值
- **停止序列 (Stop Sequences)**: 指定一个或多个序列,当模型生成这些序列时将停止输出
- 提供"保存设置"和"重置为默认值"按钮

### 模型选择器

在主聊天界面可以选择希望使用的模型,选择后会尝试在 AI Studio 后端进行切换。

### 系统日志

右侧有一个可展开/收起的侧边栏,通过 WebSocket (`/ws/logs`) 实时显示后端日志:

- 包含日志级别、时间戳和消息内容
- 提供清理日志的按钮
- 用于调试和监控

### 主题切换

右上角提供 "浅色"/"深色" 按钮,用于切换界面主题,偏好设置会保存在浏览器本地存储中。

### 响应式设计

界面会根据屏幕大小自动调整布局。

## 使用说明

### 首次使用

1. 启动服务后,在浏览器中访问 `http://127.0.0.1:2048/`

2. **API 密钥配置检查**   - 访问"设置"标签页查看 API 密钥状态
   - 如果显示"不需要 API 密钥",则可以直接使用
   - 如果显示"需要 API 密钥",则需要进行密钥验证

3. **API 密钥验证流程**(如果需要):

   - 在"API 密钥管理"区域输入有效的 API 密钥
   - 点击"验证密钥"按钮进行验证
   - 验证成功后界面会自动刷新,显示:
     - 验证成功的状态指示
     - 服务器上配置的密钥列表(打码显示)
     - 完整的密钥管理功能

4. **密钥获取方式**   - 如果是管理员:可以直接查看 `auth_profiles/` 目录下的 `key.txt` 文件
   - 如果是用户:需要联系管理员获取有效的 API 密钥
   - 密钥格式:至少 8 个字符的字符串

### 日常使用

3. 在聊天界面输入消息进行对话测试(会自动使用验证过的密钥进行认证)
4. 通过"服务器信息"标签查看服务状态
5. 在"模型设置"标签中调整对话参数
6. 侧边栏显示实时系统日志,可用于调试和监控

## 安全机制说明

- **分级权限**: 未验证状态下只显示基本信息,验证成功后显示完整的密钥管理界面
- **会话保持**: 验证状态在浏览器会话期间保持,无需重复验证
- **安全显示**: 所有密钥都经过打码处理,保护敏感信息
- **重置功能**: 可随时重置验证状态,重新进行密钥验证
- **自动认证**: 对话请求自动包含认证头,确保 API 调用安全

## 用途

这个 Web UI 主要用于:

- 简单聊天测试
- 开发调试
- 快速验证代理是否正常工作
- 监控服务器状态
- 安全管理 API 密钥
- 方便地调整和测试模型参数

## 故障排除

### 无法显示日志或服务器信息

- 检查浏览器开发者工具 (F12) 的控制台和网络选项卡是否有错误
- 确认 WebSocket 连接 (`/ws/logs`) 是否成功建立
- 确认 `/health``/api/info` 端点是否能正常访问并返回数据

### API 密钥管理问题

- **无法验证密钥**: 检查输入的密钥格式,确认服务器上的 `auth_profiles/key.txt` 文件包含有效密钥
- **验证成功但无法查看密钥列表**: 检查浏览器控制台是否有 JavaScript 错误,尝试刷新页面
- **验证状态丢失**: 验证状态仅在当前浏览器会话中有效,关闭浏览器或标签页会丢失状态
- **密钥显示异常**: 确认 `/api/keys` 端点返回正确的 JSON 格式数据

### 对话功能问题

- **发送消息后收到 401 错误**: API 密钥认证失败,需要在设置页面重新验证密钥
- **无法发送空消息**: 这是正常的安全机制,确保输入有效内容后再发送
- **对话请求失败**: 检查网络连接,确认服务器正常运行,查看浏览器控制台和服务器日志

## 下一步

Web UI 使用完成后,请参考:

- [API 使用指南](api-usage.md)
- [故障排除指南](troubleshooting.md)