基于 FastAPI 的高性能 OpenAI API 兼容代理服务,采用多提供商架构设计,支持 Z.AI(GLM-4.5/4.6 系列)、K2Think、LongCat 等多种 AI 模型。
- 🔌 OpenAI API 兼容 - 无缝对接现有 OpenAI 客户端
- 🏗️ 多提供商架构 - 统一接口支持 Z.AI、K2Think、LongCat
- 🧬 数据库管理 - SQLite + Web 后台统一管理 Token
- 🚀 流式响应 - 高性能 SSE 实时流式输出
- 🧠 思考模式 - 支持 Thinking 模型的推理过程展示
- 🐳 容器化部署 - Docker/Docker Compose 一键部署
- 🔄 Token 池 - 智能轮询、容错恢复、健康检查
- 📊 管理后台 - 实时监控、配置管理
- 🔐 安全认证 - 密码保护的管理后台访问
❤️ 感谢各位的反馈推动项目改进!
- Python 3.9-3.12
- pip 或 uv (推荐)
# 1. 克隆项目
git clone https://github.com/ZyphrZero/z.ai2api_python.git
cd z.ai2api_python
# 2. 安装依赖(使用 uv 推荐)
curl -LsSf https://astral.sh/uv/install.sh | sh
uv sync
# 或使用 pip
pip install -r requirements.txt
# 3. 配置环境变量
cp .env.example .env
# 编辑 .env 文件,设置 AUTH_TOKEN 等配置
# 4. 启动服务
uv run python main.py # 或 python main.py首次运行会自动初始化数据库,访问以下地址:
- API 文档:http://localhost:8080/docs
- 管理后台:http://localhost:8080/admin(**需要登录**)
- Token 管理:http://localhost:8080/admin/tokens
⚠️ 重要:
- 请妥善保管
AUTH_TOKEN,不要泄露给他人- 管理后台默认密码为
admin123,首次使用后请立即修改
从 Docker Hub 拉取镜像:
# 拉取最新镜像
docker pull zyphrzero/z-ai2api-python:latest
# 快速启动(创建数据目录)
mkdir -p data logs
# 运行容器
docker run -d \
--name z-ai-api-server \
-p 8080:8080 \
-e ADMIN_PASSWORD=admin123 \
-e AUTH_TOKEN=sk-your-api-key \
-e ANONYMOUS_MODE=true \
-e DB_PATH=/app/data/tokens.db \
-v $(pwd)/data:/app/data \
-v $(pwd)/logs:/app/logs \
--restart unless-stopped \
zyphrzero/z-ai2api-python:latest启动服务:
docker compose up -d# 进入部署目录
cd deploy
# 启动服务(会自动构建镜像)
docker compose up -d
# 查看日志
docker compose logs -f api-server容器使用卷映射自动持久化数据:
data/ # 数据库文件存储目录
├── tokens.db # SQLite 数据库(自动创建)
logs/ # 日志文件存储目录
数据在容器重启或重建后仍然保留,无需担心丢失。
📖 详细文档:Docker 部署指南
| 模型 | 上游 ID | 特性 |
|---|---|---|
GLM-4.5 |
0727-360B-API | 标准模型,通用对话 |
GLM-4.5-Thinking |
0727-360B-API | 思考模型,显示推理过程 |
GLM-4.5-Search |
0727-360B-API | 搜索模型,实时联网 |
GLM-4.5-Air |
0727-106B-API | 轻量模型,快速响应 |
GLM-4.5V |
glm-4.5v | 多模态模型,支持图像理解 |
GLM-4.6 |
GLM-4-6-API-V1 | 新版标准模型,200K 上下文 |
GLM-4.6-Thinking |
GLM-4-6-API-V1 | 新版思考模型,增强推理 |
GLM-4.6-Search |
GLM-4-6-API-V1 | 新版搜索模型,改进联网能力 |
GLM-4.6-advanced-search |
GLM-4-6-API-V1 | 高级搜索模型,深度研究 |
| 模型 | 特性 |
|---|---|
MBZUAI-IFM/K2-Think |
高质量推理模型 |
| 模型 | 特性 |
|---|---|
LongCat-Flash |
快速响应 |
LongCat |
标准模型 |
LongCat-Search |
搜索增强 |
| 变量名 | 默认值 | 说明 |
|---|---|---|
AUTH_TOKEN |
sk-your-api-key |
客户端访问密钥(必填) |
ADMIN_PASSWORD |
admin123 |
管理后台登录密码(强烈建议修改) |
LISTEN_PORT |
8080 |
服务监听端口 |
DEBUG_LOGGING |
false |
调试日志(支持热重载) |
ANONYMOUS_MODE |
true |
Z.AI 匿名模式 |
TOOL_SUPPORT |
true |
Function Call 开关 |
SKIP_AUTH_TOKEN |
false |
跳过认证(仅开发) |
DB_PATH |
tokens.db |
数据库文件路径(Docker: /app/data/tokens.db) |
| 变量名 | 说明 |
|---|---|
LONGCAT_TOKEN |
LongCat 认证 Token(可选) |
TOKEN_FAILURE_THRESHOLD |
Token 失败阈值(默认 3) |
TOKEN_RECOVERY_TIMEOUT |
Token 恢复超时(默认 1800 秒) |
💡 详细配置请参考 .env.example 或 deploy/.env.example
- 启动服务后访问:http://localhost:8080/admin
- 自动跳转到登录页面
- 输入管理密码(默认:
admin123) - 登录成功后进入仪表盘
在 .env 文件中修改 ADMIN_PASSWORD:
# 使用强密码(推荐 12 位以上)
ADMIN_PASSWORD=Your_Secure_Password_2025!重启服务后生效。
- ✅ Session 管理:基于 Cookie 的安全 Session
- ✅ 自动过期:登录后 24 小时自动失效
- ✅ HttpOnly Cookie:防止 XSS 攻击
- ✅ SameSite 保护:防止 CSRF 攻击
- ✅ 随机 Token:使用加密安全的随机数生成
💡 详细文档:管理后台登录功能使用说明
项目使用 SQLite 数据库统一管理 Token,首次运行会自动初始化:
# 首次运行自动创建 tokens.db
python main.py
# 访问 Web 管理后台
http://localhost:8080/admin- ✅ 密码保护 - 安全的登录认证
- ✅ Token 增删改查
- ✅ 批量导入/导出
- ✅ 启用/禁用 Token
- ✅ Token 有效性检测
- ✅ 多提供商支持(Z.AI/K2Think/LongCat)
- 负载均衡:轮询使用多个 Token 分散请求
- 自动容错:Token 失败时自动切换
- 自动恢复:失败 Token 超时后重试
- 智能去重:自动检测重复 Token
- 回退机制:认证失败自动降级匿名模式
A: AUTH_TOKEN 是自定义的 API 密钥,用于客户端访问本服务,需在 .env 文件或 docker-compose.yml 中配置,确保客户端与服务端一致。
A: 匿名模式使用临时 Token 访问 Z.AI,避免对话历史共享,保护隐私。设置 ANONYMOUS_MODE=true 启用。
A: 访问 Web 管理后台 http://localhost:8080/admin/tokens(需要先登录)即可增删改查 Token,支持批量导入导出。
A: 在 .env 文件或 docker-compose.yml 中修改 ADMIN_PASSWORD 为新密码,然后重启服务即可。
A: 错误提示 unable to open database file 通常是权限问题。解决方案:
cd deploy
mkdir -p ./data ./logs
chmod 755 ./data ./logs
docker compose down && docker compose up -d --build详见 Docker 部署指南
A: 当前版本暂不支持禁用登录功能。如有需要,请手动移除路由中的 dependencies=[Depends(require_auth)]。
- 访问 Z.AI 官网 并登录
- 按 F12 打开开发者工具
- 进入 Application → Local Storage → Cookies
- 复制
token值
⚠️ 多模态功能需要非匿名 Token
- 访问 LongCat 官网 并登录美团账号
- 按 F12 打开开发者工具
- 进入 "Application" -> "Local Storage" -> "Cookie"列表中找到名为
passport_token_key的值 - 复制
passport_token_key值
| 组件 | 技术 | 版本 | 说明 |
|---|---|---|---|
| Web 框架 | FastAPI | 0.116.1 | 高性能异步框架 |
| ASGI 服务器 | Granian | 2.5.2 | Rust 高性能服务器 |
| HTTP 客户端 | HTTPX | 0.28.1 | 异步 HTTP 客户端 |
| 数据验证 | Pydantic | 2.11.7 | 类型安全验证 |
| 数据库 | SQLite (aiosqlite) | 0.20.0 | Token 存储 |
| 模板引擎 | Jinja2 | 3.1.4 | Web 后台模板 |
| 日志系统 | Loguru | 0.7.3 | 结构化日志 |
┌─────────────┐ ┌────────────────────────────────┐ ┌──────────────┐
│ OpenAI │ │ FastAPI Server │ │ Z.AI API │
│ Client │─────▶│ │─────▶│ (GLM-4.x) │
└─────────────┘ │ ┌──────────────────────────┐ │ └──────────────┘
│ │ Provider Router │ │
│ │ ┌────────┬────────────┐ │ │ ┌──────────────┐
│ │ │ Z.AI │ K2Think │ │ │ │ K2Think API │
│ │ │Provider│ Provider │ │ │─────▶│ │
│ │ └────────┴────────────┘ │ │ └──────────────┘
│ │ ┌────────────┐ │ │
│ │ │ LongCat │ │ │ ┌──────────────┐
│ │ │ Provider │ │ │ │ LongCat API │
│ │ └────────────┘ │ │─────▶│ │
│ └──────────────────────────┘ │ └──────────────┘
│ │
│ ┌──────────────────────────┐ │
│ │ Web Admin Dashboard │ │
│ │ (Token/Stats/Monitor) │ │
│ └──────────────────────────┘ │
└────────────────────────────────┘
↕
┌─────────┐
│SQLite DB│
│(tokens) │
└─────────┘
欢迎提交 Issue 和 Pull Request!请确保代码符合 PEP 8 规范。
本项目采用 MIT 许可证 - 详见 LICENSE 文件。
- 本项目与 Z.AI、K2Think、LongCat 等 AI 提供商官方无关
- 使用前请确保遵守各提供商的服务条款
- 请勿用于商业用途或违反使用条款的场景
- 项目仅供学习和研究使用
- 用户需自行承担使用风险