GLM 5.2 API 接入指南:端点、鉴权与 Python 集成
Jul 20, 2026

GLM 5.2 API 接入指南:端点、鉴权与 Python 集成

GLM 5.2 使用 OpenAI SDK 格式,只需换 base_url 和模型名。本文完整讲解端点、鉴权、流式输出与 Python 集成方式。

如果你用过 OpenAI Python SDK,接入 GLM 5.2 大约只需要五分钟。该模型通过 Z.ai 的 API 提供服务,完全兼容 OpenAI——也就是说,你只需改现有代码里的两行(base_urlmodel),其他一切都照旧。本指南带你走一遍鉴权、全部可用端点、流式输出、函数调用、JSON 模式,以及如何把完整的 1M token 上下文窗口真正用起来。

前置条件

开始之前,请确保你具备以下条件:

  • 一个 Z.ai 账号和 API key(在 api.z.ai 注册)
  • Python 3.8 或更高版本
  • openai Python 包(pip install openai
  • 对发起 HTTP 请求或使用 OpenAI SDK 有基本了解

不需要任何 GLM 专属 SDK。因为 API 表面完全兼容 OpenAI,任何已经支持 OpenAI chat-completions 格式的库或工具,都能直接开箱即用地对接 GLM 5.2。

第 1 步:获取你的 API Key

登录 api.z.ai 的 Z.ai 控制台。在侧边栏找到 API Keys,创建一个新的 secret key,并立即复制——控制台只会完整显示一次。

把 key 存成环境变量,而不是硬编码进代码:

export Z_AI_API_KEY="your-api-key-here"

Windows(PowerShell)下:

$env:Z_AI_API_KEY = "your-api-key-here"

第 2 步:发起你的第一个请求

与 OpenAI API 不同的只有两处:base_urlmodel 名称。其余一切——请求头、请求体结构、响应格式——完全相同。

Base URL: https://api.z.ai/v1
模型名: glm-5.2

下面是一个使用 openai Python 库的最小可运行示例:

import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["Z_AI_API_KEY"],
    base_url="https://api.z.ai/v1",
)

response = client.chat.completions.create(
    model="glm-5.2",
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Explain the Mixture of Experts architecture in two sentences."},
    ],
)

print(response.choices[0].message.content)

如果你更喜欢原生 HTTP,对应的 curl 命令是:

curl https://api.z.ai/v1/chat/completions \
  -H "Authorization: Bearer $Z_AI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "glm-5.2",
    "messages": [
      {"role": "user", "content": "What is GLM 5.2?"}
    ]
  }'

鉴权就是标准的 HTTP Bearer token,没有专有请求头或签名步骤。

第 3 步:启用流式输出

对生产应用来说,流式输出能大幅改善感知延迟。GLM 5.2 吞吐可达 158 tokens/秒,因此流式模式让用户几乎在第一个 token 到达后就能立刻看到输出(TTFT 1.54 秒)。

import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["Z_AI_API_KEY"],
    base_url="https://api.z.ai/v1",
)

stream = client.chat.completions.create(
    model="glm-5.2",
    messages=[
        {"role": "user", "content": "Write a short story about a robot learning to cook."},
    ],
    stream=True,
)

for chunk in stream:
    delta = chunk.choices[0].delta.content
    if delta:
        print(delta, end="", flush=True)

print()  # newline after stream ends

stream=True 参数会把响应从单个 JSON 对象切换成一系列 server-sent events。每个 chunk 包含一个部分 token,最后的 [DONE] 信号则是空字符串——与 OpenAI 流式 API 的格式一致。

第 4 步:使用函数调用(工具调用)

GLM 5.2 通过 tools 参数支持 OpenAI 格式的函数调用。这让模型能自行决定何时调用某个函数,并返回你可以在客户端执行的结构化参数。

import os, json
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["Z_AI_API_KEY"],
    base_url="https://api.z.ai/v1",
)

tools = [
    {
        "type": "function",
        "function": {
            "name": "get_weather",
            "description": "Get the current weather for a city.",
            "parameters": {
                "type": "object",
                "properties": {
                    "city": {
                        "type": "string",
                        "description": "The city name, e.g. Tokyo",
                    }
                },
                "required": ["city"],
            },
        },
    }
]

