La API de GLM-5.2 le da acceso programático al modelo insignia de pesos abiertos de Z.ai: un MoE de ~753B parámetros orientado a razonamiento, codificación y contextos largos. En esta guía configurará una clave API, hará su primera llamada con curl, usará el SDK de OpenAI en Python, activará modos de razonamiento, transmitirá respuestas, ejecutará herramientas y calculará costos con el objeto usage.
Si ya integró la API de GLM-5.1, el cambio principal es el ID del modelo: use glm-5.2.
Qué cambió desde GLM-5.1
GLM-5.2 reemplaza a la generación 5.1. El formato de comunicación sigue siendo compatible, así que la mayoría de integraciones solo necesitan cambiar el modelo. Cambios relevantes:
- Nuevo esquema de atención dispersa. GLM-5.2 introduce “IndexShare”, que reutiliza un único indexador en cada cuatro capas de atención dispersa para reducir el costo de atención en contextos largos. Como usuario de la API no necesita configurarlo.
- Mejor rendimiento en codificación con agentes. Los resultados publicados de Z.ai sitúan Terminal-Bench 2.1 en 81.0, frente al 62.0 de GLM-5.1.
- Dos niveles de esfuerzo de pensamiento. GLM-5.2 expone razonamiento Alto y Máximo. Z.ai recomienda Máximo para tareas de codificación.
Dado que el código de solicitud de GLM-5.1 sigue funcionando, esta guía usa directamente glm-5.2.
Paso 1: Obtener una clave API de GLM-5.2
Inicie sesión en z.ai, abra la sección de claves API de su cuenta y cree una clave.
Guárdela como variable de entorno:
export ZAI_API_KEY="your-glm-5.2-api-key"
No inserte la clave en el código fuente ni la suba a Git. Una clave filtrada puede generar costos reales, ya que GLM-5.2 se factura por millón de tokens.
Paso 2: Configurar endpoint, base_url y modelo
GLM-5.2 es compatible con el formato de Chat Completions de OpenAI. Puede usar clientes existentes cambiando la URL base.
| Configuración | Valor |
|---|---|
| Endpoint de chat completions | https://api.z.ai/api/paas/v4/chat/completions |
| URL base para SDKs | https://api.z.ai/api/paas/v4/ |
| ID del modelo | glm-5.2 |
| Autenticación | Authorization: Bearer $ZAI_API_KEY |
Si prefiere enrutar por OpenRouter, el alias es z-ai/glm-5.2: OpenRouter.
Para ejecución local, Ollama publica los pesos como glm-5.2: librería de Ollama. Los pesos abiertos están en Hugging Face bajo licencia MIT.
Límites importantes:
- Ventana de contexto: 1M tokens (
1,048,576). - Salida máxima: la documentación de z.ai lista hasta 128K, pero verifique el límite en vivo antes de depender de él.
Paso 3: Hacer la primera solicitud con curl
Ejecute una llamada mínima a glm-5.2:
curl https://api.z.ai/api/paas/v4/chat/completions \
-H "Authorization: Bearer $ZAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "glm-5.2",
"messages": [
{"role": "system", "content": "You are a concise backend engineer."},
{"role": "user", "content": "Write a SQL query that returns the 5 newest orders per customer."}
]
}'
La respuesta sigue el formato de OpenAI:
idchoiceschoices[0].message.contentusage
El campo usage es clave para medir costos.
Paso 4: Llamar GLM-5.2 desde Python con el SDK de OpenAI
Instale el SDK:
pip install openai
Configure el cliente apuntando base_url a Z.ai:
from openai import OpenAI
import os
client = OpenAI(
api_key=os.environ["ZAI_API_KEY"],
base_url="https://api.z.ai/api/paas/v4/",
)
resp = client.chat.completions.create(
model="glm-5.2",
messages=[
{"role": "system", "content": "You are a concise backend engineer."},
{"role": "user", "content": "Explain idempotency keys in 3 sentences."},
],
)
print(resp.choices[0].message.content)
Con esto ya tiene una integración funcional. Sus utilidades existentes de reintentos, logging y manejo de errores deberían funcionar si ya usan el SDK de OpenAI.
Para una descripción más amplia de la familia GLM, consulte la descripción general de la API de GLM-5.
Paso 5: Controlar el razonamiento con thinking y reasoning_effort
GLM-5.2 permite activar o desactivar el razonamiento interno y ajustar el esfuerzo.
Desactivar razonamiento para baja latencia
Úselo para clasificación, routing, reescrituras cortas o tareas simples:
resp = client.chat.completions.create(
model="glm-5.2",
messages=[
{
"role": "user",
"content": "Classify: 'my card was charged twice'"
}
],
extra_body={
"thinking": {"type": "disabled"}
},
)
print(resp.choices[0].message.content)
Activar razonamiento máximo para código
Para refactorizaciones, debugging, matemáticas o tareas de agentes, active thinking y use reasoning_effort: "max":
resp = client.chat.completions.create(
model="glm-5.2",
messages=[
{
"role": "user",
"content": "Refactor this function to remove the N+1 query and explain the fix."
},
],
extra_body={
"thinking": {"type": "enabled"},
"reasoning_effort": "max",
},
)
print(resp.choices[0].message.content)
extra_body permite enviar campos no estándar con el SDK de OpenAI. En una llamada curl, coloque thinking y reasoning_effort al mismo nivel que model.
Tenga en cuenta que el razonamiento consume tokens de salida. Reserve max para tareas donde el aumento de calidad compense el costo.
Paso 6: Transmitir respuestas con streaming
Para chats y generaciones largas, active stream=True:
stream = client.chat.completions.create(
model="glm-5.2",
messages=[
{
"role": "user",
"content": "Write a 200-word changelog entry for a rate-limit fix."
}
],
stream=True,
)
for chunk in stream:
delta = chunk.choices[0].delta.content
if delta:
print(delta, end="", flush=True)
Con curl, añada "stream": true al cuerpo. El servidor devolverá Server-Sent Events:
data: {...}
data: {...}
data: [DONE]
El streaming no cambia el precio. Solo reduce la latencia percibida porque recibe tokens antes de que termine toda la generación.
Paso 7: Usar llamada a funciones y herramientas
La llamada a herramientas sigue el patrón estándar de OpenAI:
- Defina las herramientas disponibles.
- Envíe el mensaje del usuario.
- El modelo devuelve
tool_calls. - Usted ejecuta la función real.
- Envía el resultado de la herramienta de vuelta al modelo.
- El modelo genera la respuesta final.
Ejemplo con una herramienta de clima:
import json
tools = [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get the current temperature for a city.",
"parameters": {
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "City name, e.g. Berlin"
},
"unit": {
"type": "string",
"enum": ["c", "f"]
},
},
"required": ["city"],
},
},
}
]
messages = [
{
"role": "user",
"content": "What's the weather in Berlin in celsius?"
}
]
first = client.chat.completions.create(
model="glm-5.2",
messages=messages,
tools=tools,
)
call = first.choices[0].message.tool_calls[0]
args = json.loads(call.function.arguments)
# En producción, aquí llamaría su API real.
def get_weather(city, unit="c"):
return {
"city": city,
"temp": 12,
"unit": unit
}
result = get_weather(**args)
messages.append(first.choices[0].message)
messages.append({
"role": "tool",
"tool_call_id": call.id,
"content": json.dumps(result),
})
final = client.chat.completions.create(
model="glm-5.2",
messages=messages,
tools=tools,
)
print(final.choices[0].message.content)
Este mismo bucle se puede extender a varias herramientas, agentes o integraciones con MCP. El contrato no es específico de Z.ai: es el mismo patrón de herramientas compatible con OpenAI.
Para probar variantes de solicitudes sin reescribir curl, puede usar Apidog: defina el endpoint de GLM-5.2 una vez, guarde cuerpos de solicitud para cada modo de razonamiento e inspeccione respuestas de herramientas y streaming desde una interfaz.
Paso 8: Calcular costos con usage
Cada respuesta no transmitida incluye usage:
resp = client.chat.completions.create(
model="glm-5.2",
messages=[
{
"role": "user",
"content": "Summarize REST vs gRPC in 4 bullets."
}
],
)
u = resp.usage
print(u.prompt_tokens)
print(u.completion_tokens)
print(u.total_tokens)
Precios indicados:
- Entrada: $1.40 / 1M tokens
- Salida: $4.40 / 1M tokens
- Entrada en caché: alrededor de $0.26 / 1M tokens, según VentureBeat
Ejemplo de costo para 8,000 tokens de entrada y 1,500 tokens de salida:
(8000 / 1_000_000 * 1.40) + (1500 / 1_000_000 * 4.40)
= 0.0112 + 0.0066
= aproximadamente $0.0178
Los tokens de razonamiento con reasoning_effort: "max" cuentan como salida, por lo que una llamada compleja de codificación será más cara que una llamada con thinking desactivado.
VentureBeat informa que GLM-5.2 “supera a GPT-5.5 en codificación de largo alcance a aproximadamente 1/6 del costo”; atribuya esa afirmación a VentureBeat si la usa en documentación o comparativas.
Si prefiere un plan de tarifa plana en lugar de llamadas medidas, Z.ai también vende niveles del Plan de Codificación GLM. Los precios cambian, así que verifique los planes actuales en z.ai.
Para más detalles, consulte:
Uso de GLM-5.2 dentro de Claude Code
GLM-5.2 también ofrece una ruta compatible con Anthropic para usarlo desde Claude Code.
Configure la URL base de codificación:
export ANTHROPIC_BASE_URL="https://api.z.ai/api/coding/paas/v4"
export ANTHROPIC_API_KEY="your-glm-coding-plan-key"
export ANTHROPIC_DEFAULT_SONNET_MODEL="glm-5.2[1m]"
export ANTHROPIC_DEFAULT_OPUS_MODEL="glm-5.2[1m]"
export CLAUDE_CODE_AUTO_COMPACT_WINDOW=1000000
export API_TIMEOUT_MS=3000000
Notas prácticas:
-
glm-5.2[1m]selecciona la variante con contexto de 1M. -
API_TIMEOUT_MSalto evita que Claude Code cancele llamadas largas con contextos grandes. - Algunas fuentes muestran
open.z.ai/api/paas/v4; verifique la URL activa en la documentación de Z.ai antes de desplegar.
Guías relacionadas:
Referencia rápida de GLM-5.2
| Propiedad | GLM-5.2 |
|---|---|
| ID del modelo API | glm-5.2 |
| Arquitectura | ~753B MoE, BF16, atención dispersa IndexShare |
| Ventana de contexto | 1M tokens (1,048,576) |
| Salida máxima | hasta 128K según docs de z.ai, verificar en vivo |
| Modos de pensamiento | Alto / Máximo, o deshabilitado |
| Precio de entrada | $1.40 / 1M tokens |
| Precio de salida | $4.40 / 1M tokens |
| Licencia | MIT, pesos abiertos |
Benchmarks publicados por Z.ai:
- SWE-bench Pro: 62.1
- Humanity’s Last Exam con herramientas: 54.7
- AIME 2026: 99.2
- MCP-Atlas: 77.0
Para comparativas más detalladas:
Preguntas frecuentes
¿La API de GLM-5.2 es compatible con OpenAI?
Sí. Use el SDK de OpenAI, apunte base_url a:
https://api.z.ai/api/paas/v4/
Y establezca:
model="glm-5.2"
Chat, streaming y tools siguen el formato estándar.
¿Qué ID de modelo debo usar?
Depende del proveedor:
| Entorno | Modelo |
|---|---|
| API de Z.ai | glm-5.2 |
| OpenRouter | z-ai/glm-5.2 |
| Ollama | glm-5.2 |
| Claude Code | glm-5.2[1m] |
¿Cómo desactivo el razonamiento?
En Python:
extra_body={
"thinking": {"type": "disabled"}
}
Para tareas difíciles de codificación:
extra_body={
"thinking": {"type": "enabled"},
"reasoning_effort": "max"
}
Z.ai recomienda max para código.
¿Cuánto cuesta una llamada?
Use resp.usage para calcularlo con precisión.
Precios indicados:
- $1.40 / 1M tokens de entrada
- $4.40 / 1M tokens de salida
Recuerde que los tokens de razonamiento cuentan como salida.
¿GLM-5.2 tiene modelo de visión?
No hay una variante de visión confirmada a junio de 2026. Trátelo como texto de entrada y texto de salida hasta que Z.ai documente soporte de imágenes.
Conclusión
Integrar GLM-5.2 requiere pocos cambios si ya usa clientes compatibles con OpenAI:
- Configure
ZAI_API_KEY. - Use
base_url="https://api.z.ai/api/paas/v4/". - Envíe
model="glm-5.2". - Active o desactive
thinkingsegún el caso de uso. - Use streaming para UX de chat.
- Use tools para agentes.
- Lea
usagepara controlar costos.
Cuando necesite probar endpoints, guardar variantes de solicitud e inspeccionar llamadas a herramientas sin escribir curl manualmente, descargue Apidog y configure el endpoint de GLM-5.2 una vez.
Para contexto adicional:

Top comments (0)