GLM-5.3 實用指南:持續思考、三個努力層級及 API 支援矩陣

推理時代閱讀約 7 分鐘
GLM-5.3 實用指南:持續思考、三個努力層級及 API 支援矩陣

標題:GLM-5.3 實用指南:持續思考、三個努力層級及 API 支援矩陣

描述:2026 年 8 月的 GLM-5.3 指南:持續思考,三個推理努力層級、推理摘要、平行工具調用、結構化輸出和自動快取 — 包含經過驗證的 AIHubMix 聊天 / 回應 / 消息範例。


本文涵蓋了 GLM-5.3 的主要 API 變更和使用注意事項。GLM-5.3 是 Z.ai 於 2026 年 8 月 14 日發布的旗艦模型 — 它使用與 GLM-5.2 完全相同的基礎模型,所有增益均來自後期訓練。在 AIHubMix 上,模型 ID 為 coding-glm-5.3(目前為限時預覽路徑),可通過聊天完成、回應和 Claude 兼容的消息 API 獲得。另請參見:官方 Z.ai 發布博客

每個部分中的「經過驗證」結論和範例回應來自於 2026 年 8 月 14 日通過 AIHubMix API(聊天完成 / 回應 / 消息)進行的實際調用。

1. 模型規格概覽

項目
上下文窗口 1M 代幣(官方精確值:1,048,576)
最大輸出 128K (max_tokens 驗證上限:131,072 — 超過此值將返回 400)
輸入模式 文本
思考 始終開啟,無法禁用reasoning_effort 有三個層級 — low / high / max,預設為 max
與 GLM-5.2 的關係 相同基礎模型,通過後期訓練升級:編碼和長期任務性能大幅增強,並具備新興的網絡能力
AIHubMix 模型 ID coding-glm-5.3(限時預覽路徑;官方商業 API 上線後將會跟進)
經過驗證max_tokens: 999999 返回 400,錯誤主體中明確列出了有效範圍 — 上限確實經過驗證,而不是靜默截斷。
# max_tokens=999999 -> HTTP 400
"max_tokens 參數無效:值必須在 [1,131072] 之內"

2. GLM-5.3 與 GLM-5.2:持續思考,透過 reasoning_effort 的強度

項目 GLM-5.2 GLM-5.3
基礎模型 與 5.2 相同(所有增益來自後期訓練)
thinking.type enabled / disabled — 可以關閉 enabled 只能使用 — 無法關閉
reasoning_effort 7 值兼容映射(有效層級:max/high) 三個層級 low / high / max,預設 max
定位 通用旗艦 針對編碼和長期代理任務進行強化,具備新興的網絡能力

這是 GLM-5.3 相對於 GLM-5.2 的兩個最重要的 API 變更:

  1. thinking.type 不再支持 disabled — 思考無法關閉。官方遷移建議:曾經發送 {"type": "disabled"} 的應用應切換為 {"type": "enabled"} 並將 reasoning_effort 設置為 "low"
  2. reasoning_effort 縮小為三個層級low(輕) / high(增強) / max(深度,預設)。GLM-5.2 時期的 7 值兼容映射不再適用;Z.ai 建議在編碼任務中使用 max
經過驗證:通過 AIHubMix 發送 thinking: {"type": "disabled"} 返回 200,思考 仍然發生reasoning_content 照常返回) — 該值根據官方通道語義自動轉換,而不是被拒絕。如果您的客戶端依賴於「關閉思考以節省代幣」,請切換為 reasoning_effort: "low"

經過驗證reasoning_effort 的超出枚舉值也返回 200 而不會出錯(根據官方文檔回退到預設 max);lowmax 顯示出預期的輕思考趨勢(在同一算術問題上,27 與 39 的推理代幣)。

聊天完成

思考內容在 reasoning_content 字段中返回;在流式傳輸中,它作為 delta.reasoning_content 到達。

from openai import OpenAI

client = OpenAI(
    base_url="https://aihubmix.com/v1",
    api_key="<AIHUBMIX_API_KEY>",
)

completion = client.chat.completions.create(
    model="coding-glm-5.3",
    reasoning_effort="max",          # low / high / max, default max
    extra_body={"thinking": {"type": "enabled"}},
    messages=[
        {"role": "user", "content": "計算 (17*23-19*11) 的平方根,向下取整。僅顯示數字。"}
    ],
)

print(completion.choices[0].message.reasoning_content)
print(completion.choices[0].message.content)   # 觀察到:"13"
經過驗證usage.completion_tokens_details.reasoning_tokens 報告思考使用情況 — 在同一問題上,reasoning_effort="low" 為 27,"max" 為 39。

回應

思考內容作為 reasoning 輸出項返回,文本位於 summary 陣列中的 summary_text

from openai import OpenAI

client = OpenAI(
    base_url="https://aihubmix.com/v1",
    api_key="<AIHUBMIX_API_KEY>",
)

