Titolo: Guida pratica a GLM-5.3: pensiero sempre attivo, tre livelli di sforzo e matrice di supporto delle API
Descrizione: Guida a GLM-5.3 di agosto 2026: pensiero sempre attivo con tre livelli di reasoning_effort, riepiloghi del ragionamento, chiamate parallele di strumenti, output strutturato e caching automatico, con esempi verificati per le API Chat, Responses e Messages di AIHubMix.
Questo articolo illustra le principali modifiche alle API e le note d'uso per GLM-5.3. GLM-5.3 è il modello di punta di Z.ai, rilasciato il 14/08/2026: utilizza esattamente lo stesso modello di base di GLM-5.2, e ogni miglioramento deriva dal post-training. Su AIHubMix l'ID del modello ècoding-glm-5.3(attualmente una route di anteprima a tempo limitato), disponibile tramite le API Chat Completions, Responses e Messages compatibili con Claude. Vedi anche: il comunicato ufficiale di Z.ai.
Le conclusioni "Verificato" e le risposte di esempio in ogni sezione provengono da chiamate effettive effettuate il 14/08/2026 tramite le API di AIHubMix (Chat Completions / Responses / Messages).
1. Specifiche del modello in sintesi
| Voce | Valore |
|---|---|
| Finestra di contesto | 1M token (valore ufficiale esatto: 1.048.576) |
| Output massimo | 128K (limite verificato di max_tokens: 131.072 — superarlo restituisce 400) |
| Modalità di input | Testo |
| Pensiero | Sempre attivo, non può essere disattivato; reasoning_effort ha tre livelli — low / high / max, con default max |
| Relazione con GLM-5.2 | Stesso modello di base, migliorato tramite post-training: prestazioni nettamente superiori nel coding e nelle attività a lungo orizzonte, più capacità cyber emergenti |
| ID del modello su AIHubMix | coding-glm-5.3 (route di anteprima a tempo limitato; aggiorneremo non appena sarà lanciata l'API commerciale ufficiale) |
Verificato: max_tokens: 999999 restituisce 400 con l'intervallo valido riportato nel corpo dell'errore — il limite è effettivamente convalidato e non viene troncato in silenzio.# max_tokens=999999 -> HTTP 400
"max_tokens parameter invalid: value must be within [1,131072]"
2. GLM-5.3 vs GLM-5.2: pensiero sempre attivo, intensità tramite reasoning_effort
| Voce | GLM-5.2 | GLM-5.3 |
|---|---|---|
| Modello di base | — | Identico a 5.2 (tutti i miglioramenti dal post-training) |
thinking.type |
enabled / disabled — può essere disattivato |
enabled soltanto — non può essere disattivato |
reasoning_effort |
Mappatura di compatibilità a 7 valori (livelli effettivi: max/high) | Tre livelli low / high / max, con default max |
| Posizionamento | Modello di punta generico | Potenziato per il coding e per le attività agentiche a lungo orizzonte, con capacità cyber emergenti |
Queste sono le due modifiche più importanti alle API di GLM-5.3 rispetto a GLM-5.2:
thinking.typenon supporta piùdisabled— il pensiero non può essere disattivato. Consiglio ufficiale per la migrazione: le applicazioni che inviavano{"type": "disabled"}dovrebbero passare a{"type": "enabled"}e impostarereasoning_effortsu"low".reasoning_effortsi riduce a tre livelli:low(leggero) /high(potenziato) /max(profondo, il default). La mappatura di compatibilità a 7 valori dell'era GLM-5.2 non si applica più; Z.ai consigliamaxper le attività di coding.
Verificato: inviandothinking: {"type": "disabled"}tramite AIHubMix si ottiene 200 e il pensiero avviene comunque (reasoning_contentviene restituito come di consueto) — il valore viene convertito automaticamente secondo la semantica ufficiale del canale anziché essere rifiutato. Se il tuo client si basava su "disattivare il pensiero per risparmiare token", passa areasoning_effort: "low".
Verificato: anche i valori fuori dall'enumerazione perreasoning_effortrestituiscono 200 senza errori (ricadendo sul defaultmaxsecondo la documentazione ufficiale);lowrispetto amaxmostra la tendenza attesa a un pensiero più leggero (27 contro 39 token di ragionamento sulla stessa domanda aritmetica).
Chat Completions
Il contenuto del pensiero viene restituito nel campo reasoning_content; nello streaming arriva come 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"
Verificato:usage.completion_tokens_details.reasoning_tokensriporta l'utilizzo del pensiero — 27 conreasoning_effort="low", 39 con"max"sulla stessa domanda.
Responses
Il contenuto del pensiero torna come elemento di output reasoning, con il testo all'interno dell'array summary come 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
Verificato: la richiesta predefinita (senza alcun parametroreasoning) include già l'elementoreasoningconsummary_text— non serve alcuna attivazione esplicita.
Messages
Il contenuto del pensiero viene restituito come blocchi di contenuto thinking nativi.
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"]
Verificato: i blocchi di pensiero vengono restituiti per impostazione predefinita; thinking: {"type": "disabled"} su questa API restituisce analogamente 200 con il pensiero che continua ad avvenire (coerente con la semantica ufficiale del canale "disabled viene convertito in low, la richiesta prosegue").3. Chiamata di strumenti e strumenti paralleli
La chiamata di funzioni è stata verificata su tutte e tre le API; sull'API Responses abbiamo inoltre osservato chiamate di strumenti parallele all'interno di un singolo turno (Z.ai dichiara esplicitamente supports_parallel_tool_calls: true per GLM-5.3). Limiti a monte: fino a 128 funzioni in tools; tool_choice supporta nativamente solo auto.
Chat Completions
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
Verificato: tool_choice: "none" funziona — la stessa domanda sul meteo restituisce testo semplice senza chiamata di strumenti.Responses
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)
Verificato: 2 chiamate di strumenti parallele in un unico turno, in linea con la dichiarazione ufficiale supports_parallel_tool_calls: true.Messages
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
❗ Verificato: su questa API, il modello continua a produrre chiamate di strumenti dopotool_choice: {"type": "none"}— per disattivare gli strumenti, rimuovi interamente il parametrotools, oppure usatool_choice: "none"sull'API Chat Completions.
4. Output strutturato
response_format supporta text e json_object; il backend non elenca una modalità json_schema. Quando serve la piena conformità a uno schema, inserisci il JSON Schema nel prompt e convalidalo lato client.
Chat Completions
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"}
Verificato: l'output è un JSON valido contenente la chiave richiesta.
Responses
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"}
Messages
# Specify the JSON structure in the prompt; observed output is valid 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. Il caching del contesto è automatico
Il caching implicito è attivo per impostazione predefinita e non richiede parametri; i prefissi lunghi ripetuti segnalano cache hit nell'utilizzo (il nome del campo varia a seconda dell'API).
Chat Completions
# usage of the second call with an identical long prefix
"prompt_tokens_details": {"cached_tokens": 960}
Verificato: la seconda di due chiamate consecutive ha ottenuto 960 token in cache.
Responses
# usage of the second call with an identical long prefix
"input_tokens_details": {"cached_tokens": 960}
Messages
# hits are reported via usage.cache_read_input_tokens
"cache_read_input_tokens": 0
Verificato: in questo giro non abbiamo riprodotto un cache hit su questa API (le cache si scaldano per canale; un cambio di bilanciatore può causare un miss). Il campo di conteggio dei hit segue la semantica di Anthropic.
6. Campionamento e validazione dei parametri
Il campionamento segue le convenzioni degli endpoint della famiglia GLM: temperature con intervallo [0, 1] e default 1.0 (nota — più ristretto rispetto al [0, 2] del protocollo OpenAI); top_p con intervallo [0.01, 1] e default 0.95. Z.ai consiglia di regolarne solo uno dei due.
Verificato: la validazione dei parametri varia tra le API — l'API Messages rifiuta unatemperature: 3fuori intervallo con un 400 che riporta l'intervallo valido[0,1], mentre Chat Completions / Responses accettano in silenzio lo stesso valore fuori intervallo con 200. Quando si migra tra API, non fare affidamento sul gateway per intercettare per te i valori di campionamento fuori intervallo.
# Messages API with temperature=3 -> HTTP 400
"temperature parameter invalid: value must be within [0,1]"
7. Matrice di supporto Capacità × API
Ogni cella seguente è stata verificata con chiamate reali tramite le API live di AIHubMix il 14/08/2026; le celle mostrano la grafia di parametro/campo per ciascuna API.
| Capacità | Chat Completions | Responses | Messages |
|---|---|---|---|
| Generazione di base / streaming | ✅ | ✅ | ✅ |
| Contenuto del pensiero | ✅ campo reasoning_content |
✅ elemento di output reasoning (summary_text) |
✅ blocco di contenuto thinking |
| Intensità del pensiero | ✅ reasoning_effort (low/high/max, default max) |
✅ come a sinistra | ✅ accettato con 200 |
| Disattivare il pensiero | ❗ Non possibile: disabled restituisce 200 e il pensiero continua (semantica di conversione a low) |
➖ nessun parametro di attivazione/disattivazione | ❗ come Chat |
| Chiamata di funzioni | ✅ | ✅ | ✅ |
| Chiamate di strumenti parallele | — | ✅ 2 elementi function_call in un unico turno |
— |
| Disattivare le chiamate di strumenti | ✅ tool_choice: "none" funziona |
✅ 200 (nessuna chiamata osservata) | ❗ chiamate ancora prodotte dopo {"type": "none"} |
| Output strutturato (modalità JSON) | ✅ response_format: json_object |
✅ text.format: json_object |
✅ tramite convenzione nel prompt |
Modalità rigorosa json_schema |
❗ non elencata a monte — inserire lo schema nel prompt | ❗ come a sinistra | ❗ come a sinistra |
| Contabilizzazione automatica della cache | ✅ usage.prompt_tokens_details.cached_tokens |
✅ usage.input_tokens_details.cached_tokens |
✅ campo presente (nessun hit riprodotto in questo giro) |
| Validazione dell'output massimo | ✅ 400 con intervallo [1,131072] | — | — |
| Validazione dei valori di campionamento fuori intervallo | ❗ 200 silenzioso | ❗ 200 silenzioso | ✅ 400 con intervallo [0,1] |
FAQ
Qual è l'ID del modello GLM-5.3 su AIHubMix? Serve il suffisso [1m]?
L'ID del modello è coding-glm-5.3 — usalo così com'è. glm-5.3[1m] è la sintassi dei nomi di modello di Z.ai per il client Claude Code e non ha nulla a che vedere con le chiamate su AIHubMix; nessuna delle tre API richiede alcun suffisso.
Posso disattivare il pensiero?
No. Il pensiero di GLM-5.3 è sempre attivo e thinking.type supporta solo enabled; nei nostri test, inviando disabled si ottiene 200 con il pensiero che continua (convertito al livello low secondo la semantica ufficiale). Per risparmiare token di pensiero, invia reasoning_effort: "low".
Qual è la relazione tra GLM-5.3 e GLM-5.2?
Stesso modello di base — tutti i miglioramenti derivano dal post-training (formulazione ufficiale: "Utilizza lo stesso modello di base di GLM-5.2 — ogni miglioramento deriva dal post-training"). Due modifiche API sostanziali: il pensiero non può più essere disattivato, e reasoning_effort si riduce a tre livelli low/high/max (default max).
E se mi serve un output strutturato json_schema rigoroso?
Il backend non elenca una modalità response_format: json_schema. Nei nostri test, la modalità JSON json_object ha prodotto JSON valido su tutte e tre le API; per schemi rigorosi, inserisci il JSON Schema nel prompt e convalidalo lato client.
È coding-glm-5.3 la versione di produzione?
Al momento si tratta di una route di anteprima a tempo limitato (la documentazione API dei modelli di Z.ai indica l'API ufficiale come "in arrivo"); AIHubMix aggiornerà non appena sarà disponibile l'API commerciale. Per i prezzi attuali e lo stato, consulta la pagina del modello.
Per prezzi e stato in tempo reale, consulta la pagina del modello GLM-5.3; per altri modelli, visita la galleria dei modelli.



