Praktyczny przewodnik po GLM-5.3: Myślenie zawsze włączone, trzy poziomy wysiłku i macierz wsparcia API

AIHubMix7 min czytania
Praktyczny przewodnik po GLM-5.3: Myślenie zawsze włączone, trzy poziomy wysiłku i macierz wsparcia API

Tytuł: Praktyczny przewodnik po GLM-5.3: Myślenie zawsze włączone, trzy poziomy wysiłku & macierz wsparcia API

Opis: Przewodnik GLM-5.3 z sierpnia 2026 roku: myślenie zawsze włączone z trzema poziomami wysiłku rozumowania, podsumowaniami rozumowania, równoległymi wywołaniami narzędzi, ustrukturyzowanym wyjściem i automatycznym buforowaniem — z potwierdzonymi przykładami AIHubMix Chat / Responses / Messages.


Ten artykuł omawia kluczowe zmiany w API oraz uwagi dotyczące użytkowania dla GLM-5.3. GLM-5.3 to flagowy model Z.ai wydany 2026-08-14 — wykorzystuje dokładnie ten sam model bazowy co GLM-5.2, a wszystkie zyski pochodzą z post-treningu. Na AIHubMix identyfikator modelu to coding-glm-5.3 (aktualnie ograniczona wersja próbna), dostępny przez API Chat Completions, Responses i Claude-compatible Messages. Zobacz także: oficjalny blog wydania Z.ai.

Wnioski i przykładowe odpowiedzi w każdej sekcji pochodzą z rzeczywistych wywołań dokonanych 2026-08-14 przez API AIHubMix (Chat Completions / Responses / Messages).

1. Specyfikacje modelu w skrócie

Element Wartość
Okno kontekstowe 1M tokenów (oficjalna dokładna wartość: 1,048,576)
Maksymalne wyjście 128K (max_tokens potwierdzony sufit: 131,072 — przekroczenie go zwraca 400)
Modalności wejściowe Tekst
Myślenie Zawsze włączone, nie można wyłączyć; reasoning_effort ma trzy poziomy — low / high / max, domyślnie max
Relacja do GLM-5.2 Ten sam model bazowy, ulepszony przez post-trening: znacznie silniejsze kodowanie i wydajność zadań długoterminowych, plus emergentne zdolności cybernetyczne
Identyfikator modelu AIHubMix coding-glm-5.3 (ograniczona wersja próbna; będziemy informować, gdy tylko oficjalne komercyjne API zostanie uruchomione)
Potwierdzone: max_tokens: 999999 zwraca 400 z poprawnym zakresem podanym w treści błędu — sufit jest rzeczywiście potwierdzony, a nie cicho przycięty.
# max_tokens=999999 -> HTTP 400
"max_tokens parameter invalid: value must be within [1,131072]"

2. GLM-5.3 vs GLM-5.2: Myślenie zawsze włączone, intensywność przez reasoning_effort

Element GLM-5.2 GLM-5.3
Model bazowy Identyczny do 5.2 (wszystkie zyski pochodzą z post-treningu)
thinking.type enabled / disabled — można wyłączyć enabled tylko — nie można wyłączyć
reasoning_effort 7-wartościowe mapowanie kompatybilności (efektywne poziomy: max/high) Trzy poziomy low / high / max, domyślnie max
Pozycjonowanie Flagowy model ogólnego przeznaczenia Wzmocniony do kodowania i długoterminowych zadań agentowych, z emergentnymi zdolnościami cybernetycznymi

To są dwie najważniejsze zmiany w API w GLM-5.3 w porównaniu do GLM-5.2:

  1. thinking.type nie obsługuje już disabled — myślenie nie może być wyłączone. Oficjalna rada migracyjna: aplikacje, które wcześniej wysyłały {"type": "disabled"} powinny przełączyć się na {"type": "enabled"} i ustawić reasoning_effort na "low".
  2. reasoning_effort zawęża się do trzech poziomów: low (lekki) / high (wzmocniony) / max (głęboki, domyślnie). 7-wartościowe mapowanie kompatybilności z ery GLM-5.2 już nie obowiązuje; Z.ai zaleca max do zadań kodowania.
