Skip to main content
三方模型调用教程

GLM

本文介绍了在阿里云百炼平台通过API调用 GLM 系列模型的方法。 每个模型各有100万免费Token。

glm-4.6、glm-4.7 将于2026年10月10日下架。推荐转用:qwen3.7-plusqwen3.8-maxqwen3.8-flash

服务接入地址

不同地域的服务接入地址不同,请根据您选择的地域配置对应的 Base URL。
  • OpenAI兼容
  • OpenAI兼容-Responses API
  • DashScope
  • 华北2(北京)
  • 美国(弗吉尼亚)
  • 德国(法兰克福)
  • 新加坡
SDK 调用配置的base_urlhttps://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1HTTP 请求地址:POST https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1/chat/completions
调用时请将{WorkspaceId}替换为真实的业务空间ID

快速开始

glm-5.2 、glm-5.2-us 和 glm-5.2-fast-preview 是 GLM 系列最新模型,上下文长度 1M,支持通过enable_thinking参数设置思考与非思考模式。运行以下代码快速调用思考模式的 glm-5.2 模型。 需要已获取与配置 API Key并完成配置API Key到环境变量。如果通过SDK调用,需要安装 OpenAI 或 DashScope SDK
  • OpenAI兼容
  • DashScope
  • Anthropic兼容
enable_thinking非 OpenAI 标准参数,OpenAI Python SDK 通过 extra_body传入,Node.js SDK 作为顶层参数传入。
  • Python
  • Node.js
  • HTTP

示例代码

from openai import OpenAI
import os

# 初始化OpenAI客户端
client = OpenAI(
    # 如果没有配置环境变量,请用阿里云百炼API Key替换:api_key="sk-xxx"
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    # 以下为华北2(北京)地域的URL。请将 {WorkspaceId} 替换为您的百炼业务空间ID,各地域的URL不同。
    base_url="https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1",
)

messages = [{"role": "user", "content": "你是谁"}]
completion = client.chat.completions.create(
    model="glm-5.2",
    messages=messages,
    # 通过 extra_body 设置 enable_thinking 开启思考模式
    extra_body={"enable_thinking": True},
    stream=True,
    stream_options={
        "include_usage": True
    },
)

reasoning_content = ""  # 完整思考过程
answer_content = ""  # 完整回复
is_answering = False  # 是否进入回复阶段
print("\n" + "=" * 20 + "思考过程" + "=" * 20 + "\n")

for chunk in completion:
    if not chunk.choices:
        print("\n" + "=" * 20 + "Token 消耗" + "=" * 20 + "\n")
        print(chunk.usage)
        continue

    delta = chunk.choices[0].delta

    # 只收集思考内容
    if hasattr(delta, "reasoning_content") and delta.reasoning_content is not None:
        if not is_answering:
            print(delta.reasoning_content, end="", flush=True)
        reasoning_content += delta.reasoning_content

    # 收到content,开始进行回复
    if hasattr(delta, "content") and delta.content:
        if not is_answering:
            print("\n" + "=" * 20 + "完整回复" + "=" * 20 + "\n")
            is_answering = True
        print(delta.content, end="", flush=True)
        answer_content += delta.content

返回结果

====================思考过程====================

让我仔细思考用户提出的这个看似简单但实际上很有深度的问题。

从语言特点来看,用户使用的是中文,这意味着我应该用中文来回应。这是一个最基础的自我介绍问题,但背后可能包含着多层次的含义。

首先需要明确的是,作为一个语言模型,我应该诚实地说明自己的身份和本质。我既不是人类,也不具备真正的情感意识,而是一个由深度学习技术训练的AI助手。这是最基本的事实。

其次,考虑到用户可能的需求场景,他们或许想了解:
1. 我能提供什么样的服务
2. 我的专业领域是什么
3. 我的局限性在哪里
4. 如何与我更好地互动

在回答中,我应该既表达友好和开放的态度,又保持专业和准确。要说明自己擅长的主要领域,比如知识问答、写作辅助、创意支持等,但同时也要坦诚地指出自己的局限性,比如缺乏真实的情感体验。

此外,为了让回答更加完整,我还应该表达出愿意帮助用户解决问题的积极态度。可以适当引导用户提出更具体的问题,这样可以更好地展现自己的能力。

考虑到这是一个开放式的开场白,回答时既要简洁明了,又要包含足够的信息量,让用户对我的基本情况有一个清晰的认识,同时为后续的对话奠定良好的基础。

最后,语气应该保持谦逊和专业,既不过于技术化,也不显得过分随意,让用户感到舒适和自然。
====================完整回复====================

我是智谱AI训练的GLM大语言模型,旨在为用户提供信息和帮助解决问题。我被设计用来理解和生成人类语言,可以回答问题、提供解释或参与各类话题讨论。

