Introduction
GLM 5.2 est le modèle de chat à long contexte de Z.ai, proposé ici sous la forme d’un point de terminaison compatible OpenAI sur /v1/chat/completions. Il lit jusqu’à 1 048 576 tokens répartis sur 256 messages au plus et répond en 131 072 tokens au plus : un corpus entier entre, un constat sort.
L’effort de raisonnement propose deux réglages, high et max, max par défaut. temperature (de 0 à 1) et top_p sont acceptés, response_format renvoie du JSON, jusqu’à 128 outils peuvent être déclarés par requête, le contenu des messages est uniquement textuel et les réponses sont diffusées en Server-Sent Events.
Fonctionnalités et points forts
Huit tokens lus pour un écrit
1 048 576 en entrée et 131 072 en sortie font environ huit pour un, et cette forme dit à quoi sert le modèle : lire un trimestre de tickets, une réglementation complète ou une boîte mail entière et rendre un constat plutôt qu’une réécriture. Si la réponse doit être aussi longue que l’entrée, découpez d’abord le livrable.
max par défaut, high pour le volume
reasoning_effort démarre à max et descend à high pour les grosses premières passes. Les deux vivent dans le même corps de requête : un balayage économique de dix mille documents et un second regard attentif sur quarante d’entre eux relèvent de la même intégration. max consacre davantage du budget de réponse au raisonnement, c’est pourquoi max_tokens vaut ici 32 768 par défaut.
JSON et outils dans le même appel
Réglez response_format sur json_object et nommez les clés dans le message système, ou déclarez jusqu’à 128 fonctions et laissez tool_choice décider quand elles s’exécutent. Dans les deux cas, votre application valide le résultat avant d’agir.
Paramètres de requête
| Paramètre | Obligatoire | Description |
|---|---|---|
messages | Oui | 256 tours ordonnés au maximum, contenu texte uniquement. Mettez le corpus dans un message user, et la question plus le format de sortie dans le message system. 1 éléments minimum · 256 éléments maximum |
reasoning_effort | Non | high ou max. max est le défaut, comme sur l’API de Z.ai, donc une requête qui omet le champ obtient déjà le réglage le plus soigné ; descendez à high pour les passes en volume. |
stop | Non | Une seule séquence, sous forme de chaîne ou de tableau à un élément : Z.ai n’en lit qu’une. 1 caractères minimum · 1 éléments minimum · 1 éléments maximum |
max_tokens | Non | Plafonne la réponse à 131 072, soit un huitième de la fenêtre de lecture. 32 768 par défaut. |
temperature | Non | 0 à 1, 1 par défaut. Gardez-le à 0 dès que la réponse est lue par du code. |
top_p | Non | 0,01 à 1, 0,95 par défaut. Ajustez celui-ci ou temperature, jamais les deux dans la même comparaison. |
tools | Non | Jusqu’à 128 définitions de fonctions par requête. 128 éléments maximum |
tool_choice | Non | auto, none, required, ou un objet qui nomme une fonction. |
response_format | Non | Réclamez un objet JSON et nommez chaque clé dans le message system. |
Tarification
Entrée $0.98 / Sortie $3.08 par 1 million de tokens
Cas d’utilisation
Un trimestre de tickets de support en un appel
Chargez tous les tickets d’une fenêtre de publication dans une requête et demandez quels modes de défaillance reviennent, avec les identifiants de tickets comme preuves. Rien n’est écarté par échantillonnage : même un motif qui n’apparaît qu’une fois par semaine ressort.
Réglementation face au comportement du produit
Placez le texte intégral d’une réglementation à côté de votre documentation sur le traitement des données, et demandez les obligations, les contrôles qui y répondent et les manques, chaque manque rattaché à la clause dont il découle.
Des backends qui appellent vos outils internes
Déclarez une recherche de commande, un remboursement et une vérification de droits comme outils dans une requête, et laissez le modèle choisir lequel appeler. Les résultats reviennent comme messages de rôle tool, si bien qu’une résolution en plusieurs étapes reste dans une seule conversation.
Guide de prompt et conseils pratiques
Charger tout le corpus, pas un échantillon
La fenêtre est en général plus grande que l’index de recherche que quelqu’un s’apprêtait à construire. Mettez la matière dans un message utilisateur, du plus ancien au plus récent, et réservez le message système à la question et au format de sortie.
Demander un constat, pas une transcription
POST https://api.spicyapi.ai/v1/chat/completions avec {"model": "zai/glm-5.2", "messages": [{"role": "system", "content": "Return one JSON object with keys: obligations, controls, gaps. Every gap must cite the clause it comes from."}, {"role": "user", "content": "<the regulation>\n\n<our data-handling policy>"}], "reasoning_effort": "high", "max_tokens": 16000, "response_format": {"type": "json_object"}, "temperature": 0}. temperature 0 garde les exécutions répétées comparables quand vous revérifiez le même corpus.
N’escalader que les lignes ambiguës
Renvoyez en max, avec le même corpus, la poignée de manques que la première passe a marqués comme incertains. Vous payez deux fois la longue lecture, mais la réponse soignée porte sur les lignes qui comptent. Un max_tokens supérieur à 131 072 échoue à la validation, et les parties image et fichier sont refusées.
Démarrage rapide de l’API
curl --fail-with-body -sN https://api.spicyapi.ai/v1/chat/completions \
-H "Authorization: Bearer $SPICY_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"model": "zai/glm-5.2/chat",
"messages": [
{
"role": "user",
"content": "Summarise the following release notes into three bullet points."
}
],
"stream": true
}' \
| jq --unbuffered -Rrj 'select(startswith("data: ")) | .[6:] | select(. != "[DONE]") | fromjson | if .error then "\n[error] \(.error.message)\n" else (.choices[0].delta.content? // empty) end'
La référence API détaille l’authentification, le schéma complet, le polling et la gestion des erreurs.







