GLM-5.3 : guide pratique, réflexion toujours active, trois niveaux d'effort et matrice de compatibilité des API

Guide d'août 2026 pour appeler GLM-5.3 : réflexion toujours active avec trois niveaux de reasoning_effort, résumés de raisonnement, appels d'outils en parallèle, sortie structurée et mise en cache automatique, avec des exemples testés pour les API Chat, Responses et Messages d'AIHubMix.

AIHubMix7 min de lecture
GLM-5.3 : guide pratique, réflexion toujours active, trois niveaux d'effort et matrice de compatibilité des API

Titre : GLM-5.3, guide pratique : réflexion toujours active, trois niveaux d'effort et matrice de compatibilité des API

Description : guide GLM-5.3 d'août 2026 : réflexion toujours active avec trois niveaux de reasoning_effort, résumés de raisonnement, appels d'outils en parallèle, sortie structurée et mise en cache automatique, avec des exemples vérifiés pour les API Chat / Responses / Messages d'AIHubMix.


Cet article présente les principaux changements d'API et les notes d'utilisation pour GLM-5.3. GLM-5.3 est le modèle phare de Z.ai, publié le 2026-08-14 ; il repose exactement sur le même modèle de base que GLM-5.2, et tous les gains proviennent de l'post-entraînement. Sur AIHubMix, l'identifiant du modèle est coding-glm-5.3 (actuellement une route de préversion à durée limitée), disponible via les API Chat Completions, Responses et Messages compatible Claude. Voir aussi : l'annonce officielle de Z.ai.

Les conclusions « Vérifié » et les exemples de réponses de chaque section proviennent d'appels réels effectués le 2026-08-14 via les API d'AIHubMix (Chat Completions / Responses / Messages).

1. Caractéristiques du modèle en bref

