Руководство по GLM-5.3: постоянное мышление, три уровня усилия и матрица поддержки API

Руководство по вызову GLM-5.3 на август 2026 года: постоянное мышление с тремя уровнями reasoning_effort, сводки рассуждений, параллельные вызовы инструментов, структурированный вывод и автоматическое кэширование, с проверенными примерами для API Chat, Responses и Messages в AIHubMix.

AIHubMix7 мин чтения
Руководство по GLM-5.3: постоянное мышление, три уровня усилия и матрица поддержки API

Заголовок: Практическое руководство по GLM-5.3: постоянное мышление, три уровня усилия и матрица поддержки API

Описание: Руководство по GLM-5.3 на август 2026 года: постоянное мышление с тремя уровнями reasoning_effort, сводки рассуждений, параллельные вызовы инструментов, структурированный вывод и автоматическое кэширование, с проверенными примерами для AIHubMix Chat / Responses / Messages.


В этой статье рассматриваются ключевые изменения API и особенности использования GLM-5.3. GLM-5.3 — флагманская модель Z.ai, выпущенная 2026-08-14. Она использует ту же базовую модель, что и GLM-5.2, а все улучшения получены за счёт постобучения. В AIHubMix ID модели: coding-glm-5.3 (сейчас это route предварительного доступа с ограниченным сроком), модель доступна через API Chat Completions, Responses и Messages, совместимый с Claude. См. также: официальный релиз-блог Z.ai.

Выводы «Verified» и примеры ответов в каждом разделе получены в результате реальных вызовов 2026-08-14 через API AIHubMix (Chat Completions / Responses / Messages).

1. Характеристики модели в общих чертах

Параметр Значение
Контекстное окно 1M токенов (официальное точное значение: 1 048 576)
Максимальный вывод 128K (проверенный предел max_tokens: 131 072, при превышении возвращается 400)
Входные модальности Текст
Мышление Всегда включено, отключить нельзя; reasoning_effort имеет три уровня — low / high / max, по умолчанию max
Связь с GLM-5.2 Та же базовая модель, улучшенная за счёт постобучения: значительно лучшая производительность в программировании и длинных агентных задачах, а также новые возможности в области кибербезопасности
ID модели в AIHubMix coding-glm-5.3 (route предварительного доступа с ограниченным сроком; мы сообщим, как только официальный коммерческий API станет доступен)
Проверено: max_tokens: 999999 возвращает 400 с допустимым диапазоном в теле ошибки, то есть предел действительно проверен и не обрезается молча.
# max_tokens=999999 -> HTTP 400
"max_tokens parameter invalid: value must be within [1,131072]"

2. GLM-5.3 и GLM-5.2: постоянное мышление, интенсивность через reasoning_effort

Параметр GLM-5.2 GLM-5.3
Базовая модель — Такая же, как у 5.2 (все улучшения получены за счёт постобучения)
thinking.type enabled / disabled — можно отключить enabled только — отключить нельзя
reasoning_effort Совместимость по 7 значениям (эффективные уровни: max/high) Три уровня low / high / max, по умолчанию max
Позиционирование Универсальный флагман Усилен для программирования и длинных агентных задач, с новыми возможностями в области кибербезопасности

Вот два самых важных изменения API в GLM-5.3 по сравнению с GLM-5.2:

  1. thinking.type больше не поддерживает disabled — мышление нельзя отключить. Официальная рекомендация по миграции: приложения, которые раньше отправляли {"type": "disabled"}, должны перейти на {"type": "enabled"} и установить reasoning_effort в "low".
  2. reasoning_effort сокращается до трёх уровней: low (лёгкий) / high (усиленный) / max (глубокий, по умолчанию). Схема совместимости из 7 значений, действовавшая в эпоху GLM-5.2, больше не применяется; Z.ai рекомендует max для задач программирования.
