Guide pratique de GLM-5.3 : Pensée toujours active, trois niveaux d'effort et matrice de support API

AIHubMix7 min de lecture
Guide pratique de GLM-5.3 : Pensée toujours active, trois niveaux d'effort et matrice de support API

Titre : Guide Pratique de GLM-5.3 : Pensée Toujours Active, Trois Niveaux d'Effort & Matrice de Support API

Description : Guide GLM-5.3 d'août 2026 : pensée toujours active avec trois niveaux d'effort de raisonnement, résumés de raisonnement, appels d'outils parallèles, sortie structurée et mise en cache automatique — avec des exemples vérifiés pour AIHubMix Chat / Réponses / Messages.


Cet article couvre les principaux changements d'API et notes d'utilisation pour GLM-5.3. GLM-5.3 est le modèle phare de Z.ai publié le 2026-08-14 — il utilise le même modèle de base que GLM-5.2, avec tous les gains provenant de l'après-formation. Sur AIHubMix, l'ID du modèle est coding-glm-5.3 (actuellement une route de prévisualisation limitée), disponible via les API Chat Completions, Réponses et Messages compatibles avec Claude. Voir aussi : le blog de publication officiel de Z.ai.

Les conclusions et réponses d'exemples vérifiées dans chaque section proviennent d'appels réels effectués le 2026-08-14 via les API AIHubMix (Chat Completions / Réponses / Messages).

1. Spécifications du Modèle en Un Coup d'Œil

Élément Valeur
Fenêtre de contexte 1M tokens (valeur exacte officielle : 1,048,576)
Sortie max 128K (max_tokens plafond vérifié : 131,072 — le dépasser renvoie 400)
Modalités d'entrée Texte
Pensée Toujours activée, ne peut pas être désactivée ; reasoning_effort a trois niveaux — low / high / max, par défaut max
Relation avec GLM-5.2 Même modèle de base, amélioré via l'après-formation : performances de codage et de tâches à long terme beaucoup plus fortes, plus des capacités cybernétiques émergentes
ID du modèle AIHubMix coding-glm-5.3 (route de prévisualisation limitée ; nous donnerons suite dès que l'API commerciale officielle sera lancée)
Vérifié : max_tokens: 999999 renvoie 400 avec la plage valide précisée dans le corps de l'erreur — le plafond est réellement validé, pas silencieusement tronqué.
# max_tokens=999999 -> HTTP 400
"paramètre max_tokens invalide : la valeur doit être comprise entre [1,131072]"

2. GLM-5.3 vs GLM-5.2 : Pensée 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 de l'après-formation)
thinking.type enabled / disabled — peut être désactivé enabled uniquement — ne peut pas être désactivé
reasoning_effort mappage de compatibilité à 7 valeurs (niveaux effectifs : max/high) Trois niveaux low / high / max, par défaut max
Positionnement Modèle phare à usage général Renforcé pour le codage et les tâches agentiques à long terme, avec des capacités cybernétiques émergentes

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

  1. thinking.type ne prend plus en charge disabled — la pensée ne peut pas être désactivée. Conseils de migration officiels : les applications qui envoyaient auparavant {"type": "disabled"} devraient passer à {"type": "enabled"} et définir reasoning_effort sur "low".
  2. reasoning_effort se limite à trois niveaux : low (léger) / high (amélioré) / max (profond, 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 codage.
Vérifié : envoyer thinking: {"type": "disabled"} via AIHubMix renvoie 200 et la pensée se produit toujours (reasoning_content est renvoyé comme d'habitude) — la valeur est convertie automatiquement selon les sémantiques officielles du canal plutôt que rejetée. Si votre client comptait sur "désactiver la pensée pour économiser des tokens", passez à reasoning_effort: "low".

Vérifié : les valeurs hors énumération pour reasoning_effort renvoient également 200 sans erreur (retombant sur le défaut max selon la documentation officielle) ; low vs max montre la tendance attendue de pensée plus légère (27 vs 39 tokens de raisonnement sur la même question arithmétique).

Chat Completions

Le contenu de la pensée 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, par défaut max
    extra_body={"thinking": {"type": "enabled"}},
    messages=[
        {"role": "user", "content": "Calculez la racine carrée de (17*23-19*11), arrondie à l'entier inférieur. Chiffres uniquement."}
    ],
)

print(completion.choices[0].message.reasoning_content)
print(completion.choices[0].message.content)   # Observé : "13"
Vérifié : usage.completion_tokens_details.reasoning_tokens rapporte l'utilisation de la pensée — 27 avec reasoning_effort="low", 39 avec "max" sur la même question.

Réponses

Le contenu de la pensée revient sous la forme d'un élément de sortie reasoning, avec le texte à l'intérieur du tableau summary comme 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="Quelle est la capitale de la France ? Nom de la ville uniquement.",
)

# Types d'éléments de réponse.output observés : ["reasoning", "message"]
# élément de raisonnement : {"type": "reasoning", "summary": [{"type": "summary_text", "text": "L'utilisateur demande..."}]}
# usage.output_tokens_details.reasoning_tokens : 80
Vérifié : la demande par défaut (sans paramètre reasoning du tout) inclut déjà l'élément reasoning avec summary_text — aucune option explicite nécessaire.

Messages

Le contenu de la pensée 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": "Quelle est la capitale de la France ? Nom de la ville uniquement."}
    ],
)

