標題: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 變更:
thinking.type不再支持disabled— 思考無法關閉。官方遷移建議:曾經發送{"type": "disabled"}的應用應切換為{"type": "enabled"}並將reasoning_effort設置為"low"。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);low與max顯示出預期的輕思考趨勢(在同一算術問題上,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 支持 text 和 json_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 模型頁面;有關更多模型,請訪問 模型畫廊。




