Claude Opus 5.5 jest już dostępny w SeedRouter

Text

Dokumentacja API GLM-5.3

View Markdown

Pola żądań GLM-5.3, rozumowanie, narzędzia, strumieniowanie, zużycie i kompletne przykłady Chat, Responses oraz Messages.

GLM-5.3 przyjmuje tekst i zwraca tekst lub wywołania narzędzi. Zawsze rozumuje, obsługuje poziomy low, high i max oraz wyjście do 131 072 tokenów. Dla wariantu Default użyj glm-5.3. Domyślna grupa to glm; glm-5.3:glm pozostaje jawnym wyborem tej samej grupy. Dodatkowe grupy mają własny sufiks modelu.

Bazowy URL: https://api.seedrouter.ai. Uwierzytelniaj przez Authorization: Bearer $SEEDROUTER_API_KEY. Przechowuj dane dostępowe na serwerze. Messages akceptuje też zgodny nagłówek x-api-key.

Dokumentacja opiera się na kontrakcie Chat Z.ai, schemacie Responses producenta i jego przewodniku zgodności Messages. Limity modelu pochodzą z przewodnika GLM-5.3. Zgodność z dokumentacją nie potwierdza każdego zachowania w rzeczywistych wywołaniach. Testy z 29 października 2026 r. zakończyły żądania tekstowe i strumieniowe we wszystkich trzech formatach, wywołania funkcji Chat, wyjście jako obiekt JSON i kontynuację zapisanej odpowiedzi. Nie potwierdzono trafień w cache, jawnych okresów przechowywania ani każdego ustawienia zgodności. Poniższe pola referencyjne Messages odróżniamy od pól GLM udokumentowanych przez producenta.

Specyfikacja OpenAPI · Dokumentacja Markdown · Model i Playground · Przewodnik po cenach

Szybki start

Każdy przykład wysyła jedno żądanie Chat Completions. max_tokens: 2048 to przykładowy budżet, nie wartość domyślna. Rozumowanie i widoczna odpowiedź dzielą ten budżet; sprawdź finish_reason, zanim uznasz odpowiedź za kompletną.

curl https://api.seedrouter.ai/v1/chat/completions \
  -H "Authorization: Bearer $SEEDROUTER_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"model":"glm-5.3","messages":[{"role":"user","content":"Explain an idempotency key with one concrete example."}],"reasoning_effort":"low","max_tokens":2048}'
import os
from openai import OpenAI

client = OpenAI(api_key=os.environ["SEEDROUTER_API_KEY"], base_url="https://api.seedrouter.ai/v1")
response = client.chat.completions.create(
    model="glm-5.3",
    messages=[{"role": "user", "content": "Explain an idempotency key with one concrete example."}],
    max_tokens=2048,
    extra_body={"reasoning_effort": "low"},
)
print(response.choices[0].message.content)
print(response.usage)
import OpenAI from 'openai';
const client = new OpenAI({apiKey: process.env.SEEDROUTER_API_KEY, baseURL: 'https://api.seedrouter.ai/v1'});
const response = await client.chat.completions.create({
  model: 'glm-5.3',
  messages: [{role: 'user', content: 'Explain an idempotency key with one concrete example.'}],
  reasoning_effort: 'low',
  max_tokens: 2048,
});
console.log(response.choices[0].message.content);
console.log(response.usage);
package main

import (
    "bytes"
    "fmt"
    "io"
    "net/http"
    "os"
    "time"
)

func main() {
    body := []byte(`{"model":"glm-5.3","messages":[{"role":"user","content":"Explain an idempotency key with one concrete example."}],"reasoning_effort":"low","max_tokens":2048}`)
    req, err := http.NewRequest("POST", "https://api.seedrouter.ai/v1/chat/completions", bytes.NewReader(body))
    if err != nil { panic(err) }
    req.Header.Set("Authorization", "Bearer " + os.Getenv("SEEDROUTER_API_KEY"))
    req.Header.Set("Content-Type", "application/json")
    client := &http.Client{Timeout: 3 * time.Minute}
    res, err := client.Do(req)
    if err != nil { panic(err) }
    defer res.Body.Close()
    data, err := io.ReadAll(res.Body)
    if err != nil { panic(err) }
    if res.StatusCode != http.StatusOK { panic(fmt.Sprintf("HTTP %d: %s", res.StatusCode, data)) }
    fmt.Println(string(data))
}

Chat Completions

POST /v1/chat/completions przyjmuje 16 pól najwyższego poziomu. Pola nie dopuszczają null, chyba że wskazano to jawnie. Pola opcjonalne można pominąć; nie wysyłaj null zamiast pominięcia.