我不会存储您的个人数据,我们的对话是匿名的。有什么我能帮您了解或探讨的话题吗?
====================Token 消耗====================

CompletionUsage(completion_tokens=344, prompt_tokens=7, total_tokens=351, completion_tokens_details=None, prompt_tokens_details=None)

流式工具调用

glm-5.2、glm-5.2-us、glm-5.2-fast-preview、glm-5.1、glm-5、glm-4.7、glm-4.6 支持tool_stream参数(boolean,默认false),仅在streamtrue时生效。开启后,Function Calling 返回的 tool_call 参数(arguments)会以流式增量方式逐步返回,而非等待完整生成后一次性返回。 streamtool_stream的组合行为如下:

stream

tool_stream

tool_call 返回方式

true

true

arguments 以增量方式分多个 chunk 返回

true

false(默认)

arguments 在一个 chunk 中完整返回

false

true/false

tool_stream 不生效,arguments 在完整响应中一次性返回

  • OpenAI兼容
  • DashScope
  • Python
  • Node.js
  • HTTP

示例代码

from openai import OpenAI
import os

client = OpenAI(
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    # 以下为华北2(北京)地域的URL。请将 {WorkspaceId} 替换为您的百炼业务空间ID,各地域的URL不同。
    base_url="https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1",
)

tools = [
    {
        "type": "function",
        "function": {
            "name": "get_weather",
            "description": "获取指定城市的天气信息",
            "parameters": {
                "type": "object",
                "properties": {
                    "city": {"type": "string", "description": "城市名称"}
                },
                "required": ["city"]
            }
        }
    }
]

messages = [{"role": "user", "content": "北京天气怎么样"}]

completion = client.chat.completions.create(
    model="glm-5.2",
    tools=tools,
    messages=messages,
    extra_body={
        "tool_stream": True,
    },
    stream=True,
    stream_options={"include_usage": True},
)

for chunk in completion:
    if chunk.choices:
        delta = chunk.choices[0].delta
        if hasattr(delta, 'content') and delta.content:
            print(f"[content] {delta.content}")
        if hasattr(delta, 'tool_calls') and delta.tool_calls:
            for tc in delta.tool_calls:
                print(f"[tool_call] id={tc.id}, name={tc.function.name}, args={tc.function.arguments}")
        if chunk.choices[0].finish_reason:
            print(f"[finish_reason] {chunk.choices[0].finish_reason}")
    if not chunk.choices and chunk.usage:
        print(f"[usage] {chunk.usage}")

推理强度(reasoning_effort)

glm-5.2、glm-5.2-fast-preview 和 glm-5.1 默认开启思考模式,模型会先输出思考过程(reasoning_content),再给出最终回答。通过 reasoning_effort 参数可以调整推理强度,取值越高思考越充分。不同模型支持的可选取值不同,传入不支持的取值会返回 invalid_parameter_error 错误,请按下表选择。

模型

reasoning_effort 可选取值

glm-5.2

none(不进行推理,reasoning_tokens=0)、minimallowmediumhighxhighmax(最高)

glm-5.2-us

none(不进行推理,reasoning_tokens=0)、minimallowmediumhighxhighmax(最高)

glm-5.2-fast-preview

none(不进行推理,reasoning_tokens=0)、minimallowmediumhighxhighmax(最高)

glm-5.1

noneminimallowmediumhighxhigh(最高,不支持 max)

glm-5

noneminimallowmediumhighxhigh(最高,不支持 max)

如需关闭思考,可在 OpenAI 兼容与 DashScope 方式中传入 enable_thinking=false,该参数优先级高于 reasoning_effort
Anthropic 兼容方式不支持 reasoning_effort 参数。如需获取思考内容,请使用 Anthropic 原生 thinking 参数:{"thinking":{"type":"enabled","budget_tokens":1024}},开启后响应 content 中会返回 typethinking 的思考块。
  • OpenAI兼容
  • DashScope
Python
from openai import OpenAI
import os
client = OpenAI(
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    # 以下为华北2(北京)地域的URL。请将 {WorkspaceId} 替换为您的百炼业务空间ID,各地域的URL不同。
    base_url="https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1",
)
completion = client.chat.completions.create(
    model="glm-5.2",
    messages=[{"role": "user", "content": "9.9和9.11哪个大"}],
    reasoning_effort="high",
)
print(completion.choices[0].message.content)

清除历史思考(clear_thinking)

clear_thinking 参数用于控制多轮对话中是否将历史轮次的 reasoning_content(思考过程)作为上下文输入给模型。仅 GLM 系列模型支持。
  • true:忽略历史轮次的 reasoning_content,仅使用可见文本、工具调用与结果等非推理内容作为上下文输入,可降低上下文长度与成本。
  • false(默认):保留历史轮次的 reasoning_content 并随上下文一同提供给模型。若希望启用 Preserved Thinking,必须在 messages 中完整、未修改、按原顺序透传历史 reasoning_content,缺失、裁剪、改写或重排会导致效果下降或无法生效。