Проверено: отправка thinking: {"type": "disabled"} через AIHubMix возвращает 200, а мышление всё равно происходит (reasoning_content возвращается как обычно). Значение автоматически преобразуется согласно официальной семантике канала, а не отклоняется. Если ваш клиент полагался на «отключение мышления для экономии токенов», перейдите на reasoning_effort: "low".

Проверено: значения reasoning_effort вне перечисления также возвращают 200 без ошибки (с откатом к значению по умолчанию max согласно официальной документации). Сравнение low и max показывает ожидаемую тенденцию к более лёгкому мышлению: 27 и 39 токенов рассуждений для одного и того же арифметического вопроса.

Chat Completions

Содержимое мышления возвращается в поле reasoning_content; при потоковой передаче оно приходит как 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"
Проверено: usage.completion_tokens_details.reasoning_tokens показывает использование на мышление: 27 при reasoning_effort="low" и 39 при "max" для одного и того же вопроса.

Responses

Содержимое мышления возвращается как элемент вывода reasoning, а текст внутри массива summary имеет тип 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
Проверено: запрос по умолчанию (без параметра reasoning) уже включает элемент reasoning с summary_text, явное подключение не требуется.

Messages

Содержимое мышления возвращается как нативные блоки содержимого thinking.

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"]
Проверено: блоки thinking возвращаются по умолчанию; thinking: {"type": "disabled"} в этом API также возвращает 200, а мышление всё равно происходит (что согласуется с официальной семантикой «disabled преобразуется в low, запрос продолжается»).

3. Вызов инструментов и параллельные инструменты

Вызов функций проверен и работает во всех трёх API; в Responses API мы также наблюдали параллельные вызовы инструментов в рамках одного хода (Z.ai явно объявляет supports_parallel_tool_calls: true для GLM-5.3). Ограничения со стороны провайдера: до 128 функций в tools; tool_choice нативно поддерживает только 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
Проверено: tool_choice: "none" работает, тот же вопрос о погоде возвращает обычный текст без вызова инструмента.

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)
Проверено: 2 параллельных вызова инструментов в одном ходе, что соответствует официальному объявлению 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
❗ Проверено: в этом API модель всё равно генерирует вызовы инструментов после tool_choice: {"type": "none"}. Чтобы отключить инструменты, полностью удалите параметр tools или используйте tool_choice: "none" в API Chat Completions.

4. Структурированный вывод

response_format поддерживает text и json_object; провайдер не перечисляет режим json_schema. Если нужно строгое соответствие схеме, встройте JSON Schema в промпт и проверяйте результат на стороне клиента.

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"}
Проверено: вывод является корректным JSON и содержит запрошенный ключ.

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. Кэширование контекста работает автоматически

Неявное кэширование включено по умолчанию, никакие параметры передавать не нужно; повторяющиеся длинные префиксы отображаются как попадания в кэш в usage (название поля зависит от API).

Chat Completions

# usage of the second call with an identical long prefix
"prompt_tokens_details": {"cached_tokens": 960}
Проверено: второй из двух последовательных вызовов получил 960 токенов из кэша.

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
Проверено: в этом раунде попадание в кэш через этот API воспроизвести не удалось (кэши прогреваются отдельно для каждого канала; переключение балансировщиком нагрузки может вызвать промах). Поле учёта попаданий следует семантике Anthropic.

6. Параметры сэмплирования и их валидация

Сэмплирование следует соглашениям эндпоинтов семейства GLM: диапазон temperature — [0, 1], по умолчанию 1.0 (обратите внимание: уже, чем [0, 2] в протоколе OpenAI); диапазон top_p — [0.01, 1], по умолчанию 0.95. Z.ai рекомендует настраивать только один из этих параметров.

Проверено: валидация параметров различается между API. Messages API отклоняет выходящее за пределы значение temperature: 3 ошибкой 400 с указанием допустимого диапазона [0,1], тогда как Chat Completions и Responses молча принимают то же значение с кодом 200. При миграции между API не рассчитывайте, что шлюз сам поймает некорректные значения сэмплирования.
# Messages API with temperature=3 -> HTTP 400
"temperature parameter invalid: value must be within [0,1]"