PoleTypWymaganeWartość domyślna i ograniczenia
modelciąg znakówTakglm-5.3 (Default)
messagestablicaTakCo najmniej jedna wiadomość; musi zawierać wiadomość user lub tool
do_samplelogicznyNietrue; false sprawia, że temperature i top_p nie działają
streamlogicznyNiefalse
thinkingobiektNietype: enabled; clear_thinking: true
reasoning_effortciąg znakówNielow, high, max; domyślnie max
temperatureliczbaNie0–1 włącznie; domyślnie 1
top_pliczbaNie0.01–1 włącznie; domyślnie 0.95
max_tokensliczba całkowitaNie1–131072; brak opublikowanej wartości domyślnej Chat
tool_streamlogicznyNiefalse; true wymaga stream: true
toolstablicaNieFunction, retrieval lub web_search; do 128 elementów
tool_choiceciąg znakówNieTylko auto
stoptablica ciągówNieDo czterech ciągów w oficjalnym schemacie; cztery przyjęto w rzeczywistym żądaniu, ale dopasowania zatrzymania nie sprawdzano
response_formatobiektNieWymagany type: text lub json_object; domyślnie text
request_idciąg znakówNie6–64 znaki; unikalny identyfikator żądania wywołującego
user_idciąg znakówNie6–128 znaków; unikaj danych osobowych

Wiadomości system i user wymagają ciągu content. Wiadomość assistant może zawierać ciąg content, reasoning_content i tool_calls. Wiadomość tool wymaga content i tool_call_id. Przy thinking.clear_thinking: false zachowaj dokładne wcześniejsze rozumowanie, w tym kolejność wywołań asystenta i wyników narzędzi. Rozumowania nie można wyłączyć.

Narzędzie funkcji używa {type:"function", function:{name, description, parameters}}. Nazwa zawiera 1–64 litery ASCII, cyfry, podkreślenia lub łączniki. Schemat maszynowy wymaga description i parameters; opis wspomina o pominięciu dla funkcji bez parametrów. Do rozwiązania tej sprzeczności używaj pełnej postaci. parameters to JSON Schema twojej funkcji; nie jest interpretowane jako treść wiadomości.

Narzędzie wyszukiwania w bazie używa {type:"retrieval", retrieval:{knowledge_id, prompt_template?}}. ID bazy wiedzy należy do konta obsługującego żądanie; deklaracja narzędzia nie tworzy bazy wiedzy.

Narzędzie wyszukiwania w sieci używa {type:"web_search", web_search:{search_engine:"search_pro_jina"}}. Opcjonalne pola obejmują enable, search_query, count (1–50), search_domain_filter, search_recency_filter (oneDay, oneWeek, oneMonth, oneYear, noLimit), content_size (medium, high), result_sequence (before, after), search_result, require_search i search_prompt. Dokładne typy znajdziesz w OpenAPI. Dostępność wyszukiwania i retrieval dla konkretnego konta wymaga rzeczywistej weryfikacji.

Tryb obiektu JSON tworzy JSON, ale nie wymusza zgodności z przekazaną JSON Schema. Umieść oczekiwane pola w prompcie i sprawdź wynik w aplikacji.

Responses

POST /v1/responses przyjmuje 15 pól tworzenia najwyższego poziomu. Jest zgodny ze schematem Responses producenta dostosowanym do GLM-5.3; dokładne zachowanie w poszczególnych serwisach nadal wymaga weryfikacji.

curl https://api.seedrouter.ai/v1/responses \
  -H "Authorization: Bearer $SEEDROUTER_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"model":"glm-5.3","input":[{"type":"message","role":"user","content":"Give a concise example of a safe retry."}],"reasoning":{"effort":"low"},"max_output_tokens":2048,"store":false}'
PoleTypWymaganeWartość domyślna i ograniczenia
modelciąg znakówTakglm-5.3
inputciąg lub tablicaTakNatywne elementy wejścia opisane poniżej
instructionsciąg znakówNieInstrukcje systemowe
streamlogicznyNiefalse
temperatureliczbaNie0–1, najwyżej dwa miejsca po przecinku; domyślnie 1
top_pliczbaNie0.01–1, najwyżej dwa miejsca po przecinku; domyślnie 0.95
max_output_tokensliczba całkowitaNie1–131072; domyślnie 65536, łącznie z rozumowaniem
stoptablica ciągówNieBrak zadeklarowanego limitu liczby w tym protokole
toolstablicaNieFunction, namespace, custom lub web_search
tool_choiceciąg znakówNienone lub auto
reasoningobiektNieeffort: low, high, max; domyślnie max
textobiektNieformat.type: text lub json_object
prompt_cache_keyciąg znakówNieKlucz wyboru cache; brak udokumentowanego limitu długości
previous_response_idciąg znakówNieOdwołanie do wcześniej zapisanej odpowiedzi
storelogicznyNiefalse; czy zapisać tę odpowiedź