Potwierdzone: wysyłanie thinking: {"type": "disabled"} przez AIHubMix zwraca 200 i myślenie nadal zachodzi (reasoning_content jest zwracane jak zwykle) — wartość jest automatycznie konwertowana zgodnie z oficjalną semantyką kanału, a nie odrzucana. Jeśli Twój klient polegał na "wyłączeniu myślenia, aby zaoszczędzić tokeny", przełącz się na reasoning_effort: "low".

Potwierdzone: wartości poza zakresem dla reasoning_effort również zwracają 200 bez błędu (przechodząc do domyślnego max zgodnie z oficjalną dokumentacją); low w porównaniu do max pokazuje oczekiwaną tendencję do lżejszego myślenia (27 w porównaniu do 39 tokenów rozumowania na to samo pytanie arytmetyczne).

Zakończenia czatu

Treść myślenia jest zwracana w polu reasoning_content; w strumieniu przychodzi jako 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, domyślnie max
    extra_body={"thinking": {"type": "enabled"}},
    messages=[
        {"role": "user", "content": "Oblicz pierwiastek kwadratowy z (17*23-19*11), zaokrąglając w dół. Tylko cyfry."}
    ],
)

print(completion.choices[0].message.reasoning_content)
print(completion.choices[0].message.content)   # Obserwowane: "13"
Potwierdzone: usage.completion_tokens_details.reasoning_tokens raportuje użycie myślenia — 27 z reasoning_effort="low", 39 z "max" na to samo pytanie.

Odpowiedzi

Treść myślenia wraca jako element wyjściowy reasoning, z tekstem wewnątrz tablicy summary jako 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="Jakie jest stolica Francji? Tylko nazwa miasta.",
)

# Obserwowane typy elementów response.output: ["reasoning", "message"]
# element rozumowania: {"type": "reasoning", "summary": [{"type": "summary_text", "text": "Użytkownik pyta..."}]}
# usage.output_tokens_details.reasoning_tokens: 80
Potwierdzone: domyślne żądanie (bez parametru reasoning) już zawiera element reasoning z summary_text — nie jest potrzebna jawna zgoda.

Wiadomości

Treść myślenia jest zwracana jako natywne bloki treści 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": "Jakie jest stolica Francji? Tylko nazwa miasta."}
    ],
)

# Obserwowane typy bloków response.content: ["thinking", "text"]
Potwierdzone: bloki myślenia są zwracane domyślnie; thinking: {"type": "disabled"} w tym API również zwraca 200, a myślenie nadal zachodzi (zgodne z oficjalną semantyką "wyłączenie konwertuje na niski, żądanie trwa").

3. Wywoływanie narzędzi i równoległe narzędzia

Wywoływanie funkcji potwierdzone jako działające we wszystkich trzech API; w API Odpowiedzi zaobserwowaliśmy również równoległe wywołania narzędzi w jednym obrocie (Z.ai wyraźnie deklaruje supports_parallel_tool_calls: true dla GLM-5.3). Ograniczenia upstream: do 128 funkcji w tools; tool_choice natywnie obsługuje tylko auto.

Zakończenia czatu

completion = client.chat.completions.create(
    model="coding-glm-5.3",
    messages=[{"role": "user", "content": "Jaka jest pogoda w Pekinie dzisiaj?"}],
    tools=[{
        "type": "function",
        "function": {
            "name": "get_weather",
            "description": "Pobierz pogodę dla miasta",
            "parameters": {"type": "object", "properties": {"city": {"type": "string"}}, "required": ["city"]},
        },
    }],
)

# Obserwowane: finish_reason "tool_calls", z wywołaniem get_weather w tool_calls
Potwierdzone: tool_choice: "none" działa — to samo pytanie o pogodę zwraca zwykły tekst bez wywołania narzędzia.

Odpowiedzi

response = client.responses.create(
    model="coding-glm-5.3",
    input="Sprawdź dzisiejszą pogodę w Szanghaju i Pekinie",
    parallel_tool_calls=True,
    tools=[{
        "type": "function",
        "name": "get_weather",
        "description": "Pobierz pogodę dla miasta",
        "parameters": {"type": "object", "properties": {"city": {"type": "string"}}, "required": ["city"]},
    }],
)