Élément Valeur
Fenêtre de contexte 1M tokens (valeur officielle exacte : 1 048 576)
Sortie maximale 128K (plafond vérifié de max_tokens : 131 072, un dépassement renvoie une erreur 400)
Modalités d'entrée Texte
Réflexion Toujours active, impossible à désactiver ; reasoning_effort comporte trois niveaux : low / high / max, par défaut max
Relation avec GLM-5.2 Même modèle de base, amélioré par post-entraînement : nettement meilleures performances en programmation et sur les tâches agentiques longues, ainsi que des capacités cyber émergentes
Identifiant du modèle sur AIHubMix coding-glm-5.3 (route de préversion à durée limitée ; nous publierons une mise à jour dès le lancement commercial officiel de l'API)
Vérifié : max_tokens: 999999 renvoie une erreur 400 qui indique explicitement la plage valide ; le plafond est donc bien validé et n'est pas tronqué silencieusement.
# max_tokens=999999 -> HTTP 400
"max_tokens parameter invalid: value must be within [1,131072]"

2. GLM-5.3 vs GLM-5.2 : réflexion toujours active, intensité via reasoning_effort

Élément GLM-5.2 GLM-5.3
Modèle de base — Identique à 5.2 (tous les gains proviennent du post-entraînement)
thinking.type enabled / disabled : peut être désactivé enabled uniquement : impossible à désactiver
reasoning_effort Mappage de compatibilité à 7 valeurs (niveaux effectifs : max/high) Trois niveaux low / high / max, par défaut max
Positionnement Modèle phare polyvalent Renforcé pour la programmation et les tâches agentiques longues, avec des capacités cyber émergentes

Voici les deux changements d'API les plus importants de GLM-5.3 par rapport à GLM-5.2 :

  1. thinking.type ne prend plus en charge disabled : la réflexion ne peut plus être désactivée. Conseil officiel de migration : les applications qui envoyaient {"type": "disabled"} doivent passer à {"type": "enabled"} et définir reasoning_effort sur "low".
  2. reasoning_effort se limite à trois niveaux : low (léger) / high (renforcé) / max (approfondi, valeur par défaut). Le mappage de compatibilité à 7 valeurs de l'ère GLM-5.2 ne s'applique plus ; Z.ai recommande max pour les tâches de programmation.
Vérifié : l'envoi de thinking: {"type": "disabled"} via AIHubMix renvoie 200, et la réflexion a toujours lieu (reasoning_content est renvoyé normalement). La valeur est convertie automatiquement selon la sémantique officielle du canal, et non rejetée. Si votre client s'appuyait sur « désactiver la réflexion pour économiser des tokens », passez à reasoning_effort: "low".

Vérifié : les valeurs hors énumération pour reasoning_effort renvoient aussi 200 sans erreur (retour à la valeur par défaut max selon la documentation officielle) ; low et max montrent la tendance attendue, à savoir une réflexion plus légère (27 contre 39 tokens de raisonnement pour la même question d'arithmétique).

Chat Completions

Le contenu de la réflexion est renvoyé dans le champ reasoning_content ; en streaming, il arrive sous la forme 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"
Vérifié : usage.completion_tokens_details.reasoning_tokens indique la consommation de la réflexion : 27 avec reasoning_effort="low", 39 avec "max" pour la même question.

Responses

Le contenu de la réflexion est renvoyé sous forme d'un élément de sortie reasoning, dont le texte se trouve dans le tableau summary sous la forme 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
Vérifié : la requête par défaut (sans aucun paramètre reasoning) inclut déjà l'élément reasoning avec summary_text ; aucune activation explicite n'est nécessaire.

Messages

Le contenu de la réflexion est renvoyé sous forme de blocs de contenu thinking natifs.

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"]
Vérifié : les blocs de réflexion sont renvoyés par défaut ; thinking: {"type": "disabled"} sur cette API renvoie également 200, la réflexion ayant toujours lieu (conforme à la sémantique officielle « disabled se convertit en low, la requête continue »).

3. Appels d'outils et outils en parallèle

L'appel de fonctions fonctionne sur les trois API ; sur l'API Responses, nous avons également observé des appels d'outils en parallèle au sein d'un même tour (Z.ai déclare explicitement supports_parallel_tool_calls: true pour GLM-5.3). Limites en amont : jusqu'à 128 fonctions dans tools ; tool_choice ne prend nativement en charge que 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
Vérifié : tool_choice: "none" fonctionne ; la même question météo renvoie une réponse textuelle simple, sans appel d'outil.

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)
Vérifié : 2 appels d'outils en parallèle dans un même tour, conformément à la déclaration officielle 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
❗ Vérifié : sur cette API, le modèle produit toujours des appels d'outils après tool_choice: {"type": "none"}. Pour désactiver les outils, supprimez entièrement le paramètre tools, ou utilisez plutôt tool_choice: "none" sur l'API Chat Completions.

4. Sortie structurée

response_format prend en charge text et json_object ; la documentation en amont ne mentionne pas de mode json_schema. Si vous avez besoin d'une conformité stricte au schéma, intégrez le JSON Schema dans le prompt et validez côté 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"}
Vérifié : la sortie est un JSON valide contenant la clé demandée.

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. La mise en cache du contexte est automatique

La mise en cache implicite est activée par défaut, sans paramètre à transmettre ; les préfixes longs répétés signalent des succès de cache dans l'usage (le nom du champ varie selon l'API).

Chat Completions

# usage of the second call with an identical long prefix
"prompt_tokens_details": {"cached_tokens": 960}
Vérifié : le second de deux appels consécutifs a obtenu 960 tokens en 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
Vérifié : nous n'avons pas reproduit de succès de cache sur cette API lors de ce cycle de tests (les caches se chauffent par canal ; un changement de répartiteur de charge peut provoquer un échec). Le champ de comptabilisation des succès suit la sémantique d'Anthropic.

6. Échantillonnage et validation des paramètres

L'échantillonnage suit les conventions des points de terminaison de la famille GLM : plage de temperature [0, 1] avec une valeur par défaut de 1.0 (à noter : plus étroite que la plage [0, 2] du protocole OpenAI) ; plage de top_p [0.01, 1] avec une valeur par défaut de 0.95. Z.ai recommande de n'ajuster qu'un seul des deux paramètres.

Vérifié : la validation des paramètres diffère selon les API. L'API Messages rejette une temperature: 3 hors plage avec une erreur 400 qui indique la plage valide [0,1], tandis que Chat Completions et Responses acceptent silencieusement la même valeur hors plage avec un code 200. Lors d'une migration entre API, ne comptez pas sur la passerelle pour détecter à votre place les valeurs d'échantillonnage hors plage.
# Messages API with temperature=3 -> HTTP 400
"temperature parameter invalid: value must be within [0,1]"