该参数只影响跨轮次的历史思考内容,不改变模型在当前轮次内是否产生/输出思考。
以下示例使用同一组多轮 messages(assistant 消息中携带 reasoning_content)。设置 clear_thinking=true 后,历史思考内容不会被计入上下文,因此 prompt_tokens 少于 false(默认)的情况,实际数值取决于历史 reasoning_content 的长度。
  • OpenAI兼容
  • DashScope
Python
from openai import OpenAI
import os

client = OpenAI(
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    # 以下为华北2(北京)地域的URL。请将 {WorkspaceId} 替换为您的百炼业务空间ID,各地域的URL不同。
    base_url="https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1",
)

# 多轮对话,assistant 消息中携带 reasoning_content(历史思考过程)
messages = [
    {"role": "user", "content": "请计算 15 * 23 是多少?"},
    {"role": "assistant", "content": "15 乘以 23 等于 345。", "reasoning_content": "15 * 23 = 345"},
    {"role": "user", "content": "那再加上 55 呢?"},
    {"role": "assistant", "content": "345 加上 55 等于 400。", "reasoning_content": "345 + 55 = 400"},
    {"role": "user", "content": "刚才的中间结果是多少?"},
]

completion = client.chat.completions.create(
    model="glm-5.2",
    messages=messages,
    extra_body={
        "enable_thinking": True,
        # true:忽略历史 reasoning_content,降低上下文长度与成本
        # false(默认):保留历史 reasoning_content(Preserved Thinking)
        "clear_thinking": True,
    },
)
print(completion.usage.prompt_tokens)  # true 时少于 false

其它功能

模型多轮对话Function Calling结构化输出联网搜索前缀续写上下文缓存
glm-5.2支持支持支持
仅非思考模式
不支持不支持支持
仅支持隐式缓存
glm-5.2-us支持支持支持
仅非思考模式
不支持不支持支持
仅支持隐式缓存
glm-5.2-fast-preview支持支持支持
仅非思考模式
不支持不支持支持
仅支持隐式缓存
glm-5.1支持支持支持
仅非思考模式
不支持不支持支持
支持显式与隐式缓存
glm-5支持支持支持
仅非思考模式
不支持不支持支持
仅支持隐式缓存
glm-4.7支持支持支持
仅非思考模式
不支持不支持支持
仅支持隐式缓存
glm-4.6支持支持支持
仅非思考模式
不支持不支持支持
仅支持隐式缓存
glm-4.5支持支持支持不支持不支持不支持
glm-4.5-air支持支持支持不支持不支持不支持

参数默认值

模型

enable_thinking

temperature

top_p

top_k

repetition_penalty

glm-5.2

true

1.0

0.95

20

1.0

glm-5.2-us

true

1.0

0.95

20

1.0

glm-5.2-fast-preview

true

1.0

0.95

20

1.0

glm-5.1

true

1.0

0.95

20

1.0

glm-5

true

1.0

0.95

20

1.0

glm-4.7

true

1.0

0.95

20

1.0

glm-4.6

true

1.0

0.95

20

1.0

glm-4.5

true

0.6

0.95

20

1.0

glm-4.5-air

true

0.6

0.95

20

1.0

参数含义请参见OpenAI兼容-Chat

注意事项

云上部署的三方开源模型(如 glm-5.2)与模型官方对超参数的处理逻辑不同:模型官方会对超参数进行阈值校验,超出阈值时回退为默认值;云上部署的处理逻辑是直接透传用户传入的参数值,不做阈值校验。因此,不当设置超参数(如将 repetition_penalty 设为 0.1)可能导致非预期输出(如循环打印)。建议三方开源模型使用默认超参数值(请参见上方参数默认值表),不建议自定义传入。

模型列表与计费

GLM 系列模型是智谱AI专为智能体设计的混合推理模型,提供思考与非思考两种模式。
  • glm-5.2 与 glm-5.2-us:GLM 最新模型,上下文长度 1M,支持 Function Calling、结构化输出及隐式缓存。支持 OpenAI 兼容、DashScope 及 Anthropic 兼容接口调用。
  • glm-5.2-fast-preview:glm-5.2模型的快速模式,详情请参考优速模式(Prime)
模型上下文长度与价格信息请参见百炼控制台。 按照模型的输入与输出 Token 计费。
思考模式下,思维链按照输出 Token 计费。

错误码

如果执行报错,请参见错误码进行解决。
Token Plan
模型体验
  • 3D模型生成
  • 音乐生成
模型调优
模型压缩目录节点
用量统计与性能监控
资产中心
服务支持