response = client.responses.create(
    model="coding-glm-5.3",
    input="法國的首都在哪裡?僅顯示城市名稱。",
)

# 觀察到的 response.output 項目類型:["reasoning", "message"]
# reasoning 項目:{"type": "reasoning", "summary": [{"type": "summary_text", "text": "用戶在詢問..."}]}
# usage.output_tokens_details.reasoning_tokens: 80
經過驗證:默認請求(根本沒有 reasoning 參數)已經包含了 reasoning 項目和 summary_text — 無需明確選擇加入。

消息

思考內容作為原生 thinking 內容塊返回。

from anthropic import Anthropic

client = Anthropic(
    api_key="<AIHUBMIX_API_KEY>",
    base_url="https://aihubmix.com"
)

response = client.messages.create(
    model="coding-glm-5.3",
    max_tokens=4096,
    messages=[
        {"role": "user", "content": "法國的首都在哪裡?僅顯示城市名稱。"}
    ],
)

# 觀察到的 response.content 塊類型:["thinking", "text"]
經過驗證:思考塊默認返回;在此 API 上 thinking: {"type": "disabled"} 同樣返回 200,思考仍然發生(與官方「禁用轉換為低,請求繼續」的通道語義一致)。

3. 工具調用和平行工具

功能調用在所有三個 API 上均已驗證可用;在回應 API 上,我們還觀察到在單次回合內的平行工具調用(Z.ai 明確聲明 GLM-5.3 supports_parallel_tool_calls: true)。上游限制:最多 128 個功能在 tools 中;tool_choice 原生僅支持 auto

聊天完成

completion = client.chat.completions.create(
    model="coding-glm-5.3",
    messages=[{"role": "user", "content": "今天北京的天氣怎麼樣?"}],
    tools=[{
        "type": "function",
        "function": {
            "name": "get_weather",
            "description": "獲取城市的天氣",
            "parameters": {"type": "object", "properties": {"city": {"type": "string"}}, "required": ["city"]},
        },
    }],
)

# 觀察到:finish_reason "tool_calls",在 tool_calls 中有一個 get_weather 調用
經過驗證tool_choice: "none" 可用 — 同樣的天氣問題返回純文本,沒有工具調用。

回應

response = client.responses.create(
    model="coding-glm-5.3",
    input="檢查今天上海和北京的天氣",
    parallel_tool_calls=True,
    tools=[{
        "type": "function",
        "name": "get_weather",
        "description": "獲取城市的天氣",
        "parameters": {"type": "object", "properties": {"city": {"type": "string"}}, "required": ["city"]},
    }],
)

# 觀察到:單次回合返回 2 個平行 function_call 輸出項(每個城市一個)
經過驗證:在一次回合中有 2 個平行工具調用,與官方 supports_parallel_tool_calls: true 聲明一致。

消息

response = client.messages.create(
    model="coding-glm-5.3",
    max_tokens=4096,
    tools=[{
        "name": "get_weather",
        "description": "獲取城市的天氣",
        "input_schema": {"type": "object", "properties": {"city": {"type": "string"}}, "required": ["city"]},
    }],
    messages=[{"role": "user", "content": "今天北京的天氣怎麼樣?"}],
)

# 觀察到:stop_reason "tool_use";內容包含一個 tool_use 塊
經過驗證:在此 API 上,模型 仍然產生工具調用,即使在 tool_choice: {"type": "none"} 之後 — 若要禁用工具,請完全刪除 tools 參數,或在聊天完成 API 上使用 tool_choice: "none"

4. 結構化輸出

response_format 支持 textjson_object;上游未列出 json_schema 模式。當您需要嚴格的模式符合性時,請在提示中嵌入 JSON Schema 並在客戶端進行驗證。

聊天完成

completion = client.chat.completions.create(
    model="coding-glm-5.3",
    messages=[
        {"role": "user", "content": "法國的首都在哪裡?以 JSON 格式回答,鍵為 \"answer\"。"}
    ],
    response_format={"type": "json_object"},
)

# 觀察到的回應內容:{"answer": "巴黎"}
經過驗證:輸出是有效的 JSON,包含請求的鍵。

回應

response = client.responses.create(
    model="coding-glm-5.3",
    input="法國的首都在哪裡?以 JSON 格式回答,鍵為 \"answer\"。",
    text={"format": {"type": "json_object"}},
)

# 觀察到的輸出文本:{"answer": "巴黎"}

消息

# 在提示中指定 JSON 結構;觀察到的輸出是有效的 JSON
response = client.messages.create(
    model="coding-glm-5.3",
    max_tokens=4096,
    messages=[
        {"role": "user", "content": "法國的首都在哪裡?以 JSON 格式回答,鍵為 \"answer\"。"}
    ],
)