7. Matrice de compatibilité capacités × API

Chaque cellule ci-dessous a été vérifiée par des appels réels via les API en production d'AIHubMix le 2026-08-14 ; les cellules indiquent l'orthographe du paramètre ou du champ pour chaque API.

Capacité Chat Completions Responses Messages
Génération de base / streaming ✅ ✅ ✅
Contenu de la réflexion ✅ champ reasoning_content ✅ élément de sortie reasoning (summary_text) ✅ bloc de contenu thinking
Intensité de la réflexion ✅ reasoning_effort (low/high/max, par défaut max) ✅ identique à gauche ✅ accepté avec 200
Désactiver la réflexion ❗ Impossible : disabled renvoie 200 et la réflexion se poursuit (sémantique de conversion en low) ➖ aucun paramètre de bascule ❗ identique à Chat
Appel de fonctions ✅ ✅ ✅
Appels d'outils en parallèle — ✅ 2 éléments function_call dans un même tour —
Désactiver les appels d'outils ✅ tool_choice: "none" fonctionne ✅ 200 (aucun appel observé) ❗ des appels sont encore produits après {"type": "none"}
Sortie structurée (mode JSON) ✅ response_format: json_object ✅ text.format: json_object ✅ via convention de prompt
Mode strict json_schema ❗ non documenté en amont : intégrez le schéma dans le prompt ❗ identique à gauche ❗ identique à gauche
Comptabilisation automatique du cache ✅ usage.prompt_tokens_details.cached_tokens ✅ usage.input_tokens_details.cached_tokens ✅ champ présent (aucun succès de cache reproduit lors de ce cycle)
Validation de la sortie maximale ✅ 400 avec la plage [1,131072] — —
Validation des paramètres d'échantillonnage hors plage ❗ 200 silencieux ❗ 200 silencieux ✅ 400 avec la plage [0,1]

FAQ

Quel est l'identifiant du modèle GLM-5.3 sur AIHubMix ? Faut-il le suffixe [1m] ?
L'identifiant du modèle est coding-glm-5.3 ; utilisez-le tel quel. glm-5.3[1m] est la syntaxe de nom de modèle de Z.ai destinée au client Claude Code, et elle n'a rien à voir avec les appels AIHubMix ; aucune des trois API n'a besoin d'un suffixe.

Peut-on désactiver la réflexion ?
Non. La réflexion de GLM-5.3 est toujours active, et thinking.type ne prend en charge que enabled ; lors de nos tests, l'envoi de disabled renvoie 200 et la réflexion continue (convertie au niveau low selon la sémantique officielle). Pour économiser les tokens de réflexion, envoyez reasoning_effort: "low".

Quel est le lien entre GLM-5.3 et GLM-5.2 ?
Même modèle de base : tous les gains proviennent du post-entraînement (formulation officielle : « Il repose sur le même modèle de base que GLM-5.2 ; tous les gains proviennent du post-entraînement »). Deux changements d'API majeurs : la réflexion ne peut plus être désactivée, et reasoning_effort se limite à trois niveaux low/high/max (par défaut max).

Et si j'ai besoin d'une sortie structurée stricte en json_schema ?
La documentation en amont ne mentionne pas de mode response_format: json_schema. Lors de nos tests, le mode JSON json_object a produit du JSON valide sur les trois API ; pour des schémas stricts, intégrez le JSON Schema dans le prompt et validez côté client.

Le coding-glm-5.3 est-il la version de production ?
Il s'agit actuellement d'une route de prévisualisation à durée limitée (la documentation de l'API de modèles de Z.ai indique que l'API officielle est « bientôt disponible »). AIHubMix publiera une mise à jour dès que l'API commerciale sera lancée. Consultez la page du modèle pour connaître les tarifs et le statut actuels.


Pour les tarifs et le statut en temps réel, consultez la page du modèle GLM-5.3 ; pour d'autres modèles, rendez-vous dans la galerie de modèles.

Une seule passerelle vers plusieurs fournisseurs d’IA. Conçue pour la production.

Découvrir AIHubMix