# Types de blocs de réponse.content observés : ["thinking", "text"]
Vérifié : les blocs de pensée sont renvoyés par défaut ; thinking: {"type": "disabled"} sur cette API renvoie également 200 avec la pensée toujours active (conforme aux sémantiques officielles "désactivé se convertit en faible, la demande continue").

3. Appels d'Outils et Outils Parallèles

Les appels de fonction ont été vérifiés comme fonctionnant sur les trois API ; sur l'API Réponses, nous avons également observé des appels d'outils parallèles dans un seul 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 prend en charge nativement auto uniquement.

Chat Completions

completion = client.chat.completions.create(
    model="coding-glm-5.3",
    messages=[{"role": "user", "content": "Quel temps fait-il à Pékin aujourd'hui ?"}],
    tools=[{
        "type": "function",
        "function": {
            "name": "get_weather",
            "description": "Obtenir la météo pour une ville",
            "parameters": {"type": "object", "properties": {"city": {"type": "string"}}, "required": ["city"]},
        },
    }],
)

# Observé : finish_reason "tool_calls", avec un appel get_weather dans tool_calls
Vérifié : tool_choice: "none" fonctionne — la même question sur la météo renvoie du texte brut sans appel d'outil.

Réponses

response = client.responses.create(
    model="coding-glm-5.3",
    input="Vérifiez la météo d'aujourd'hui à Shanghai et Pékin",
    parallel_tool_calls=True,
    tools=[{
        "type": "function",
        "name": "get_weather",
        "description": "Obtenir la météo pour une ville",
        "parameters": {"type": "object", "properties": {"city": {"type": "string"}}, "required": ["city"]},
    }],
)

# Observé : un seul tour renvoie 2 éléments de sortie function_call parallèles (un pour chaque ville)
Vérifié : 2 appels d'outils parallèles dans un tour, correspondant à 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": "Obtenir la météo pour une ville",
        "input_schema": {"type": "object", "properties": {"city": {"type": "string"}}, "required": ["city"]},
    }],
    messages=[{"role": "user", "content": "Quel temps fait-il à Pékin aujourd'hui ?"}],
)

# Observé : stop_reason "tool_use" ; le contenu contient un bloc tool_use
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, retirez complètement le paramètre tools, ou utilisez tool_choice: "none" sur l'API Chat Completions à la place.

4. Sortie Structurée

response_format prend en charge text et json_object ; l'amont ne liste pas de mode json_schema. Lorsque vous avez besoin d'une conformité stricte au schéma, intégrez le schéma JSON dans l'invite et validez côté client.

Chat Completions

completion = client.chat.completions.create(
    model="coding-glm-5.3",
    messages=[
        {"role": "user", "content": "Quelle est la capitale de la France ? Répondez en JSON avec la clé \"answer\"."}
    ],
    response_format={"type": "json_object"},
)

# Contenu de la réponse observé : {"answer": "Paris"}
Vérifié : la sortie est un JSON valide contenant la clé demandée.

Réponses

response = client.responses.create(
    model="coding-glm-5.3",
    input="Quelle est la capitale de la France ? Répondez en JSON avec la clé \"answer\".",
    text={"format": {"type": "json_object"}},
)

# Texte de sortie observé : {"answer": "Paris"}

Messages

# Spécifiez la structure JSON dans l'invite ; la sortie observée est un JSON valide
response = client.messages.create(
    model="coding-glm-5.3",
    max_tokens=4096,
    messages=[
        {"role": "user", "content": "Quelle est la capitale de la France ? Répondez en JSON avec la clé \"answer\"."}
    ],
)

# Texte de réponse observé : {"answer": "Paris"}

5. La Mise en Cache du Contexte est Automatique

La mise en cache implicite est activée par défaut sans paramètres à passer ; les préfixes longs répétés rapportent des hits de cache dans l'utilisation (le nom du champ varie selon l'API).

Chat Completions

# utilisation du deuxième appel avec un préfixe long identique
"prompt_tokens_details": {"cached_tokens": 960}
Vérifié : le deuxième des deux appels consécutifs a atteint 960 tokens mis en cache.

