项目简介
这是一个为 Z.ai 提供 OpenAI API 兼容接口的 Python 代理服务,允许开发者通过标准的 OpenAI API 格式访问 Z.ai 的 GLM-4.5 模型。
主要特性
- OpenAI API 兼容:完整支持
/v1/chat/completions和/v1/models端点 - 流式响应支持:完整实现 Server-Sent Events (SSE) 流式传输
- 思考内容处理:提供多种策略处理模型的思考过程(
<details>标签) - 匿名会话支持:可选使用匿名 token 避免共享对话历史
- 多种模型支持:支持 GLM-4.5 基础版、思考版和搜索版
- 调试模式:详细的请求/响应日志记录,便于开发调试
- CORS 支持:内置跨域资源共享支持
使用场景
- 将 Z.ai 集成到支持 OpenAI API 的应用程序中
- 开发需要同时使用多个 AI 服务的应用
- 测试和评估 GLM-4.5 模型的能力
- 需要流式响应或思考内容的 AI 应用开发
快速开始
使用 uv (推荐)
安装 uv:
# macOS/Linux curl -LsSf https://astral.sh/uv/install.sh | sh # Windows (PowerShell) powershell -c "irm https://astral.sh/uv/install.sh | iex"同步依赖:
uv sync运行服务:
uv run python main.py
使用 pip
安装依赖:
pip install -r requirements.txt配置服务(可选): 编辑
main.py中的以下常量以调整服务行为:DEFAULT_KEY: 客户端 API 密钥UPSTREAM_URL: Z.ai 上游 API 地址UPSTREAM_TOKEN: 固定认证 token(匿名模式失败时使用)PORT: 服务监听端口DEBUG_MODE: 调试模式开关THINK_TAGS_MODE: 思考内容处理策略ANON_TOKEN_ENABLED: 匿名 token 开关
运行服务:
python main.py服务启动后,可以访问 http://localhost:8080/docs 查看自动生成的 Swagger API 文档
使用 OpenAI 客户端库调用:
import openai # 初始化客户端 client = openai.OpenAI( base_url="http://localhost:8080/v1", api_key="sk-tbkFoKzk9a531YyUNNF5" # 使用配置的 DEFAULT_KEY ) # 流式调用示例 response = client.chat.completions.create( model="GLM-4.5", # 可选: "GLM-4.5-Thinking", "GLM-4.5-Search" messages=[{"role": "user", "content": "你好"}], stream=True ) for chunk in response: content = chunk.choices[0].delta.content reasoning = chunk.choices[0].delta.reasoning_content if content: print(content, end="") if reasoning: print(f"\n[思考] {reasoning}\n")注意:请将
api_key替换为您在main.py中配置的DEFAULT_KEY值。
配置选项
| 配置项 | 描述 | 默认值 |
|---|---|---|
UPSTREAM_URL |
Z.ai 的上游 API 地址 | https://chat.z.ai/api/chat/completions |
DEFAULT_KEY |
下游客户端鉴权 key | sk-tbkFoKzk9a531YyUNNF5 |
UPSTREAM_TOKEN |
上游 API 的 token (匿名模式失败时使用) | JWT token |
DEFAULT_MODEL_NAME |
默认模型名称 | GLM-4.5 |
THINKING_MODEL_NAME |
思考模型名称 | GLM-4.5-Thinking |
SEARCH_MODEL_NAME |
搜索模型名称 | GLM-4.5-Search |
PORT |
服务监听端口 | 8080 |
DEBUG_MODE |
调试模式开关 | true |
THINK_TAGS_MODE |
思考内容处理策略 | think (可选: strip, raw) |
ANON_TOKEN_ENABLED |
是否使用匿名 token | true |
思考内容处理策略说明
- think: 将
<details>标签转换为<thinking>标签,适合 OpenAI 兼容格式 - strip: 完全移除
<details>标签及其内容 - raw: 保留原始格式,不做任何处理
架构说明
本项目采用以下技术栈:
- FastAPI: 现代、快速的 Web 框架,提供自动 API 文档生成
- Pydantic: 数据验证和序列化,确保 API 兼容性
- uvicorn: ASGI 服务器,提供高性能服务
项目通过异步编程模型实现高效的并发处理,支持流式和非流式两种响应模式。
贡献指南
欢迎提交 Issue 和 Pull Request!请确保:
- 遵循 PEP 8 规范
- 提交前运行测试(如果有)
- 更新相关文档
许可证
MIT LICENSE
免责声明
本项目与 Z.ai 官方无关,使用前请确保遵守 Z.ai 的服务条款。请勿将此服务用于商业用途或违反 Z.ai 使用条款的场景。