Guida pratica a GLM-5.3: Pensiero sempre attivo, tre livelli di sforzo e matrice di supporto API

AIHubMix7 min di lettura
Guida pratica a GLM-5.3: Pensiero sempre attivo, tre livelli di sforzo e matrice di supporto API

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:

  1. thinking.type non 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 impostare reasoning_effort su "low".
  2. reasoning_effort si 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 raccomanda max per i compiti di codifica.
Verificato: inviare thinking: {"type": "disabled"} tramite AIHubMix restituisce 200 e il pensiero si verifica comunque (reasoning_content viene 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 a reasoning_effort: "low".

Verificato: valori fuori enum per reasoning_effort restituiscono anch'essi 200 senza errore (tornando al predefinito max secondo la documentazione ufficiale); low rispetto a max mostra 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_tokens riporta l'uso del pensiero — 27 con reasoning_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 parametro reasoning) include già l'elemento reasoning con summary_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 dopo tool_choice: {"type": "none"} — per disabilitare gli strumenti, rimuovi completamente il parametro tools, o usa tool_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 un temperature: 3 fuori 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.