7. Матрица поддержки возможностей по API

Каждая ячейка ниже проверена реальными вызовами через живые API AIHubMix 2026-08-14; в ячейках указано написание параметра или поля для каждого API.

Возможность Chat Completions Responses Messages
Базовая генерация / потоковая передача ✅ ✅ ✅
Содержимое мышления ✅ поле reasoning_content ✅ элемент вывода reasoning (summary_text) ✅ блок содержимого thinking
Интенсивность мышления ✅ reasoning_effort (low/high/max, по умолчанию max) ✅ так же, как слева ✅ принимается с 200
Отключение мышления ❗ Невозможно: disabled возвращает 200, а мышление продолжается (семантика преобразования в low) ➖ нет параметра переключения ❗ так же, как в Chat
Вызов функций ✅ ✅ ✅
Параллельные вызовы инструментов — ✅ 2 элемента function_call в одном ходе —
Отключение вызовов инструментов ✅ tool_choice: "none" работает ✅ 200 (вызовов не наблюдалось) ❗ вызовы всё равно генерируются после {"type": "none"}
Структурированный вывод (режим JSON) ✅ response_format: json_object ✅ text.format: json_object ✅ через соглашение в промпте
Строгий режим json_schema ❗ не перечислено у провайдера, встройте схему в промпт ❗ так же, как слева ❗ так же, как слева
Автоматический учёт кэша ✅ usage.prompt_tokens_details.cached_tokens ✅ usage.input_tokens_details.cached_tokens ✅ поле присутствует (попадание в этом раунде не воспроизведено)
Валидация максимального вывода ✅ 400 с диапазоном [1,131072] — —
Валидация параметров сэмплирования вне диапазона ❗ молчаливый 200 ❗ молчаливый 200 ✅ 400 с диапазоном [0,1]

FAQ

Какой ID модели GLM-5.3 в AIHubMix? Нужен ли суффикс [1m]?
ID модели: coding-glm-5.3, используйте его как есть. glm-5.3[1m] — это синтаксис имён моделей Z.ai для клиента Claude Code, он не имеет отношения к вызовам AIHubMix; ни один из трёх API не требует суффикса.

Можно ли отключить мышление?
Нет. Мышление GLM-5.3 всегда включено, а thinking.type поддерживает только enabled. В наших тестах отправка disabled возвращает 200, а мышление продолжается (преобразуется на уровень low согласно официальной семантике). Чтобы сэкономить токены мышления, отправьте reasoning_effort: "low".

Как GLM-5.3 связан с GLM-5.2?
Та же базовая модель: все улучшения получены за счёт постобучения (официальная формулировка: «Она использует ту же базовую модель, что и GLM-5.2, все улучшения получены за счёт постобучения»). Два жёстких изменения API: мышление больше нельзя отключить, а reasoning_effort сокращается до трёх уровней low/high/max (по умолчанию max).

Что делать, если нужен строгий структурированный вывод json_schema?
Провайдер не перечисляет режим response_format: json_schema. В наших тестах режим JSON json_object выдавал корректный JSON во всех трёх API; для строгих схем встройте JSON Schema в промпт и проверяйте результат на стороне клиента.

Является ли coding-glm-5.3 производственным релизом?
Сейчас это маршрут предварительного доступа с ограниченным сроком (в документации Z.ai к API модели официальный API помечен как «скоро»). AIHubMix сообщит об обновлении, как только коммерческий API станет доступен. Актуальные цены и статус см. на странице модели.


Актуальные цены и статус в реальном времени см. на странице модели GLM-5.3; больше моделей можно найти в галерее моделей.

Один шлюз ко многим провайдерам ИИ. Создан для продакшена.

Перейти на AIHubMix