Elementy wiadomości na wejściu wymagają type: "message", roli (user, system, assistant, developer) i treści. Treść może być ciągiem, jednym blokiem tekstu lub tablicą bloków tekstu. Użyj input_text lub output_text asystenta z ciągiem text. Ogólne schematy obrazów/plików nie nadają zdolności wzrokowych temu modelowi tekstowemu.

Wejściowe elementy wywołania funkcji wymagają type: "function_call", name, call_id i ciągu JSON arguments; namespace jest opcjonalne. Wyniki wymagają type: "function_call_output", call_id i ciągu output. Elementy rozumowania używają type: "reasoning" i pojedynczego obiektu content: {type:"reasoning_text", text:"..."}. Zachowaj go bez konwersji na tablicę.

Narzędzia funkcji wymagają type: "function" i name, z opcjonalnymi description i parameters. Narzędzia przestrzeni nazw wymagają type: "namespace" i name oraz mogą zawierać funkcje tools. Narzędzia niestandardowe wymagają type: "custom" i name. Narzędzia wyszukiwania w sieci wymagają type: "web_search". Nie kopiuj tu wymaganych pól funkcji z Chat.

Poprzednia wskazana odpowiedź musi być zapisana. Zapis bieżącej odpowiedzi jest osobnym wyborem; previous_response_id nie wymusza bieżącego store: true. Okres przechowywania producenta wynosi siedem dni. Rzeczywisty test zapisał odpowiedź i kontynuował ją po ID przy bieżącym store: false; nie potwierdza to wszystkich operacji na zapisanych odpowiedziach.

Operacje na zapisanych odpowiedziach

Po powodzeniu store: true zachowaj zwrócone ID odpowiedzi bez zmian. Te uwierzytelnione operacje używają tego samego konta, które ją utworzyło:

  • GET /v1/responses/{response_id} pobiera zapisaną odpowiedź.
  • GET /v1/responses/{response_id}/input_items wyświetla elementy wejścia. Opcjonalne pola zapytania: order (asc lub desc, domyślnie desc), limit (liczba całkowita 1–100, domyślnie 20) i after (last_id poprzedniej strony).
  • DELETE /v1/responses/{response_id} usuwa zapisaną odpowiedź.

Następne żądanie tworzenia może użyć zapisanego ID jako previous_response_id. Pierwotny użytkownik musi nadal mieć dostęp do modelu. Przechowywanie trwa najwyżej siedem dni; wygasłych lub usuniętych odpowiedzi nie można kontynuować. Pobieranie, usuwanie i kontynuacja zachowują powiązanie z pierwotnym kontem. Punkt anulowania nie jest udokumentowany. Operacje są objęte lokalnymi testami kontraktu. Test rzeczywisty z 29 października potwierdził zapis i kontynuację; pobranie i lista elementów wejścia zwróciły 404, a usuwania nie testowano. Nie polegaj na pobieraniu, listowaniu ani usuwaniu przed potwierdzeniem dostępności.

Zgodność Messages

POST /v1/messages używa formatu zgodnego z Anthropic. Dodaj anthropic-version: 2023-06-01. Producent bezpośrednio pokazuje model, messages, max_tokens i stream. Nie publikuje pełnego schematu GLM Messages i ostrzega o różnicach względem Claude. Pozostałe ustawienia to pola dokumentacji zgodności, nie indywidualnie zweryfikowane możliwości GLM.

curl https://api.seedrouter.ai/v1/messages \
  -H "Authorization: Bearer $SEEDROUTER_API_KEY" \
  -H 'Content-Type: application/json' \
  -H 'anthropic-version: 2023-06-01' \
  -d '{"model":"glm-5.3","messages":[{"role":"user","content":"Explain a safe retry in two sentences."}],"max_tokens":2048}'
