タイトル: GLM-5.3 ハンズオンガイド:常時稼働思考、3つの努力レベル & APIサポートマトリックス
説明: 2026年8月のGLM-5.3ガイド:常時稼働思考、3つの推論努力レベル、推論サマリー、並列ツール呼び出し、構造化出力、自動キャッシング — 検証済みのAIHubMixチャット / レスポンス / メッセージの例を含む。
この記事では、GLM-5.3の主要なAPI変更点と使用上の注意を説明します。GLM-5.3は、2026年8月14日にリリースされたZ.aiのフラッグシップモデルで、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には3つのレベルがあり — 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 parameter invalid: value must be within [1,131072]"
2. GLM-5.3 vs GLM-5.2:常時稼働思考、reasoning_effortによる強度
| 項目 | GLM-5.2 | GLM-5.3 |
|---|---|---|
| ベースモデル | — | 5.2と同一(すべての利点はポストトレーニングから) |
thinking.type |
enabled / disabled — 無効にできる |
enabledのみ — 無効にできない |
reasoning_effort |
7値互換マッピング(有効レベル:max/high) | 3つのレベルlow / high / max、デフォルトはmax |
| ポジショニング | 汎用フラッグシップ | コーディングと長期エージェンシータスクのために強化され、新たなサイバー機能を備えています |
これらはGLM-5.3におけるGLM-5.2に対する最も重要な2つのAPI変更点です:
thinking.typeはもはやdisabledをサポートしない — 思考は無効にできません。公式の移行アドバイス:以前{"type": "disabled"}を送信していたアプリケーションは、{"type": "enabled"}に切り替え、reasoning_effortを"low"に設定する必要があります。reasoning_effortは3つのレベルに絞られる:low(軽い) /high(強化) /max(深い、デフォルト)。GLM-5.2時代の7値互換マッピングはもはや適用されず;Z.aiはコーディングタスクにはmaxを推奨しています。
検証済み:thinking: {"type": "disabled"}をAIHubMix経由で送信すると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": "Compute the square root of (17*23-19*11), rounded down. Digits only."}
],
)
print(completion.choices[0].message.reasoning_content)
print(completion.choices[0].message.content) # Observed: "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="What is the capital of France? City name only.",
)
# Observed response.output item types: ["reasoning", "message"]
# reasoning item: {"type": "reasoning", "summary": [{"type": "summary_text", "text": "The user is asking..."}]}
# usage.output_tokens_details.reasoning_tokens: 80
検証済み: デフォルトリクエスト(reasoningパラメータなし)にはすでにsummary_textを含むreasoningアイテムが含まれています — 明示的なオプトインは必要ありません。
メッセージ
思考内容はネイティブの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": "What is the capital of France? City name only."}
],
)
# Observed response.content block types: ["thinking", "text"]
検証済み: 思考ブロックはデフォルトで返されます;このAPIでthinking: {"type": "disabled"}を使用しても200が返され、思考は依然として行われます(公式の「無効は低に変換され、リクエストは続行される」というチャネルセマンティクスに一致)。3. ツール呼び出しと並列ツール
関数呼び出しはすべてのAPIで動作することが確認されました;レスポンスAPIでは、単一ターン内での並列ツール呼び出しも観察されました(Z.aiはGLM-5.3に対して明示的にsupports_parallel_tool_calls: trueを宣言しています)。上流の制限:tools内で最大128の関数;tool_choiceはネイティブにautoのみをサポートします。
チャットコンプリート
completion = client.chat.completions.create(
model="coding-glm-5.3",
messages=[{"role": "user", "content": "What's the weather in Beijing today?"}],
tools=[{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get weather for a city",
"parameters": {"type": "object", "properties": {"city": {"type": "string"}}, "required": ["city"]},
},
}],
)
# Observed: finish_reason "tool_calls", with a get_weather call in tool_calls
検証済み: tool_choice: "none"は機能します — 同じ天気の質問はツール呼び出しなしでプレーンテキストを返します。レスポンス
response = client.responses.create(
model="coding-glm-5.3",
input="Check today's weather in Shanghai and Beijing",
parallel_tool_calls=True,
tools=[{
"type": "function",
"name": "get_weather",
"description": "Get weather for a city",
"parameters": {"type": "object", "properties": {"city": {"type": "string"}}, "required": ["city"]},
}],
)
# Observed: a single turn returns 2 parallel function_call output items (one for each city)
検証済み: 1ターンで2つの並列ツール呼び出しが行われ、公式のsupports_parallel_tool_calls: true宣言と一致しています。メッセージ
response = client.messages.create(
model="coding-glm-5.3",
max_tokens=4096,
tools=[{
"name": "get_weather",
"description": "Get weather for a city",
"input_schema": {"type": "object", "properties": {"city": {"type": "string"}}, "required": ["city"]},
}],
messages=[{"role": "user", "content": "What's the weather in Beijing today?"}],
)
# Observed: stop_reason "tool_use"; content contains a tool_use block
❗ 検証済み: このAPIでは、モデルはtool_choice: {"type": "none"}の後でもツール呼び出しを生成し続ける — ツールを無効にするには、toolsパラメータを完全に削除するか、代わりにチャットコンプリートAPIでtool_choice: "none"を使用してください。
4. 構造化出力
response_formatはtextとjson_objectをサポートします;上流ではjson_schemaモードはリストされていません。厳密なスキーマ準拠が必要な場合は、JSONスキーマをプロンプトに埋め込み、クライアント側で検証してください。
チャットコンプリート
completion = client.chat.completions.create(
model="coding-glm-5.3",
messages=[
{"role": "user", "content": "What is the capital of France? Answer in JSON with the key \"answer\"."}
],
response_format={"type": "json_object"},
)
# Observed response content: {"answer": "Paris"}
検証済み: 出力は要求されたキーを含む有効なJSONです。
レスポンス
response = client.responses.create(
model="coding-glm-5.3",
input="What is the capital of France? Answer in JSON with the key \"answer\".",
text={"format": {"type": "json_object"}},
)
# Observed output text: {"answer": "Paris"}
メッセージ
# プロンプトにJSON構造を指定;観察された出力は有効なJSON
response = client.messages.create(
model="coding-glm-5.3",
max_tokens=4096,
messages=[
{"role": "user", "content": "What is the capital of France? Answer in JSON with the key \"answer\"."}
],
)
# Observed response text: {"answer": "Paris"}
5. コンテキストキャッシングは自動
暗黙のキャッシングはデフォルトでオンになっており、パラメータを渡す必要はありません;繰り返しの長いプレフィックスは使用状況でキャッシュヒットを報告します(フィールド名はAPIによって異なります)。
チャットコンプリート
# 同一の長いプレフィックスを持つ2回目の呼び出しの使用
"prompt_tokens_details": {"cached_tokens": 960}
検証済み: 2回連続した呼び出しの2回目は960のキャッシュトークンにヒットしました。
レスポンス
# 同一の長いプレフィックスを持つ2回目の呼び出しの使用
"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は2つのうちの1つだけを調整することを推奨しています。
検証済み: パラメータ検証はAPIによって異なります — メッセージAPIは範囲外のtemperature: 3を400で拒否し、有効範囲[0,1]を明記しますが、チャットコンプリート / レスポンスは同じ範囲外の値を200で静かに受け入れます。API間で移行する際は、ゲートウェイが範囲外のサンプリング値をキャッチすることに依存しないでください。
# メッセージAPIでtemperature=3 -> HTTP 400
"temperature parameter invalid: value must be within [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を返し、思考は続行される(低に変換されるセマンティクス) |
➖ トグルパラメータなし | ❗ チャットと同じ |
| 関数呼び出し | ✅ | ✅ | ✅ |
| 並列ツール呼び出し | — | ✅ 1ターンで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] |
FAQ
AIHubMixでのGLM-5.3モデルIDは何ですか? [1m]サフィックスは必要ですか?
モデルIDはcoding-glm-5.3です — そのまま使用してください。glm-5.3[1m]はZ.aiのモデル名構文でClaude Codeクライアント用であり、AIHubMix呼び出しとは関係ありません;3つのAPIのいずれもサフィックスは必要ありません。
思考をオフにできますか?
いいえ。GLM-5.3の思考は常にオンであり、thinking.typeはenabledのみをサポートします;私たちのテストでは、disabledを送信すると200が返され、思考は依然として行われます(公式のセマンティクスに従ってlowレベルに変換されます)。思考トークンを節約するには、reasoning_effort: "low"を送信してください。
GLM-5.3はGLM-5.2とどのように関連していますか?
同じベースモデル — すべての利点はポストトレーニングから得られます(公式の表現:「GLM-5.2と同じベースモデルを使用しており、すべての利点はポストトレーニングから得られます」)。2つの重要なAPI変更:思考はもはや無効にできず、reasoning_effortは3つのレベルlow/high/max(デフォルトmax)に絞られます。
厳密なjson_schema構造化出力が必要な場合はどうすればよいですか?
上流ではresponse_format: json_schemaモードはリストされていません。私たちのテストでは、json_object JSONモードはすべての3つのAPIで有効なJSONを生成しました;厳密なスキーマには、JSONスキーマをプロンプトに埋め込み、クライアント側で検証してください。
coding-glm-5.3は製品リリースですか?
現在は期間限定のプレビュールートです(Z.aiのモデルAPIドキュメントでは公式APIは「近日公開」とマークされています);AIHubMixは商用APIが出荷され次第、追ってお知らせします。現在の価格とステータスについてはモデルページを参照してください。
価格とリアルタイムのステータスについては、GLM-5.3モデルページを参照してください;他のモデルについてはモデルギャラリーをご覧ください。