# Obserwowane: jeden obrót zwraca 2 równoległe elementy wyjściowe function_call (jeden dla każdego miasta)
Potwierdzone: 2 równoległe wywołania narzędzi w jednym obrocie, zgodne z oficjalną deklaracją supports_parallel_tool_calls: true.

Wiadomości

response = client.messages.create(
    model="coding-glm-5.3",
    max_tokens=4096,
    tools=[{
        "name": "get_weather",
        "description": "Pobierz pogodę dla miasta",
        "input_schema": {"type": "object", "properties": {"city": {"type": "string"}}, "required": ["city"]},
    }],
    messages=[{"role": "user", "content": "Jaka jest pogoda w Pekinie dzisiaj?"}],
)

# Obserwowane: stop_reason "tool_use"; treść zawiera blok tool_use
Potwierdzone: w tym API model nadal produkuje wywołania narzędzi po tool_choice: {"type": "none"} — aby wyłączyć narzędzia, całkowicie usuń parametr tools, lub użyj tool_choice: "none" w API Zakończenia czatu zamiast tego.

4. Ustrukturyzowane wyjście

response_format obsługuje text i json_object; upstream nie wymienia trybu json_schema. Gdy potrzebujesz ścisłej zgodności ze schematem, osadź schemat JSON w podpowiedzi i zweryfikuj po stronie klienta.

Zakończenia czatu

completion = client.chat.completions.create(
    model="coding-glm-5.3",
    messages=[
        {"role": "user", "content": "Jakie jest stolica Francji? Odpowiedz w JSON z kluczem \"answer\"."}
    ],
    response_format={"type": "json_object"},
)

# Obserwowane treści odpowiedzi: {"answer": "Paryż"}
Potwierdzone: wyjście jest poprawnym JSON-em zawierającym żądany klucz.

Odpowiedzi

response = client.responses.create(
    model="coding-glm-5.3",
    input="Jakie jest stolica Francji? Odpowiedz w JSON z kluczem \"answer\".",
    text={"format": {"type": "json_object"}},
)

# Obserwowane wyjście tekstowe: {"answer": "Paryż"}

Wiadomości

# Określ strukturę JSON w podpowiedzi; obserwowane wyjście to poprawny JSON
response = client.messages.create(
    model="coding-glm-5.3",
    max_tokens=4096,
    messages=[
        {"role": "user", "content": "Jakie jest stolica Francji? Odpowiedz w JSON z kluczem \"answer\"."}
    ],
)

# Obserwowane treści odpowiedzi: {"answer": "Paryż"}

5. Buforowanie kontekstu jest automatyczne

Buforowanie implicitne jest domyślnie włączone bez parametrów do przekazania; powtarzające się długie prefiksy raportują trafienia w buforze w użyciu (nazwa pola różni się w zależności od API).

Zakończenia czatu

# użycie drugiego wywołania z identycznym długim prefiksem
"prompt_tokens_details": {"cached_tokens": 960}
Potwierdzone: drugie z dwóch wywołań jeden po drugim trafiło 960 buforowanych tokenów.

Odpowiedzi

# użycie drugiego wywołania z identycznym długim prefiksem
"input_tokens_details": {"cached_tokens": 960}

Wiadomości

# trafienia są raportowane przez usage.cache_read_input_tokens
"cache_read_input_tokens": 0
Potwierdzone: nie odtworzyliśmy trafienia w buforze w tym API w tej rundzie (bufory nagrzewają się w zależności od kanału; przełączenie obciążenia może spowodować nietrafienie). Pole raportujące trafienia podąża za semantyką Anthropic.

6. Próbkowanie i walidacja parametrów

Próbkowanie podąża za konwencjami punktów końcowych rodziny GLM: zakres temperature [0, 1] z domyślną wartością 1.0 (uwaga — węższy niż protokół OpenAI [0, 2]); zakres top_p [0.01, 1] z domyślną wartością 0.95. Z.ai zaleca dostosowanie tylko jednego z dwóch.

Potwierdzone: walidacja parametrów różni się w zależności od API — API Wiadomości odrzuca wartość temperature: 3 poza zakresem z 400, która podaje poprawny zakres [0,1], podczas gdy Zakończenia czatu / Odpowiedzi cicho akceptują tę samą wartość poza zakresem z 200. Podczas migracji między API nie polegaj na bramce, aby wychwycić wartości próbkowania poza zakresem.
# API Wiadomości z temperature=3 -> HTTP 400
"temperature parameter invalid: value must be within [0,1]"

