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

Una guida di agosto 2026 per chiamare GLM-5.3: 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.

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

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:

  1. thinking.type non 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 impostare reasoning_effort su "low".
  2. reasoning_effort si 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 consiglia max per le attività di coding.
Verificato: inviando thinking: {"type": "disabled"} tramite AIHubMix si ottiene 200 e il pensiero avviene comunque (reasoning_content viene 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 a reasoning_effort: "low".

Verificato: anche i valori fuori dall'enumerazione per reasoning_effort restituiscono 200 senza errori (ricadendo sul default max secondo la documentazione ufficiale); low rispetto a max mostra 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_tokens riporta l'utilizzo del pensiero — 27 con reasoning_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 parametro reasoning) include già l'elemento reasoning con summary_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 dopo tool_choice: {"type": "none"} — per disattivare gli strumenti, rimuovi interamente il parametro tools, oppure usa tool_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 una temperature: 3 fuori 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.

Un unico gateway per più provider di IA. Pensato per la produzione.

Visita AIHubMix