PolePostać i walidacjaDowód
modelWymagany ciąg glm-5.3Przykład GLM
messagesWymagana niepusta tablica user/assistant; ciąg lub natywne bloki tekstu/narzędziPrzykład tekstowy GLM; postacie bloków z dokumentacji zgodności
max_tokensWymagana liczba całkowita 1–131072Przykład GLM i limit wyjścia modelu
streamLogiczny; domyślnie falsePrzykład GLM
systemCiąg lub tablica bloków tekstuDokumentacja zgodności
temperatureLiczba 0–1Dokumentacja zgodności; mapowanie niezweryfikowane
top_pLiczba 0.01–1Dokumentacja zgodności; mapowanie niezweryfikowane
top_kNieujemna liczba całkowitaDokumentacja zgodności; mapowanie niezweryfikowane
stop_sequencesTablica ciągówDokumentacja zgodności
toolsNarzędzia klienta: name, input_schema, opcjonalny descriptionDokumentacja zgodności
tool_choiceObiekt z type auto, none, any lub tool; nazwane narzędzie wymaga nameDokumentacja zgodności
thinkingenabled z budget_tokens lub adaptive; nie można wyłączyć rozumowaniaDokumentacja zgodności oraz reguła stałego rozumowania GLM
output_configObiekt z effort low, high lub maxZgodna nazwa pola; mapowanie niezweryfikowane
metadataObiekt z opcjonalnym user_idDokumentacja zgodności
cache_controlZnacznik ephemeral, opcjonalny ttl 5m lub 1hTylko dokumentacja protokołu; jawne zachowanie TTL GLM niezweryfikowane

Zgodny budżet enabled thinking wynosi co najmniej 1024 i mniej niż max_tokens. Bloki tekstowe wymagają text; historia rozumowania wymaga thinking i signature; ukryte rozumowanie wymaga data. Bloki użycia narzędzi wymagają id, name i input; bloki wyniku wymagają tool_use_id. Bloki obrazów, dźwięku i wideo nie są przyjmowane. Jawne znaczniki cache nie potwierdzają trafienia, okresu przechowywania ani osobnej stawki. Udokumentowany cache kontekstu modelu działa automatycznie.

Wyjście, strumieniowanie i zużycie

Chat zwraca id, created, model, choices i usage, opcjonalnie request_id i web_search. Odczytaj choices[].message.content, reasoning_content i tool_calls. Odpowiedź wywołująca narzędzie może nie mieć tekstu. SSE wysyła fragmenty rozumowania, tekstu i argumentów narzędzi, a potem [DONE]. Łącz fragmenty argumentów według indeksu wywołania. Pole stream_options nie należy do oficjalnego żądania GLM Chat.

Responses zwraca natywną unię output: wiadomości, rozumowanie i wywołania narzędzi. SSE obejmuje response.created, response.in_progress, zdarzenia elementów wyjścia i części treści, fragmenty tekstu/rozumowania/argumentów funkcji, postęp wyszukiwania i końcowe response.completed, response.incomplete lub response.failed. Nie wymaga znacznika [DONE]. Zachowaj indeksy i numery sekwencji.

Messages zwraca natywny format wiadomości z blokami treści, stop_reason i usage. Zdarzenia obejmują message_start, content_block_start/delta/stop, message_delta i message_stop. Zachowaj podpisy rozumowania i ID narzędzi jako nieinterpretowaną historię.

FormatCałe wejścieWejście z cacheWyjście
Chatprompt_tokensprompt_tokens_details.cached_tokenscompletion_tokens
Responsesinput_tokensinput_tokens_details.cached_tokensoutput_tokens
Messagesinput_tokens plus cache_read_input_tokens i ewentualne cache_creation_input_tokenscache_read_input_tokensoutput_tokens

Rozumowanie jest częścią wyjścia, nie dodatkową opłatą. Wejście z cache Chat/Responses jest częścią całego wejścia. Odejmij osobno wykazane części z cache przed zastosowaniem zwykłej stawki wejścia. Publiczne odpowiedzi pokazują zużycie tokenów, nie kwoty. Bieżące ceny pochodzą z aktualnych ustawień rozliczeń; nieudane żądania nie są naliczane.

Walidacja i błędy

Nieprawidłowe typy, wyłączone rozumowanie, nieobsługiwany poziom, nadmierny budżet wyjścia i media na wejściu nie przechodzą walidacji. tool_stream Chat wymaga stream. Nieobsługiwane pola najwyższego poziomu są pomijane, a nie przekazywane dalej. Wymagane są dane dostępowe; niewystarczające saldo uniemożliwia płatne żądanie. Błędy używają publicznego formatu błędu (Messages ma własną postać). Nigdy nie uznawaj przerwanego strumienia za kompletną odpowiedź ani nie ponawiaj automatycznie żądania o niepewnym wyniku.

Playground udostępnia te same dopuszczone pola wybranego formatu. Puste opcjonalne wartości są pomijane; jawne false i zero są zachowane. Zmiana formatu rozpoczyna nową rozmowę. Szacunek zużycia wymaga zarówno zwróconych danych, jak i bieżących stawek.