7. Matryca wsparcia API × zdolności

Każda komórka poniżej została potwierdzona rzeczywistymi wywołaniami przez żywe API AIHubMix w dniu 2026-08-14; komórki pokazują pisownię parametrów/pól dla każdego API.

Zdolność Zakończenia czatu Odpowiedzi Wiadomości
Podstawowe generowanie / strumieniowanie
Treść myślenia reasoning_content pole reasoning element wyjściowy (summary_text) ✅ blok treści thinking
Intensywność myślenia reasoning_effort (low/high/max, domyślnie max) ✅ to samo co po lewej ✅ zaakceptowane z 200
Wyłącz myślenie ❗ Nie można: disabled zwraca 200 i myślenie trwa (semantyka konwersji na niski) ➖ brak parametru przełączającego ❗ to samo co czat
Wywoływanie funkcji
Równoległe wywołania narzędzi ✅ 2 function_call elementy w jednym obrocie
Wyłącz wywołania narzędzi tool_choice: "none" działa ✅ 200 (brak zaobserwowanych wywołań) ❗ wywołania nadal produkowane po {"type": "none"}
Ustrukturyzowane wyjście (tryb JSON) response_format: json_object text.format: json_object ✅ zgodnie z konwencją podpowiedzi
json_schema tryb ścisły ❗ nie wymieniony upstream — osadź schemat w podpowiedzi ❗ to samo co po lewej ❗ to samo co po lewej
Automatyczne raportowanie buforów usage.prompt_tokens_details.cached_tokens usage.input_tokens_details.cached_tokens ✅ pole obecne (brak trafienia odtworzone w tej rundzie)
Walidacja maksymalnego wyjścia ✅ 400 z zakresem [1,131072]
Walidacja próbkowania poza zakresem ❗ cicha 200 ❗ cicha 200 ✅ 400 z zakresem [0,1]

FAQ

Jaki jest identyfikator modelu GLM-5.3 na AIHubMix? Czy potrzebuję sufiksu [1m]?
Identyfikator modelu to coding-glm-5.3 — używaj go bez zmian. glm-5.3[1m] to składnia nazwy modelu Z.ai dla klienta Claude Code i nie ma nic wspólnego z wywołaniami AIHubMix; żadne z trzech API nie potrzebuje sufiksu.

Czy mogę wyłączyć myślenie?
Nie. Myślenie GLM-5.3 jest zawsze włączone, a thinking.type obsługuje tylko enabled; w naszych testach wysyłanie disabled zwraca 200, a myślenie nadal zachodzi (konwertowane na poziom low zgodnie z oficjalną semantyką). Aby zaoszczędzić tokeny myślenia, wyślij reasoning_effort: "low".

Jak GLM-5.3 ma się do GLM-5.2?
Ten sam model bazowy — wszystkie zyski pochodzą z post-treningu (oficjalne sformułowanie: "Używa tego samego modelu bazowego co GLM-5.2 — każdy zysk pochodzi z post-treningu"). Dwie istotne zmiany w API: myślenie nie może być już wyłączone, a reasoning_effort zawęża się do trzech poziomów low/high/max (domyślnie max).

Co jeśli potrzebuję ścisłego ustrukturyzowanego wyjścia json_schema?
Upstream nie wymienia trybu response_format: json_schema. W naszych testach tryb JSON json_object produkował poprawny JSON we wszystkich trzech API; dla ścisłych schematów osadź schemat JSON w podpowiedzi i zweryfikuj po stronie klienta.

Czy coding-glm-5.3 to wydanie produkcyjne?
Aktualnie jest to ograniczona wersja próbna (dokumentacja API modelu Z.ai oznacza oficjalne API jako "wkrótce dostępne"); AIHubMix poinformuje, gdy tylko komercyjne API zostanie uruchomione. Zobacz stronę modelu, aby uzyskać aktualne ceny i status.


Aby uzyskać informacje o cenach i statusie w czasie rzeczywistym, zobacz stronę modelu GLM-5.3; aby uzyskać więcej modeli, odwiedź galerię modeli.