DEV Community

Cover image for Cómo usar la API GLM-5.2
Roobia
Roobia

Posted on • Originally published at apidog.com

Cómo usar la API GLM-5.2

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.

Prueba Apidog hoy

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"
Enter fullscreen mode Exit fullscreen mode

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."}
    ]
  }'
Enter fullscreen mode Exit fullscreen mode

La respuesta sigue el formato de OpenAI:

  • id
  • choices
  • choices[0].message.content
  • usage

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
Enter fullscreen mode Exit fullscreen mode

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)
Enter fullscreen mode Exit fullscreen mode

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)
Enter fullscreen mode Exit fullscreen mode

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)
Enter fullscreen mode Exit fullscreen mode

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)
Enter fullscreen mode Exit fullscreen mode

Con curl, añada "stream": true al cuerpo. El servidor devolverá Server-Sent Events:

data: {...}
data: {...}
data: [DONE]
Enter fullscreen mode Exit fullscreen mode

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:

  1. Defina las herramientas disponibles.
  2. Envíe el mensaje del usuario.
  3. El modelo devuelve tool_calls.
  4. Usted ejecuta la función real.
  5. Envía el resultado de la herramienta de vuelta al modelo.
  6. 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)
Enter fullscreen mode Exit fullscreen mode

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)
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Notas prácticas:

  • glm-5.2[1m] selecciona la variante con contexto de 1M.
  • API_TIMEOUT_MS alto 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/
Enter fullscreen mode Exit fullscreen mode

Y establezca:

model="glm-5.2"
Enter fullscreen mode Exit fullscreen mode

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"}
}
Enter fullscreen mode Exit fullscreen mode

Para tareas difíciles de codificación:

extra_body={
    "thinking": {"type": "enabled"},
    "reasoning_effort": "max"
}
Enter fullscreen mode Exit fullscreen mode

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:

  1. Configure ZAI_API_KEY.
  2. Use base_url="https://api.z.ai/api/paas/v4/".
  3. Envíe model="glm-5.2".
  4. Active o desactive thinking según el caso de uso.
  5. Use streaming para UX de chat.
  6. Use tools para agentes.
  7. Lea usage para 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)