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 tocoding-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:
thinking.typenie 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_effortna"low".reasoning_effortzawęż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 zalecamaxdo zadań kodowania.
Potwierdzone: wysyłaniethinking: {"type": "disabled"}przez AIHubMix zwraca 200 i myślenie nadal zachodzi (reasoning_contentjest 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ę nareasoning_effort: "low".
Potwierdzone: wartości poza zakresem dlareasoning_effortrównież zwracają 200 bez błędu (przechodząc do domyślnegomaxzgodnie z oficjalną dokumentacją);loww porównaniu domaxpokazuje 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_tokensraportuje użycie myślenia — 27 zreasoning_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 parametrureasoning) już zawiera elementreasoningzsummary_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 potool_choice: {"type": "none"}— aby wyłączyć narzędzia, całkowicie usuń parametrtools, lub użyjtool_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: 3poza 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.




