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

GLM

本文介紹了在阿里雲百鍊平台通過API調用 GLM 系列模型的方法。

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"),
    # 調用時請將 {WorkspaceId} 替換為真實的Workspace ID。
    base_url="https://{WorkspaceId}.ap-southeast-1.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"),
    # 以下為新加坡地區的URL。請將 {WorkspaceId} 替換為您的百鍊業務空間ID,各地區的URL不同。
    base_url="https://{WorkspaceId}.ap-southeast-1.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)

如需關閉思考,可在 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"),
    # 以下為新加坡地區的URL。請將 {WorkspaceId} 替換為您的百鍊業務空間ID,各地區的URL不同。
    base_url="https://{WorkspaceId}.ap-southeast-1.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"),
    # 調用時請將 {WorkspaceId} 替換為真實的Workspace ID。
    base_url="https://{WorkspaceId}.ap-southeast-1.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支援支援支援
僅非思考模式
不支援不支援支援
僅支援隱式緩衝

參數預設值

模型

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

參數含義請參見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模型的快速模式,詳情請參考快速模式(Fast mode)
模型上下文長度與價格資訊請參見百鍊控制台。 按照模型的輸入與輸出 Token 計費。
思考模式下,思維鏈按照輸出 Token 計費。

錯誤碼

如果執行報錯,請參見錯誤碼進行解決。
Token Plan
模型體驗
  • 音樂產生
用量統計與效能監控
資產中心
服務支援