Réponses

# utilisation du deuxième appel avec un préfixe long identique
"input_tokens_details": {"cached_tokens": 960}

Messages

# les hits sont rapportés via usage.cache_read_input_tokens
"cache_read_input_tokens": 0
Vérifié : nous n'avons pas reproduit de hit de cache sur cette API lors de ce tour (les caches se réchauffent par canal ; un changement de répartiteur peut provoquer un échec). Le champ de comptabilité des hits suit les sémantiques 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 un défaut de 1.0 (note — plus étroite que la plage [0, 2] du protocole OpenAI) ; plage de top_p [0.01, 1] avec un défaut de 0.95. Z.ai recommande de régler uniquement l'un des deux.

Vérifié : la validation des paramètres diffère selon les API — l'API Messages rejette une temperature: 3 hors plage avec un 400 qui précise la plage valide [0,1], tandis que Chat Completions / Réponses acceptent silencieusement la même valeur hors plage avec 200. Lors de la migration entre les API, ne comptez pas sur la passerelle pour attraper les valeurs d'échantillonnage hors plage pour vous.
# API Messages avec temperature=3 -> HTTP 400
"paramètre temperature invalide : la valeur doit être comprise entre [0,1]"

7. Matrice de Support des Capacités × API

Chaque cellule ci-dessous a été vérifiée avec des appels réels via les API en direct d'AIHubMix le 2026-08-14 ; les cellules montrent l'orthographe des paramètres/champs pour chaque API.

Capacité Chat Completions Réponses Messages
Génération de base / streaming
Contenu de pensée reasoning_content champ ✅ élément de sortie reasoning (summary_text) ✅ bloc de contenu thinking
Intensité de la pensée reasoning_effort (low/high/max, par défaut max) ✅ identique à gauche ✅ accepté avec 200
Désactiver la pensée ❗ Impossible : disabled renvoie 200 et la pensée continue (sémantique convertie en faible) ➖ pas de paramètre de basculement ❗ identique à Chat
Appel de fonction
Appels d'outils parallèles ✅ 2 éléments function_call dans un tour
Désactiver les appels d'outils tool_choice: "none" fonctionne ✅ 200 (aucun appel observé) ❗ des appels sont toujours produits après {"type": "none"}
Sortie structurée (mode JSON) response_format: json_object text.format: json_object ✅ via convention d'invite
json_schema mode strict ❗ non listé en amont — intégrez le schéma dans l'invite ❗ identique à gauche ❗ identique à gauche
Comptabilité automatique du cache usage.prompt_tokens_details.cached_tokens usage.input_tokens_details.cached_tokens ✅ champ présent (aucun hit reproduit ce tour)
Validation de la sortie max ✅ 400 avec plage [1,131072]
Validation d'échantillonnage hors plage ❗ silencieux 200 ❗ silencieux 200 ✅ 400 avec plage [0,1]

FAQ

Quel est l'ID du modèle GLM-5.3 sur AIHubMix ? Ai-je besoin du suffixe [1m] ?
L'ID 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 pour le client Claude Code et n'a rien à voir avec les appels AIHubMix ; aucune des trois API n'a besoin de suffixe.

Puis-je désactiver la pensée ?
Non. La pensée de GLM-5.3 est toujours active et thinking.type ne prend en charge que enabled ; dans nos tests, envoyer disabled renvoie 200 avec la pensée toujours active (convertie au niveau low selon les sémantiques officielles). Pour économiser des tokens de pensée, envoyez reasoning_effort: "low".

Comment GLM-5.3 se rapporte-t-il à GLM-5.2 ?
Même modèle de base — tous les gains proviennent de l'après-formation (formulation officielle : "Il utilise le même modèle de base que GLM-5.2 — chaque gain provient de l'après-formation"). Deux changements d'API importants : la pensée ne peut plus être désactivée, et reasoning_effort se limite à trois niveaux low/high/max (max par défaut).

Que faire si j'ai besoin d'une sortie structurée json_schema stricte ?
L'amont ne liste pas de mode response_format: json_schema. Dans nos tests, le mode JSON json_object a produit un JSON valide sur les trois API ; pour des schémas stricts, intégrez le schéma JSON dans l'invite et validez côté client.

Est-ce que coding-glm-5.3 est la version de production ?
C'est actuellement une route de prévisualisation limitée (la documentation de l'API modèle de Z.ai marque l'API officielle comme "bientôt disponible") ; AIHubMix donnera suite dès que l'API commerciale sera lancée. Consultez la page du modèle pour les prix et le statut actuels.


Pour les prix et le statut en temps réel, consultez la page du modèle GLM-5.3 ; pour plus de modèles, visitez la galerie de modèles.