Titolo: Guida pratica a GLM-5.3: Pensiero sempre attivo, tre livelli di sforzo & matrice di supporto API
Descrizione: Guida GLM-5.3 di agosto 2026: pensiero sempre attivo con tre livelli di sforzo di ragionamento, riassunti di ragionamento, chiamate a strumenti in parallelo, output strutturato e caching automatico — con esempi verificati di AIHubMix Chat / Risposte / Messaggi.
Questo articolo copre le principali modifiche all'API e note sull'uso per GLM-5.3. GLM-5.3 è il modello di punta di Z.ai rilasciato il 2026-08-14 — utilizza lo stesso modello di base di GLM-5.2, con ogni guadagno proveniente dal post-addestramento. Su AIHubMix l'ID del modello ècoding-glm-5.3(attualmente una rotta di anteprima a tempo limitato), disponibile tramite le API Chat Completions, Risposte e Messaggi compatibili con Claude. Vedi anche: il blog ufficiale di rilascio di Z.ai.
Le conclusioni e le risposte campione "Verificate" in ciascuna sezione provengono da chiamate effettive effettuate il 2026-08-14 tramite le API di AIHubMix (Chat Completions / Risposte / Messaggi).
1. Specifiche del modello a colpo d'occhio
| Elemento | Valore |
|---|---|
| Finestra di contesto | 1M token (valore esatto ufficiale: 1.048.576) |
| Output massimo | 128K (max_tokens limite verificato: 131.072 — superarlo restituisce 400) |
| Modalità di input | Testo |
| Pensiero | Sempre attivo, non può essere disattivato; reasoning_effort ha tre livelli — low / high / max, predefinito max |
| Relazione con GLM-5.2 | Stesso modello di base, aggiornato tramite post-addestramento: prestazioni di codifica e compiti a lungo termine molto più forti, oltre a capacità cibernetiche emergenti |
| ID modello AIHubMix | coding-glm-5.3 (rotta di anteprima a tempo limitato; seguiremo con aggiornamenti non appena l'API commerciale ufficiale sarà lanciata) |
Verificato: max_tokens: 999999 restituisce 400 con l'intervallo valido specificato nel corpo dell'errore — il limite è genuinamente convalidato, non troncato silenziosamente.# 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
| Elemento | GLM-5.2 | GLM-5.3 |
|---|---|---|
| Modello di base | — | Identico a 5.2 (tutti i guadagni provengono dal post-addestramento) |
thinking.type |
enabled / disabled — può essere disattivato |
enabled solo — non può essere disattivato |
reasoning_effort |
mappatura di compatibilità a 7 valori (livelli effettivi: max/high) | Tre livelli low / high / max, predefinito max |
| Posizionamento | Modello di punta per uso generale | Rafforzato per compiti di codifica e agentici a lungo termine, con capacità cibernetiche emergenti |
Queste sono le due modifiche API più importanti in 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 prima inviavano{"type": "disabled"}dovrebbero passare a{"type": "enabled"}e impostarereasoning_effortsu"low".reasoning_effortsi restringe a tre livelli:low(leggero) /high(potenziato) /max(profondo, il predefinito). La mappatura di compatibilità a 7 valori dell'era GLM-5.2 non si applica più; Z.ai raccomandamaxper i compiti di codifica.
Verificato: inviarethinking: {"type": "disabled"}tramite AIHubMix restituisce 200 e il pensiero si verifica comunque (reasoning_contentviene restituito come al solito) — il valore viene convertito automaticamente secondo la semantica del canale ufficiale piuttosto che essere rifiutato. Se il tuo client si basava su "disattivare il pensiero per risparmiare token", passa areasoning_effort: "low".
Verificato: valori fuori enum perreasoning_effortrestituiscono anch'essi 200 senza errore (tornando al predefinitomaxsecondo la documentazione ufficiale);lowrispetto amaxmostra la prevista tendenza al pensiero più leggero (27 rispetto a 39 token di ragionamento sulla stessa domanda aritmetica).
Chat Completions
Il contenuto del pensiero viene restituito nel campo reasoning_content; in 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, predefinito max
extra_body={"thinking": {"type": "enabled"}},
messages=[
{"role": "user", "content": "Calcola la radice quadrata di (17*23-19*11), arrotondata per difetto. Solo cifre."}
],
)
print(completion.choices[0].message.reasoning_content)
print(completion.choices[0].message.content) # Osservato: "13"
Verificato:usage.completion_tokens_details.reasoning_tokensriporta l'uso del pensiero — 27 conreasoning_effort="low", 39 con"max"sulla stessa domanda.
Risposte
Il contenuto del pensiero torna come un 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="Qual è la capitale della Francia? Solo il nome della città.",
)
# Tipi di elementi di risposta.output osservati: ["reasoning", "message"]
# elemento di ragionamento: {"type": "reasoning", "summary": [{"type": "summary_text", "text": "L'utente sta chiedendo..."}]}
# usage.output_tokens_details.reasoning_tokens: 80
Verificato: la richiesta predefinita (senza parametroreasoning) include già l'elementoreasoningconsummary_text— non è necessario alcun opt-in esplicito.
Messaggi
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": "Qual è la capitale della Francia? Solo il nome della città."}
],
)
# Tipi di blocchi di risposta.content osservati: ["thinking", "text"]
Verificato: i blocchi di pensiero vengono restituiti per impostazione predefinita; thinking: {"type": "disabled"} su questa API restituisce anch'esso 200 con il pensiero che continua a verificarsi (coerente con la semantica ufficiale "disattivato si converte in basso, la richiesta continua").3. Chiamata a strumenti e strumenti in parallelo
La chiamata a funzioni è stata verificata come funzionante su tutte e tre le API; sull'API Risposte abbiamo anche osservato chiamate a strumenti in parallelo all'interno di un singolo turno (Z.ai dichiara esplicitamente supports_parallel_tool_calls: true per GLM-5.3). Limiti upstream: 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": "Che tempo fa oggi a Pechino?"}],
tools=[{
"type": "function",
"function": {
"name": "get_weather",
"description": "Ottieni il meteo per una città",
"parameters": {"type": "object", "properties": {"city": {"type": "string"}}, "required": ["city"]},
},
}],
)
# Osservato: finish_reason "tool_calls", con una chiamata a get_weather in tool_calls
Verificato: tool_choice: "none" funziona — la stessa domanda sul meteo restituisce testo semplice senza chiamata a strumenti.Risposte
response = client.responses.create(
model="coding-glm-5.3",
input="Controlla il meteo di oggi a Shanghai e Pechino",
parallel_tool_calls=True,
tools=[{
"type": "function",
"name": "get_weather",
"description": "Ottieni il meteo per una città",
"parameters": {"type": "object", "properties": {"city": {"type": "string"}}, "required": ["city"]},
}],
)
# Osservato: un singolo turno restituisce 2 elementi di output function_call in parallelo (uno per ciascuna città)
Verificato: 2 chiamate a strumenti in parallelo in un turno, corrispondenti alla dichiarazione ufficiale supports_parallel_tool_calls: true.Messaggi
response = client.messages.create(
model="coding-glm-5.3",
max_tokens=4096,
tools=[{
"name": "get_weather",
"description": "Ottieni il meteo per una città",
"input_schema": {"type": "object", "properties": {"city": {"type": "string"}}, "required": ["city"]},
}],
messages=[{"role": "user", "content": "Che tempo fa oggi a Pechino?"}],
)
# Osservato: stop_reason "tool_use"; il contenuto contiene un blocco tool_use
❗ Verificato: su questa API, il modello produce ancora chiamate a strumenti dopotool_choice: {"type": "none"}— per disabilitare gli strumenti, rimuovi completamente il parametrotools, o usatool_choice: "none"sull'API Chat Completions invece.
4. Output strutturato
response_format supporta text e json_object; l'upstream non elenca una modalità json_schema. Quando hai bisogno di una rigorosa conformità allo schema, incorpora lo schema JSON nel prompt e valida lato client.
Chat Completions
completion = client.chat.completions.create(
model="coding-glm-5.3",
messages=[
{"role": "user", "content": "Qual è la capitale della Francia? Rispondi in JSON con la chiave \"answer\"."}
],
response_format={"type": "json_object"},
)
# Contenuto di risposta osservato: {"answer": "Parigi"}
Verificato: l'output è un JSON valido contenente la chiave richiesta.
Risposte
response = client.responses.create(
model="coding-glm-5.3",
input="Qual è la capitale della Francia? Rispondi in JSON con la chiave \"answer\".",
text={"format": {"type": "json_object"}},
)
# Testo di output osservato: {"answer": "Parigi"}
Messaggi
# Specifica la struttura JSON nel prompt; output osservato è un JSON valido
response = client.messages.create(
model="coding-glm-5.3",
max_tokens=4096,
messages=[
{"role": "user", "content": "Qual è la capitale della Francia? Rispondi in JSON con la chiave \"answer\"."}
],
)
# Testo di risposta osservato: {"answer": "Parigi"}
5. Il caching del contesto è automatico
Il caching implicito è attivo per impostazione predefinita senza parametri da passare; prefissi lunghi ripetuti segnalano colpi di cache nell'uso (il nome del campo varia a seconda dell'API).
Chat Completions
# uso della seconda chiamata con un prefisso lungo identico
"prompt_tokens_details": {"cached_tokens": 960}
Verificato: la seconda di due chiamate consecutive ha colpito 960 token memorizzati nella cache.
Risposte
# uso della seconda chiamata con un prefisso lungo identico
"input_tokens_details": {"cached_tokens": 960}
Messaggi
# i colpi sono segnalati tramite usage.cache_read_input_tokens
"cache_read_input_tokens": 0
Verificato: non abbiamo riprodotto un colpo di cache su questa API in questo round (le cache si riscaldano per canale; un cambio di bilanciamento del carico può causare un errore). Il campo di contabilizzazione dei colpi segue la semantica di Anthropic.
6. Campionamento e convalida dei parametri
Il campionamento segue le convenzioni degli endpoint della famiglia GLM: intervallo temperature [0, 1] con predefinito 1.0 (nota — più ristretto rispetto all'intervallo [0, 2] del protocollo OpenAI); intervallo top_p [0.01, 1] con predefinito 0.95. Z.ai raccomanda di regolare solo uno dei due.
Verificato: la convalida dei parametri differisce tra le API — l'API Messaggi rifiuta untemperature: 3fuori intervallo con un 400 che specifica l'intervallo valido[0,1], mentre Chat Completions / Risposte accettano silenziosamente lo stesso valore fuori intervallo con 200. Quando si migra tra le API, non fare affidamento sul gateway per catturare valori di campionamento fuori intervallo per te.
# API Messaggi con temperature=3 -> HTTP 400
"temperature parameter invalid: value must be within [0,1]"
7. Matrice di supporto API × capacità
Ogni cella qui sotto è stata verificata con chiamate reali tramite le API live di AIHubMix il 2026-08-14; le celle mostrano la scrittura dei parametri/campi per ciascuna API.
| Capacità | Chat Completions | Risposte | Messaggi |
|---|---|---|---|
| Generazione di base / streaming | ✅ | ✅ | ✅ |
| Contenuto di pensiero | ✅ reasoning_content field |
✅ reasoning output item (summary_text) |
✅ thinking content block |
| Intensità del pensiero | ✅ reasoning_effort (low/high/max, predefinito max) |
✅ stesso della sinistra | ✅ accettato con 200 |
| Disabilita il pensiero | ❗ Non possibile: disabled restituisce 200 e il pensiero continua (semantica convertita in basso) |
➖ nessun parametro di attivazione | ❗ stesso di Chat |
| Chiamata a funzioni | ✅ | ✅ | ✅ |
| Chiamate a strumenti in parallelo | — | ✅ 2 function_call items in un turno |
— |
| Disabilita le chiamate a 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 di prompt |
json_schema modalità rigorosa |
❗ non elencata upstream — incorpora lo schema nel prompt | ❗ stesso della sinistra | ❗ stesso della sinistra |
| Contabilità automatica della cache | ✅ usage.prompt_tokens_details.cached_tokens |
✅ usage.input_tokens_details.cached_tokens |
✅ campo presente (nessun colpo riprodotto in questo round) |
| Convalida dell'output massimo | ✅ 400 con intervallo [1,131072] | — | — |
| Convalida del campionamento fuori intervallo | ❗ silenzioso 200 | ❗ silenzioso 200 | ✅ 400 con intervallo [0,1] |
FAQ
Qual è l'ID del modello GLM-5.3 su AIHubMix? Ho bisogno del suffisso [1m]?
L'ID del modello è coding-glm-5.3 — usalo così com'è. glm-5.3[1m] è la sintassi del nome del modello di Z.ai per il client Claude Code e non ha nulla a che fare con le chiamate AIHubMix; nessuna delle tre API ha bisogno di alcun suffisso.
Posso disattivare il pensiero?
No. Il pensiero di GLM-5.3 è sempre attivo e thinking.type supporta solo enabled; nei nostri test, inviare disabled restituisce 200 con il pensiero che continua a verificarsi (convertito al livello low secondo le semantiche ufficiali). Per risparmiare token di pensiero, invia reasoning_effort: "low".
Come si relaziona GLM-5.3 a GLM-5.2?
Stesso modello di base — tutti i guadagni provengono dal post-addestramento (parole ufficiali: "Utilizza lo stesso modello di base di GLM-5.2 — ogni guadagno proviene dal post-addestramento"). Due dure modifiche API: il pensiero non può più essere disattivato e reasoning_effort si restringe a tre livelli low/high/max (predefinito max).
E se ho bisogno di un output strutturato rigoroso json_schema?
L'upstream 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, incorpora lo schema JSON nel prompt e valida lato client.
È coding-glm-5.3 il rilascio di produzione?
Attualmente è una rotta di anteprima a tempo limitato (la documentazione API del modello di Z.ai segna l'API ufficiale come "in arrivo"); AIHubMix seguirà non appena l'API commerciale sarà disponibile. Vedi la pagina del modello per i prezzi e lo stato attuali.
Per prezzi e stato in tempo reale, vedere la pagina del modello GLM-5.3; per ulteriori modelli, visita la galleria dei modelli.




