ZyphrZero
commited on
Commit
·
5d737f2
1
Parent(s):
b3ffb9a
📝 更新 .env.example 和 README.md 文件
Browse files- .env.example +39 -60
- README.md +32 -35
- app/utils/helpers.py +1 -1
.env.example
CHANGED
|
@@ -1,93 +1,72 @@
|
|
| 1 |
# Z.AI API 代理服务配置文件示例
|
| 2 |
# 复制此文件为 .env 并根据需要修改配置值
|
| 3 |
|
| 4 |
-
#
|
| 5 |
-
# API
|
| 6 |
-
|
| 7 |
|
| 8 |
-
#
|
| 9 |
-
# 客户端调用时需要使用此密钥进行认证
|
| 10 |
AUTH_TOKEN=sk-your-api-key
|
| 11 |
-
|
|
|
|
| 12 |
SKIP_AUTH_TOKEN=false
|
| 13 |
|
| 14 |
-
#
|
|
|
|
| 15 |
BACKUP_TOKEN=eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjMxNmJjYjQ4LWZmMmYtNGExNS04NTNkLWYyYTI5YjY3ZmYwZiIsImVtYWlsIjoiR3Vlc3QtMTc1NTg0ODU4ODc4OEBndWVzdC5jb20ifQ.PktllDySS3trlyuFpTeIZf-7hl8Qu1qYF3BxjgIul0BrNux2nX9hVzIjthLXKMWAf9V0qM8Vm_iyDqkjPGsaiQ
|
| 16 |
|
| 17 |
-
#
|
| 18 |
-
# 上游服务配置
|
| 19 |
-
# =============================================================================
|
| 20 |
-
|
| 21 |
-
# Z.AI 上游 API 地址
|
| 22 |
-
API_ENDPOINT=https://chat.z.ai/api/chat/completions
|
| 23 |
-
|
| 24 |
-
# =============================================================================
|
| 25 |
-
# 模型配置
|
| 26 |
-
# =============================================================================
|
| 27 |
-
|
| 28 |
-
# 默认模型名称
|
| 29 |
PRIMARY_MODEL=GLM-4.5
|
| 30 |
-
|
| 31 |
-
# 思考模式模型名称
|
| 32 |
THINKING_MODEL=GLM-4.5-Thinking
|
| 33 |
-
|
| 34 |
-
# 搜索模式模型名称
|
| 35 |
SEARCH_MODEL=GLM-4.5-Search
|
| 36 |
-
|
| 37 |
-
# Air 模型名称
|
| 38 |
AIR_MODEL=GLM-4.5-Air
|
| 39 |
|
| 40 |
-
#
|
| 41 |
-
# 服务器配置
|
| 42 |
-
# =============================================================================
|
| 43 |
-
|
| 44 |
# 服务监听端口
|
| 45 |
LISTEN_PORT=8080
|
| 46 |
|
| 47 |
-
# 调试日志开关
|
| 48 |
DEBUG_LOGGING=true
|
| 49 |
|
| 50 |
-
#
|
| 51 |
-
# 功能配置
|
| 52 |
-
# =============================================================================
|
| 53 |
-
|
| 54 |
# 思考内容处理策略
|
| 55 |
-
# think: 转换为 <span>
|
| 56 |
# strip: 移除思考内容
|
| 57 |
# raw: 保留原始格式
|
| 58 |
THINKING_PROCESSING=think
|
| 59 |
|
| 60 |
-
#
|
| 61 |
-
#
|
|
|
|
| 62 |
ANONYMOUS_MODE=true
|
| 63 |
|
| 64 |
-
# Function Call 功能开关
|
| 65 |
TOOL_SUPPORT=true
|
| 66 |
|
| 67 |
# 工具调用扫描限制(字符数)
|
| 68 |
SCAN_LIMIT=200000
|
| 69 |
|
| 70 |
-
#
|
| 71 |
-
#
|
| 72 |
-
#
|
| 73 |
-
#
|
| 74 |
-
#
|
| 75 |
-
#
|
| 76 |
-
#
|
| 77 |
-
# 2. 根据需要修改配置值
|
| 78 |
-
#
|
| 79 |
-
# 3. 启动服务:
|
| 80 |
-
# python main.py
|
| 81 |
#
|
| 82 |
-
#
|
| 83 |
-
#
|
| 84 |
-
#
|
| 85 |
-
#
|
| 86 |
-
#
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 87 |
#
|
| 88 |
-
#
|
| 89 |
-
#
|
| 90 |
-
#
|
| 91 |
-
#
|
| 92 |
-
# )
|
| 93 |
-
#
|
|
|
|
| 1 |
# Z.AI API 代理服务配置文件示例
|
| 2 |
# 复制此文件为 .env 并根据需要修改配置值
|
| 3 |
|
| 4 |
+
# ========== API 基础配置 ==========
|
| 5 |
+
# Z.ai API 端点地址
|
| 6 |
+
API_ENDPOINT=https://chat.z.ai/api/chat/completions
|
| 7 |
|
| 8 |
+
# 客户端认证密钥(您自定义的 API 密钥,用于客户端访问本服务)
|
|
|
|
| 9 |
AUTH_TOKEN=sk-your-api-key
|
| 10 |
+
|
| 11 |
+
# 跳过客户端认证(仅开发环境使用)
|
| 12 |
SKIP_AUTH_TOKEN=false
|
| 13 |
|
| 14 |
+
# Z.ai 备用访问令牌(当匿名模式失败时使用)
|
| 15 |
+
# 注意:这是用于访问 Z.ai 服务的令牌,不是客户端认证密钥
|
| 16 |
BACKUP_TOKEN=eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjMxNmJjYjQ4LWZmMmYtNGExNS04NTNkLWYyYTI5YjY3ZmYwZiIsImVtYWlsIjoiR3Vlc3QtMTc1NTg0ODU4ODc4OEBndWVzdC5jb20ifQ.PktllDySS3trlyuFpTeIZf-7hl8Qu1qYF3BxjgIul0BrNux2nX9hVzIjthLXKMWAf9V0qM8Vm_iyDqkjPGsaiQ
|
| 17 |
|
| 18 |
+
# ========== 模型配置 ==========
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 19 |
PRIMARY_MODEL=GLM-4.5
|
|
|
|
|
|
|
| 20 |
THINKING_MODEL=GLM-4.5-Thinking
|
|
|
|
|
|
|
| 21 |
SEARCH_MODEL=GLM-4.5-Search
|
|
|
|
|
|
|
| 22 |
AIR_MODEL=GLM-4.5-Air
|
| 23 |
|
| 24 |
+
# ========== 服务器配置 ==========
|
|
|
|
|
|
|
|
|
|
| 25 |
# 服务监听端口
|
| 26 |
LISTEN_PORT=8080
|
| 27 |
|
| 28 |
+
# 调试日志开关
|
| 29 |
DEBUG_LOGGING=true
|
| 30 |
|
| 31 |
+
# ========== 功能配置 ==========
|
|
|
|
|
|
|
|
|
|
| 32 |
# 思考内容处理策略
|
| 33 |
+
# think: 转换为 <span> 标签(OpenAI 兼容)
|
| 34 |
# strip: 移除思考内容
|
| 35 |
# raw: 保留原始格式
|
| 36 |
THINKING_PROCESSING=think
|
| 37 |
|
| 38 |
+
# 匿名模式开关(推荐启用)
|
| 39 |
+
# true: 自动从 Z.ai 获取临时访问令牌,避免对话历史共享
|
| 40 |
+
# false: 使用固定令牌 BACKUP_TOKEN
|
| 41 |
ANONYMOUS_MODE=true
|
| 42 |
|
| 43 |
+
# Function Call 功能开关
|
| 44 |
TOOL_SUPPORT=true
|
| 45 |
|
| 46 |
# 工具调用扫描限制(字符数)
|
| 47 |
SCAN_LIMIT=200000
|
| 48 |
|
| 49 |
+
# ========== Z.ai 访问令牌获取说明 ==========
|
| 50 |
+
#
|
| 51 |
+
# 方式一:匿名模式(推荐,默认启用)
|
| 52 |
+
# - 设置 ANONYMOUS_MODE=true
|
| 53 |
+
# - 系统会自动从 Z.ai 获取临时访问令牌
|
| 54 |
+
# - 无需手动配置 Z.ai 账户
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 55 |
#
|
| 56 |
+
# 方式二:固定令牌模式
|
| 57 |
+
# - 设置 ANONYMOUS_MODE=false
|
| 58 |
+
# - 需要手动获取 Z.ai 访问令牌并设置 BACKUP_TOKEN
|
| 59 |
+
#
|
| 60 |
+
# 获取 Z.ai 访问令牌步骤:
|
| 61 |
+
# 1. 访问 https://chat.z.ai
|
| 62 |
+
# 2. 打开浏览器开发者工具 (F12)
|
| 63 |
+
# 3. 切换到 Network 标签页
|
| 64 |
+
# 4. 在 Z.ai 中发送一条消息
|
| 65 |
+
# 5. 在网络请求中找到 chat/completions 请求
|
| 66 |
+
# 6. 查看请求头中的 Authorization: Bearer <token>
|
| 67 |
+
# 7. 复制 <token> 部分到 BACKUP_TOKEN
|
| 68 |
#
|
| 69 |
+
# 注意:
|
| 70 |
+
# - BACKUP_TOKEN 是访问 Z.ai 服务的令牌
|
| 71 |
+
# - AUTH_TOKEN 是客户端访问本代理服务的认证密钥(您自定义)
|
| 72 |
+
# - 两者用途不同,请勿混淆
|
|
|
|
|
|
README.md
CHANGED
|
@@ -69,7 +69,6 @@ response = client.chat.completions.create(
|
|
| 69 |
print(response.choices[0].message.content)
|
| 70 |
```
|
| 71 |
|
| 72 |
-
|
| 73 |
### Docker 部署
|
| 74 |
|
| 75 |
```bash
|
|
@@ -81,12 +80,13 @@ docker-compose up -d
|
|
| 81 |
|
| 82 |
### 支持的模型
|
| 83 |
|
| 84 |
-
| 模型
|
| 85 |
-
|
| 86 |
-
| `GLM-4.5`
|
| 87 |
-
| `GLM-4.5-Thinking` | 0727-360B-API | 思考模型
|
| 88 |
-
| `GLM-4.5-Search`
|
| 89 |
-
| `GLM-4.5-Air`
|
|
|
|
| 90 |
|
| 91 |
### Function Call 功能
|
| 92 |
|
|
@@ -128,7 +128,7 @@ response = client.chat.completions.create(
|
|
| 128 |
for chunk in response:
|
| 129 |
content = chunk.choices[0].delta.content
|
| 130 |
reasoning = chunk.choices[0].delta.reasoning_content
|
| 131 |
-
|
| 132 |
if content:
|
| 133 |
print(content, end="")
|
| 134 |
if reasoning:
|
|
@@ -139,22 +139,22 @@ for chunk in response:
|
|
| 139 |
|
| 140 |
### 环境变量配置
|
| 141 |
|
| 142 |
-
| 变量名
|
| 143 |
-
|
| 144 |
-
| `AUTH_TOKEN`
|
| 145 |
-
| `API_ENDPOINT`
|
| 146 |
-
| `LISTEN_PORT`
|
| 147 |
-
| `PRIMARY_MODEL`
|
| 148 |
-
| `THINKING_MODEL`
|
| 149 |
-
| `SEARCH_MODEL`
|
| 150 |
-
| `AIR_MODEL`
|
| 151 |
-
| `DEBUG_LOGGING`
|
| 152 |
-
| `THINKING_PROCESSING` | `think`
|
| 153 |
-
| `ANONYMOUS_MODE`
|
| 154 |
-
| `TOOL_SUPPORT`
|
| 155 |
-
| `SKIP_AUTH_TOKEN`
|
| 156 |
-
| `SCAN_LIMIT`
|
| 157 |
-
| `BACKUP_TOKEN`
|
| 158 |
|
| 159 |
### 思考内容处理策略
|
| 160 |
|
|
@@ -219,13 +219,14 @@ if response.choices[0].message.tool_calls:
|
|
| 219 |
## ❓ 常见问题
|
| 220 |
|
| 221 |
**Q: 如何获取 AUTH_TOKEN?**
|
| 222 |
-
A: `AUTH_TOKEN` 为自己自定义的api key,在环境变量中配置,需要保证客户端与服务端一致。
|
| 223 |
|
| 224 |
**Q: 如何通过 Claude Code 使用本服务?**
|
| 225 |
|
| 226 |
-
A: 创建 [zai.js](https://gist.githubusercontent.com/musistudio/b35402d6f9c95c64269c7666b8405348/raw/f108d66fa050f308387938f149a2b14a295d29e9/gistfile1.txt) 这个ccr插件放在`./.claude-code-router/plugins`目录下,配置 `./.claude-code-router/config.json` 指向本服务地址,使用 `AUTH_TOKEN` 进行认证。
|
| 227 |
|
| 228 |
示例配置:
|
|
|
|
| 229 |
```json
|
| 230 |
{
|
| 231 |
"LOG": false,
|
|
@@ -248,14 +249,9 @@ A: 创建 [zai.js](https://gist.githubusercontent.com/musistudio/b35402d6f9c95c6
|
|
| 248 |
"name": "GLM",
|
| 249 |
"api_base_url": "http://127.0.0.1:8080/v1/chat/completions",
|
| 250 |
"api_key": "sk-your-api-key",
|
| 251 |
-
"models": [
|
| 252 |
-
"GLM-4.5",
|
| 253 |
-
"GLM-4.5-Air"
|
| 254 |
-
],
|
| 255 |
"transformers": {
|
| 256 |
-
"use": [
|
| 257 |
-
"zai"
|
| 258 |
-
]
|
| 259 |
}
|
| 260 |
}
|
| 261 |
],
|
|
@@ -295,7 +291,8 @@ A: 支持聊天完成、模型列表、流式响应、工具调用等核心功
|
|
| 295 |
A: 改进了工具调用的请求响应结构,支持更复杂的工具链调用和并行执行。
|
| 296 |
|
| 297 |
**Q: 如何选择合适的模型?**
|
| 298 |
-
A:
|
|
|
|
| 299 |
- **GLM-4.5**: 通用场景,性能和效果平衡
|
| 300 |
- **GLM-4.5-Thinking**: 需要了解推理过程的场景
|
| 301 |
- **GLM-4.5-Search**: 需要实时信息的场景
|
|
@@ -371,4 +368,4 @@ z.ai2api_python/
|
|
| 371 |
|
| 372 |
<div align="center">
|
| 373 |
Made with ❤️ by the community
|
| 374 |
-
</div>
|
|
|
|
| 69 |
print(response.choices[0].message.content)
|
| 70 |
```
|
| 71 |
|
|
|
|
| 72 |
### Docker 部署
|
| 73 |
|
| 74 |
```bash
|
|
|
|
| 80 |
|
| 81 |
### 支持的模型
|
| 82 |
|
| 83 |
+
| 模型 | 上游 ID | 描述 | 特性 |
|
| 84 |
+
| ------------------ | ------------- | ----------- | ---------------------- |
|
| 85 |
+
| `GLM-4.5` | 0727-360B-API | 标准模型 | 通用对话,平衡性能 |
|
| 86 |
+
| `GLM-4.5-Thinking` | 0727-360B-API | 思考模型 | 显示推理过程,透明度高 |
|
| 87 |
+
| `GLM-4.5-Search` | 0727-360B-API | 搜索模型 | 实时网络搜索,信息更新 |
|
| 88 |
+
| `GLM-4.5-Air` | 0727-106B-API | 轻量模型 | 快速响应,高效推理 |
|
| 89 |
+
| `GLM-4.5V` | glm-4.5v | ❌ 暂不支持 | |
|
| 90 |
|
| 91 |
### Function Call 功能
|
| 92 |
|
|
|
|
| 128 |
for chunk in response:
|
| 129 |
content = chunk.choices[0].delta.content
|
| 130 |
reasoning = chunk.choices[0].delta.reasoning_content
|
| 131 |
+
|
| 132 |
if content:
|
| 133 |
print(content, end="")
|
| 134 |
if reasoning:
|
|
|
|
| 139 |
|
| 140 |
### 环境变量配置
|
| 141 |
|
| 142 |
+
| 变量名 | 默认值 | 说明 |
|
| 143 |
+
| --------------------- | ----------------------------------------- | ---------------------- |
|
| 144 |
+
| `AUTH_TOKEN` | `sk-your-api-key` | 客户端认证密钥 |
|
| 145 |
+
| `API_ENDPOINT` | `https://chat.z.ai/api/chat/completions` | 上游 API 地址 |
|
| 146 |
+
| `LISTEN_PORT` | `8080` | 服务监听端口 |
|
| 147 |
+
| `PRIMARY_MODEL` | `GLM-4.5` | 主要模型名称 |
|
| 148 |
+
| `THINKING_MODEL` | `GLM-4.5-Thinking` | 思考模型名称 |
|
| 149 |
+
| `SEARCH_MODEL` | `GLM-4.5-Search` | 搜索模型名称 |
|
| 150 |
+
| `AIR_MODEL` | `GLM-4.5-Air` | Air 模型名称 |
|
| 151 |
+
| `DEBUG_LOGGING` | `true` | 调试日志开关 |
|
| 152 |
+
| `THINKING_PROCESSING` | `think` | 思考内容处理策略 |
|
| 153 |
+
| `ANONYMOUS_MODE` | `true` | 匿名模式开关 |
|
| 154 |
+
| `TOOL_SUPPORT` | `true` | Function Call 功能开关 |
|
| 155 |
+
| `SKIP_AUTH_TOKEN` | `false` | 跳过认证令牌验证 |
|
| 156 |
+
| `SCAN_LIMIT` | `200000` | 扫描限制 |
|
| 157 |
+
| `BACKUP_TOKEN` | `eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9...` | 备用认证令牌 |
|
| 158 |
|
| 159 |
### 思考内容处理策略
|
| 160 |
|
|
|
|
| 219 |
## ❓ 常见问题
|
| 220 |
|
| 221 |
**Q: 如何获取 AUTH_TOKEN?**
|
| 222 |
+
A: `AUTH_TOKEN` 为自己自定义的 api key,在环境变量中配置,需要保证客户端与服务端一致。
|
| 223 |
|
| 224 |
**Q: 如何通过 Claude Code 使用本服务?**
|
| 225 |
|
| 226 |
+
A: 创建 [zai.js](https://gist.githubusercontent.com/musistudio/b35402d6f9c95c64269c7666b8405348/raw/f108d66fa050f308387938f149a2b14a295d29e9/gistfile1.txt) 这个 ccr 插件放在`./.claude-code-router/plugins`目录下,配置 `./.claude-code-router/config.json` 指向本服务地址,使用 `AUTH_TOKEN` 进行认证。
|
| 227 |
|
| 228 |
示例配置:
|
| 229 |
+
|
| 230 |
```json
|
| 231 |
{
|
| 232 |
"LOG": false,
|
|
|
|
| 249 |
"name": "GLM",
|
| 250 |
"api_base_url": "http://127.0.0.1:8080/v1/chat/completions",
|
| 251 |
"api_key": "sk-your-api-key",
|
| 252 |
+
"models": ["GLM-4.5", "GLM-4.5-Air"],
|
|
|
|
|
|
|
|
|
|
| 253 |
"transformers": {
|
| 254 |
+
"use": ["zai"]
|
|
|
|
|
|
|
| 255 |
}
|
| 256 |
}
|
| 257 |
],
|
|
|
|
| 291 |
A: 改进了工具调用的请求响应结构,支持更复杂的工具链调用和并行执行。
|
| 292 |
|
| 293 |
**Q: 如何选择合适的模型?**
|
| 294 |
+
A:
|
| 295 |
+
|
| 296 |
- **GLM-4.5**: 通用场景,性能和效果平衡
|
| 297 |
- **GLM-4.5-Thinking**: 需要了解推理过程的场景
|
| 298 |
- **GLM-4.5-Search**: 需要实时信息的场景
|
|
|
|
| 368 |
|
| 369 |
<div align="center">
|
| 370 |
Made with ❤️ by the community
|
| 371 |
+
</div>
|
app/utils/helpers.py
CHANGED
|
@@ -208,4 +208,4 @@ def call_upstream_api(
|
|
| 208 |
)
|
| 209 |
|
| 210 |
debug_log(f"上游响应状态: {response.status_code}")
|
| 211 |
-
return response
|
|
|
|
| 208 |
)
|
| 209 |
|
| 210 |
debug_log(f"上游响应状态: {response.status_code}")
|
| 211 |
+
return response
|