response = client.chat.completions.create(
    model="glm-5.2",
    messages=[{"role": "user", "content": "What is the weather in Beijing?"}],
    tools=tools,
    tool_choice="auto",
)

message = response.choices[0].message

if message.tool_calls:
    for call in message.tool_calls:
        args = json.loads(call.function.arguments)
        print(f"Function: {call.function.name}, Args: {args}")

当模型决定调用工具时,message.tool_calls 会带上函数名和一串 JSON 参数。你在自己这边执行函数,把结果以 role: "tool" 追加进对话历史,再发送下一个请求——与 OpenAI API 相同的多轮工具循环。

第 5 步:请求结构化 JSON 输出

对于需要机器可读输出的流水线——分类标签、抽取的实体、结构化报告——请用 JSON 模式。传入 response_format={"type": "json_object"},并在 system prompt 里指示模型用 JSON 响应:

import os, json
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["Z_AI_API_KEY"],
    base_url="https://api.z.ai/v1",
)

response = client.chat.completions.create(
    model="glm-5.2",
    messages=[
        {
            "role": "system",
            "content": "You are a data extraction assistant. Always respond with valid JSON.",
        },
        {
            "role": "user",
            "content": "Extract the company name, founding year, and headquarters from: "
                       "'Anthropic was founded in 2021 and is headquartered in San Francisco.'",
        },
    ],
    response_format={"type": "json_object"},
)

data = json.loads(response.choices[0].message.content)
print(data)
# {"company_name": "Anthropic", "founding_year": 2021, "headquarters": "San Francisco"}

JSON 模式保证响应是合法 JSON。但你仍然要告诉模型你期望的 schema——把它写进 system prompt 或用户消息里。

第 6 步:用满 1M token 上下文窗口

GLM 5.2 拥有 1,048,576 token 的上下文窗口——在这个价位上可用的最大窗口之一。输入每百万 token $1.40、缓存命中每百万 $0.26 的价格,让处理超长文档变得很经济。

实用示例——总结一个大型代码库或文档:

import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["Z_AI_API_KEY"],
    base_url="https://api.z.ai/v1",
)

# Read a large file (e.g., a full codebase or long document)
with open("large_document.txt", "r") as f:
    document = f.read()

response = client.chat.completions.create(
    model="glm-5.2",
    messages=[
        {
            "role": "system",
            "content": "You are a technical analyst. Summarize the following document.",
        },
        {"role": "user", "content": document},
    ],
    max_tokens=4096,
)

print(response.choices[0].message.content)

按每 1000 token 约 750 个英文单词折算,1M token 大约容纳 75 万词——相当于十部长篇小说、一个大型 monorepo 或一整套法律案卷。对同一份大文档做重复分析时,prompt 缓存能把有效输入成本降到缓存命中时每 M token 仅 $0.26。

第 7 步:列出可用模型

要确认连通性并查看你的 API key 下有哪些模型可用:

import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["Z_AI_API_KEY"],
    base_url="https://api.z.ai/v1",
)

models = client.models.list()
for m in models.data:
    print(m.id)

这会调用 GET /models 并返回模型标识符列表。当你的 key 有权限时,glm-5.2 应该出现在列表中。

API 参考速览

属性
Base URLhttps://api.z.ai/v1
鉴权方式Authorization: Bearer <api_key>
主模型名glm-5.2
OpenRouter 模型名z-ai/glm-5.2
Chat completions 端点POST /chat/completions
模型列表端点GET /models
流式输出stream: true
函数调用tools: [](OpenAI 格式)
JSON 模式response_format: {"type": "json_object"}
最大输出 token默认最多 4096;支持更大的值
上下文窗口1,048,576 tokens

定价一览

在规模化之前,先理解成本至关重要。作为前沿级模型,GLM 5.2 的定价很有竞争力:

Token 类型每 1M token 价格
输入(缓存未命中)$1.40
输出$4.40
输入(缓存命中)$0.26

对于反复发送相同 system prompt 或大文档的工作负载,缓存命中能把有效输入成本降低约 81%。一条每天处理 10M 输入 token、缓存命中率 70% 的流水线,费用大约是:(3M × $1.40) + (7M × $0.26) = $4.20 + $1.82 = 每天 $6.02,而不用缓存则是 $14.00/天。

完整的定价拆解及与其他前沿模型的对比,见 GLM 5.2 定价指南