# 觀察到的回應文本:{"answer": "巴黎"}

5. 上下文快取是自動的

隱式快取默認開啟,無需傳遞參數;重複的長前綴在使用中報告快取命中(字段名稱因 API 而異)。

聊天完成

# 使用相同的長前綴的第二次調用
"prompt_tokens_details": {"cached_tokens": 960}
經過驗證:兩次連續調用中的第二次命中 960 個快取代幣。

回應

# 使用相同的長前綴的第二次調用
"input_tokens_details": {"cached_tokens": 960}

消息

# 命中通過使用.cache_read_input_tokens 報告
"cache_read_input_tokens": 0
經過驗證:在這一輪中,我們未能在此 API 上重現快取命中(快取根據通道加熱;負載均衡器切換可能導致未命中)。命中會計字段遵循 Anthropic 語義。

6. 抽樣和參數驗證

抽樣遵循 GLM 家族端點約定:temperature 範圍 [0, 1],預設為 1.0(注意 — 比 OpenAI 協議的 [0, 2] 更窄);top_p 範圍 [0.01, 1],預設為 0.95。Z.ai 建議僅調整兩者中的一個。

經過驗證:參數驗證在不同 API 之間有所不同 — 消息 API 拒絕超出範圍的 temperature: 3,返回 400 並明確列出有效範圍 [0,1],而聊天完成 / 回應則靜默接受相同的超出範圍值並返回 200。在跨 API 遷移時,請勿依賴網關為您捕捉超出範圍的抽樣值。
# 消息 API 使用 temperature=3 -> HTTP 400
"temperature 參數無效:值必須在 [0,1] 之內"

7. 能力 × API 支援矩陣

以下每個單元格均通過 2026 年 8 月 14 日通過 AIHubMix 實時 API 的實際調用進行驗證;單元格顯示每個 API 的參數/字段拼寫。

能力 聊天完成 回應 消息
基本生成 / 流式傳輸
思考內容 reasoning_content 字段 reasoning 輸出項(summary_text thinking 內容塊
思考強度 reasoning_effort(low/high/max,預設 max) ✅ 與左側相同 ✅ 接受 200
禁用思考 ❗ 不可能:disabled 返回 200,思考繼續(轉換為低語義) ➖ 無切換參數 ❗ 與聊天相同
功能調用
平行工具調用 ✅ 2 function_call 項目在一次回合中
禁用工具調用 tool_choice: "none" 可用 ✅ 200(未觀察到調用) ❗ 調用仍然在 {"type": "none"} 之後產生
結構化輸出(JSON 模式) response_format: json_object text.format: json_object ✅ 通過提示約定
json_schema 嚴格模式 ❗ 未在上游列出 — 在提示中嵌入模式 ❗ 與左側相同 ❗ 與左側相同
自動快取會計 usage.prompt_tokens_details.cached_tokens usage.input_tokens_details.cached_tokens ✅ 字段存在(本輪未重現命中)
最大輸出驗證 ✅ 400,範圍 [1,131072]
超出範圍的抽樣驗證 ❗ 靜默 200 ❗ 靜默 200 ✅ 400,範圍 [0,1]

常見問題

GLM-5.3 模型 ID 在 AIHubMix 是什麼?我需要 [1m] 後綴嗎?
模型 ID 是 coding-glm-5.3 — 按原樣使用。glm-5.3[1m] 是 Z.ai 的模型名稱語法,用於 Claude Code 客戶端,與 AIHubMix 調用無關;三個 API 均不需要任何後綴。

我可以關閉思考嗎?
不可以。GLM-5.3 的思考始終開啟,thinking.type 只支持 enabled;在我們的測試中,發送 disabled 返回 200,思考仍然發生(根據官方語義轉換為 low 層級)。要節省思考代幣,請發送 reasoning_effort: "low"

GLM-5.3 與 GLM-5.2 有什麼關係?
相同的基礎模型 — 所有增益來自後期訓練(官方措辭:「它使用與 GLM-5.2 相同的基礎模型 — 所有增益來自後期訓練」)。兩個重大 API 變更:思考不再可以禁用,reasoning_effort 縮小為三個層級 low/high/max(預設 max)。

如果我需要嚴格的 json_schema 結構化輸出怎麼辦?
上游未列出 response_format: json_schema 模式。在我們的測試中,json_object JSON 模式在所有三個 API 上均產生有效的 JSON;對於嚴格的模式,請在提示中嵌入 JSON Schema 並在客戶端進行驗證。

coding-glm-5.3 是生產版本嗎?
目前是限時預覽路徑(Z.ai 的模型 API 文檔標記官方 API 為「即將推出」);AIHubMix 將在商業 API 上線後跟進。請參閱模型頁面以獲取當前定價和狀態。


有關定價和實時狀態,請參見 GLM-5.3 模型頁面;有關更多模型,請訪問 模型畫廊