常见问题排查

问题原因解决方法
401 UnauthorizedAPI key 缺失或无效检查 Z_AI_API_KEY 环境变量;在控制台重新生成 key
404 Not Foundbase_url 错误或模型名拼写错误严格使用 https://api.z.ai/v1"glm-5.2"
model_not_found 错误传入了 OpenAI 模型名model="gpt-4o" 改成 model="glm-5.2"
流式输出为空 chunk在检查 None 之前就消费 delta.content打印前加 if delta: 保护
JSON 模式返回散文system prompt 缺少 JSON 指令在 system prompt 里加上「respond with valid JSON」
上下文长度错误输入超过 1,048,576 tokens把文档分块,或加一步检索
首 token 慢网络路由问题,不是模型速度基准 TTFT 为 1.54 秒;更长时间说明是网络延迟

常见问题解答

GLM 5.2 能无缝替换 OpenAI API 吗?

就本指南覆盖的端点——chat completions、流式、函数调用和 JSON 模式——而言,可以。把 base_url 改成 https://api.z.ai/v1model 改成 "glm-5.2" 即可。任何基于 OpenAI SDK 构建的库(LangChain、LlamaIndex、Instructor 等)都能在这两处替换后正常工作。OpenAI 平台特有的功能(Assistants API、微调、embeddings、图像)不适用。

我可以通过 OpenRouter 用 GLM 5.2,而不是直连 Z.ai 吗?

可以。在 OpenRouter 上模型标识符是 z-ai/glm-5.2。把 base_url 设为 https://openrouter.ai/api/v1,用你的 OpenRouter API key。OpenRouter 会在 Z.ai 直连定价上加一点手续费,但它让你不用改集成代码就能在多个供应商之间切换。

怎么处理速率限制?

超过速率限制时 API 会返回 HTTP 429。实现指数退避:重试间隔 1 秒、2 秒、4 秒。openai 库内置了重试支持——给 OpenAI 客户端构造函数传 max_retries=3 即可。

GLM 5.2 支持多模态输入(图像、音频)吗?

不支持。GLM 5.2 是纯文本模型。content 字段不接受图片 URL 或 base64 编码的图片。如果你需要视觉能力,得换别的模型。

最大输出长度是多少?

默认上限是每个请求 4096 个输出 token。你可以请求更高的 max_tokens 值,但很长的单轮输出不一定总能完全满足。做长文生成时,把任务拆成连续的几轮,而不是依赖一次超长输出。

模型可以自托管吗?

可以。GLM 5.2 以 MIT 许可证发布开放权重,Hugging Face 上路径为 THUDM/GLM-5.2。自托管完整的 753B 参数模型需要相当规模的 GPU 基础设施。该模型采用 Mixture of Experts 架构——78 个 transformer 解码器层、每层 256 个专家、每个 token 激活 8 个——意味着每次前向传播只有 40B 参数处于激活状态,推理比同等参数量的稠密模型更高效。

如何从现有 OpenAI 集成迁移?

最小改动就是两行:

# Before
client = OpenAI(api_key=os.environ["OPENAI_API_KEY"])
response = client.chat.completions.create(model="gpt-4o", ...)

# After
client = OpenAI(
    api_key=os.environ["Z_AI_API_KEY"],
    base_url="https://api.z.ai/v1",
)
response = client.chat.completions.create(model="glm-5.2", ...)

所有其他参数——messagestemperaturemax_tokensstreamtoolsresponse_format——都保持不变。

下一步

  • 探索基准测试: GLM 5.2 在 GPQA Diamond 上得分 89%、SWE-bench Pro 62.1%。在 GLM 5.2 基准拆解 里看它与其他前沿模型的对比。
  • 理解架构: 753B 参数 MoE 设计、每 token 40B 激活参数,正是 158 t/s 吞吐的来源。更多内容见 GLM 5.2 概览
  • 细看定价: 缓存命中 $0.26/M tokens 的价格改变了高吞吐流水线的成本结构。看完整定价指南
  • 免代码试用: 想在写任何代码之前先测 GLM 5.2?glm5.app/chat 的聊天界面不需要 API key、零配置。

试试 GLM 5.2——无需 API key:glm5.app/chat

Sources

Start Using GLM 5 Today

Try GLM 5 free — reasoning, coding, agents, and image generation in one platform.