modely

Z.ai: GLM 5.3

Markdown · JSON

Z.ai: GLM 5.3

Z.ai GLM 5.3 je textový model na uvažovanie pre zložité softvérové inžinierstvo, prácu v termináli a agentov s dlhým horizontom úloh. Podporuje výrobcom zdokumentovaný kontext s rozsahom 1M tokenov, výstup až 128K tokenov, volanie funkcií a úsilie uvažovania low/high/max, pričom uvažovanie je zapnuté po celý čas.

O modeli

Tento opis pokrýva možnosti modelu. Dostupné vstupy, výstupy a voľby v Ailoot sú uvedené nižšie pre vybranú metódu.

Z.ai GLM 5.3 je rozsiahly textový model na uvažovanie navrhnutý pre zložité softvérové inžinierstvo a prácu agentov s dlhým horizontom úloh. Výrobca uvádza, že používa rovnaký základný model ako GLM 5.2 a nové zlepšenia pochádzajú z dotrénovania. Vydanie sa zameriava na lepšie programovanie, operácie v termináli a širšie úlohy s viacerými závislými krokmi. Prijíma text a vytvára text vrátane kódu, vysvetlení, plánov a požiadaviek na volanie nástrojov v aplikácii s pripojenými nástrojmi.

Zdokumentovaný režim uvažovania je vždy zapnutý. GLM 5.3 ponúka tri úrovne úsilia: low, high a max, pričom predvolená je max. Výrobca odporúča max na zložitú programátorskú prácu; low poskytuje ľahšiu možnosť uvažovania pre jednoduchšie kroky. Zvolenú úroveň používajte spolu s jasným konečným výstupom a kritériami dokončenia. Napríklad: „Preskúmaj tieto súbory a neúspešné výsledky, vysleduj príčinu naprieč dotknutými modulmi, navrhni opravu, ktorá zachová verejné rozhranie, a vysvetli, ktoré kontroly dokazujú odstránenie regresie.“

Výrobca stanovuje kontextové okno s rozsahom 1M tokenov a maximálnu dĺžku výstupu 128K tokenov. Dlhý materiál usporiadajte okolo vzťahu, ktorý má model preskúmať. Zachovajte názvy súborov, relevantné definície, označenia zdrojov a poradie pozorovaní a v príslušnom pracovnom kontexte ponechajte priestor na uvažovanie a konečnú odpoveď. Veľké okno je užitočné pri závislostiach medzi modulmi alebo dlhom slede pozorovaní agenta; z neusmerneného archívu nesúvisiaceho materiálu však nerobí jasne definovanú úlohu.

Pri práci s repozitárom poskytnite očakávané správanie, relevantný zdrojový text, verzie závislostí a skutočný chybový výstup. Požiadajte model, aby pred návrhom opravy určil dotknuté správanie. Pri refaktorizácii pomenujte rozhranie a invarianty, ktoré musia zostať zachované. Užitočná odpoveď obsahuje upravený kód, dôvod, prečo zmena rieši pozorovaný problém, a prípady potrebné na kontrolu výsledku. Skutočné výsledky vráťte do pracovného postupu s pripojenými nástrojmi, aby ďalší krok vychádzal zo zmeneného stavu a nie zo skoršieho návrhu.

Pri práci na výkone dodajte záťaž, východiskový stav a merania, napríklad časy, profily alebo záznamy alokácií. Z.ai opisuje tréningové úlohy zahŕňajúce diagnostiku úzkych miest, optimalizáciu, experimenty a výsledky zachovávajúce správnosť. Praktická požiadavka je: „Použi tento profil na určenie najvýznamnejšieho úzkeho miesta, navrhni jednu merateľnú zmenu a vysvetli, aký výsledok by odôvodnil jej ponechanie.“ Hypotézu o výkone odlíšte od zaznamenaného zlepšenia. Pri posudzovaní výsledku zachovajte rovnakú záťaž a relevantné podmienky.

Vydanie rozvíja aj schopnosť analyzovať zraniteľnosti. Pri obrannej kontrole zdrojového kódu poskytnite relevantný kód, zamýšľané hranice dôvery a podmienky jeho behu. Žiadajte zistenie, ktoré prepája podozrivý problém s dotknutým vstupom, správaním a cielenou nápravou. Potenciálnu slabinu oddeľte od reprodukovanej chyby a uchovajte pozorovanie použité na jej overenie. Správa je užitočnejšia, keď uprednostňuje konkrétne dôkazy a navrhované opravy pred považovaním každého podozrivého vzoru za potvrdenú zraniteľnosť.

Volanie funkcií umožňuje okolitej aplikácii sprístupniť modelu externé operácie. Definujte účel, argumenty a očakávaný výsledok každého nástroja a potom vráťte skutočné pozorovanie nástroja pre ďalší krok. Model môže nad týmto výsledkom uvažovať a rozhodnúť, ako mení úlohu. Navrhované akcie, vykonané operácie a nevyriešené kontroly udržujte odlíšiteľné. Výrobca dokumentuje aj streamované odpovede, ktoré vracajú fragmenty uvažovania a odpovede oddelene; dokončenú odpoveď zostavte predtým, než ju budete považovať za konečnú správu alebo vysvetlenie kódu.

Lokálna karta modelu uvádza konkrétny detail nastavenia histórie: jeho šablóna chatu predvolene uchováva uvažovanie, zatiaľ čo výrobca odporúča pri bežných chatových scenároch staré uvažovanie výslovne vymazať. Použite štruktúru konverzácie vhodnú pre daný prípad použitia a zachovajte skutočné dokončené odpovede a výsledky nástrojov potrebné na pokračovanie. Nastavenia ovládania uvažovania z GLM 5.2 alebo samostatných edícií GLM 5.3 Flash nepovažujte za zameniteľné s ovládacími prvkami low/high/max tohto modelu.

Pri štruktúrovaných výsledkoch určte očakávané polia, typy a pravidlá pre zdroje. Užitočným výstupom môže byť tabuľka chýb, plán zmien alebo objekt JSON sumarizujúci pozorovania. Pred použitím v aplikácii overte štruktúru aj hodnoty. Konečný výsledok by mal určiť odpoveď alebo upravený výstup, dôkazy, ktoré ho podporujú, a zostávajúce predpoklady. Väčšie úsilie uvažovania nedokazuje, že nástroj prebehol, že navrhnutá oprava prešla kontrolami ani že faktické tvrdenie má oporu mimo dodaného materiálu.

Praktická úloha

Praktická úloha

Technický príklad v angličtine

Target a measured bottleneck

Profile P1 for one import: parsing 0.4 s, per-row database lookups 8.1 s, writing 0.8 s. The import handles 10,000 rows, including repeated customer IDs. Propose one correctness-preserving optimization, describe what lookup behavior must remain identical and define a same-workload check before claiming an improvement.

Očakávaný výsledok

A bottleneck hypothesis, one proposed change and a correctness plus timing comparison plan.

Overenie výsledku

The proposal must use P1 without inventing an observed speedup or losing missing-customer behavior.
Ailoot · Anthropic Messages POST /v1/messages glm-5.3

glm-5.3

Z.ai /glm-5.3
ID modelu
  • glm-5.3
  • glm
  • glm-5
  • glm-5.1
  • glm-5.2
  • glm-latest

Úvod

Z.ai GLM 5.3 je textový model na uvažovanie pre zložité softvérové inžinierstvo, prácu v termináli a agentov s dlhým horizontom úloh. Podporuje výrobcom zdokumentovaný kontext s rozsahom 1M tokenov, výstup až 128K tokenov, volanie funkcií a úsilie uvažovania low/high/max, pričom uvažovanie je zapnuté po celý čas.

Povolené vstupy
Text
Výsledky
Text

Dostupné v Ailoot · vstupy a metódy

Ailoot · Anthropic Messages POST /v1/messages
Vstup
text
Výstup
text
Kontext
1 000 000 tokens
Maximálny výstup
131 072 tokens
Výstupný formát
json alebo SSE
PoleTypPožiadavkaHodnoty a limityPredvolené
PolemodelTypstringPožiadavkaPovinnéHodnoty a limity
glm-5.3
Predvolené—
PolemessagesTypmessage[]PožiadavkaPovinnéHodnoty a limity
Minimálny počet položiek: 1
Predvolené—
Polemessages[].roleTypstringPožiadavkaPovinnéHodnoty a limity
user, assistant
Predvolené—
Polemessages[].contentTypstring|content_block[]PožiadavkaPovinnéHodnoty a limityPredvolené—
PolesystemTypstring|content_block[]PožiadavkaVoliteľnéHodnoty a limityPredvolené—
Polemax_tokensTypintegerPožiadavkaPovinnéHodnoty a limity
Minimum: 1
Limit sa vzťahuje na: presná horná hranica zvoleného modelu/karty
Predvolené—
PolestreamTypbooleanPožiadavkaVoliteľnéHodnoty a limityPredvolenéfalse
PoletemperatureTypnumberPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poletop_pTypnumberPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Polestop_sequencesTypstring[]PožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
PoletoolsTyptool[]PožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poletools[].nameTypstringPožiadavkaVoliteľnéHodnoty a limity
Platí, keď: poskytnutý nástroj
Predvolené—
Poletools[].descriptionTypstringPožiadavkaVoliteľnéHodnoty a limityPredvolené—
Poletools[].input_schemaTypJSON_schemaPožiadavkaVoliteľnéHodnoty a limityPredvolené—
Poletool_choiceTypobjectPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Polethinking.typeTypstringPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Polethinking.budget_tokensTypintegerPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poleoutput_config.effortTypstringPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
PolemetadataTypobjectPožiadavkaVoliteľnéHodnoty a limityPredvolené—
Polecache_controlTypobjectPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Kombinácie vstupných podkladov

Text · Text UTF8

messages[].content alebo blok type=text

Parametre a životný cyklus metódy
ParameterŠpecifikácia
Parametermaterial_typesŠpecifikáciatext
ParameterrequiredŠpecifikáciamodel, messages, max_tokens
Parameteroptional_controlsŠpecifikácianull
Parametercontent_typeŠpecifikáciaapplication/json
Parametertext_file_materialŠpecifikáciaskutočný obsah UTF-8 vložený ako text; ID súborov a URLs potrebujú samostatnú presne určenú podporu

Životný cyklus: exact retained published method

Štruktúry metód a ID sú presné; možnosti dodávateľa sa posudzujú oddelene od prijatia požiadavky.

Cenník

Sadzby metód Ailoot

Ailoot Anthropic MessagesPOST /v1/messages
Vstup
0,0014 USD / 1K
Výstup
0,0044 USD / 1K
Čítanie cache
≈0,00026 USD / 1K

Ailoot pred požiadavkou rezervuje odhadovanú sumu. Po získaní výsledku vyúčtuje konečný poplatok podľa nameraného využitia. Pri streamovaní sa vyúčtovanie riadi konečným záznamom využitia. Ako funguje rezervácia a vyúčtovanie →

Podrobnosti referenčnej tarify

Referenčné sadzobníky modelu nemenia výber metódy, cenové odhady ani poplatky. Aktívne poplatky používajú sadzby vybranej metódy Ailoot.

Referenčné sadzobníky modelu

Ceny podľa konfigurácie

Každý poplatok priraďte k zobrazeným podmienkam. Pre každú skupinu alternatívnych konfigurácií použite jednu sadzbu.

KonfiguráciaSadzobníkPočet tokenov kontextu väčší nežTokeny kontextu, najviac (vrátane hranice)Poplatok
KonfiguráciaOpenAI Chat · Základné sadzby za tokenySadzobníkZákladná sadzbaPočet tokenov kontextu väčší než—Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranicePoplatok
Vstup · Vstupné tokeny $0.0028 / 1K tokenov
Výstup · Výstupné tokeny $0.0088 / 1K tokenov
Vstup · Čítanie cache $0.00052 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov
KonfiguráciaOpenAI Chat · Pásmo 1 podľa dĺžky požiadavkySadzobník—Počet tokenov kontextu väčší než0Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranicePoplatok
Vstup · Vstupné tokeny $0.0028 / 1K tokenov
Výstup · Výstupné tokeny $0.0088 / 1K tokenov
Vstup · Čítanie cache $0.00052 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov
KonfiguráciaAnthropic Messages · Základné sadzby za tokenySadzobníkZákladná sadzbaPočet tokenov kontextu väčší než—Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranicePoplatok
Vstup · Vstupné tokeny $0.0028 / 1K tokenov
Výstup · Výstupné tokeny $0.0088 / 1K tokenov
Vstup · Čítanie cache $0.00052 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov
KonfiguráciaAnthropic Messages · Pásmo 1 podľa dĺžky požiadavkySadzobník—Počet tokenov kontextu väčší než0Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranicePoplatok
Vstup · Vstupné tokeny $0.0028 / 1K tokenov
Výstup · Výstupné tokeny $0.0088 / 1K tokenov
Vstup · Čítanie cache $0.00052 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov

Príklady požiadaviek

Ailoot · Anthropic Messages

Príklad textuPython SDKNode.js SDKStreamovanie v jazyku Python
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 source-material file}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "glm-5.3", "max_tokens": 1024, "messages": []}')
f=Path(os.environ["AILOOT_TEXT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 source material")
text=f.read_text(encoding="utf-8")
if not text.strip():raise SystemExit("Source material must contain text")
p["messages"]=[{"role":"user","content":"Summarize this material and quote supporting source passages.\n\n"+text}]
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/messages \
  -H "x-api-key: $AILOOT_API_KEY" -H 'anthropic-version: 2023-06-01' -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
print(json.dumps(json.loads(Path("result.json").read_text()),ensure_ascii=False,indent=2))
PY_RESULT
import anthropic
import os

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client = anthropic.Anthropic(base_url="https://api.ailoot.ai", api_key=os.environ["AILOOT_API_KEY"], max_retries=0)
msg = client.messages.create(
    model="glm-5.3",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Explain the difference between an observation and a hypothesis in three sentences."}],
)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(msg.to_dict(mode="json"))
import Anthropic from "@anthropic-ai/sdk";

if (!process.env.AILOOT_API_KEY?.trim()) throw new Error("Set AILOOT_API_KEY before making a request");
const client = new Anthropic({ baseURL: "https://api.ailoot.ai", apiKey: process.env.AILOOT_API_KEY, maxRetries: 0 });
const msg = await client.messages.create({
  model: "glm-5.3",
  max_tokens: 1024,
  messages: [{ role: "user", content: "Explain the difference between an observation and a hypothesis in three sentences." }],
});
import { writeFileSync } from "node:fs";

function saveResult(data, stem = "result") {
  writeFileSync(stem + ".json", JSON.stringify(data, null, 2));
  console.log(JSON.stringify(data, null, 2));
  const saveBlob = (encoded, suffix, label) => {
    const raw = Buffer.from(encoded, "base64");
    const ext = raw.subarray(0,8).equals(Buffer.from([137,80,78,71,13,10,26,10])) ? "png" : raw[0]===255 && raw[1]===216 ? "jpg" : raw.subarray(0,4).toString()==="RIFF" && raw.subarray(8,12).toString()==="WEBP" ? "webp" : suffix;
    const file = `${stem}-${label}.${ext}`;
    writeFileSync(file, raw); console.log("Saved", file);
  };
  for (const [i, block] of (data.content || []).entries()) console.log("Content", i, JSON.stringify(block));
  for (const choice of data.choices || []) console.log("Choice", choice.index, JSON.stringify(choice.message || choice.delta || {}));
  for (const [i, item] of (data.output || []).entries()) {
    console.log("Output", i, JSON.stringify(item));
    if (item.type === "image_generation_call" && item.result) saveBlob(item.result, item.output_format || "bin", `output-${i}`);
  }
  for (const [ci, candidate] of (data.candidates || []).entries()) {
    for (const [pi, part] of (candidate.content?.parts || []).entries()) {
      console.log("Candidate/part", ci, pi, JSON.stringify(part));
      const blob = part.inlineData || part.inline_data;
      if (blob?.data) {
        const mime = blob.mimeType || blob.mime_type;
        const suffix = ({"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"})[mime] || "bin";
        saveBlob(blob.data, suffix, `candidate-${ci}-part-${pi}`);
      }
    }
  }
}

saveResult(msg);
import anthropic,os
from pathlib import Path

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=anthropic.Anthropic(base_url="https://api.ailoot.ai",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

with client.messages.stream(model='glm-5.3',max_tokens=1024,messages=[{"role":"user","content":"Explain observations and hypotheses in three sentences."}]) as stream:
    with Path("stream-events.jsonl").open("w",encoding="utf-8") as log:
        for event in stream:
            payload=event.to_dict(mode="json")
            log.write(json.dumps(payload,ensure_ascii=False)+"\n"); log.flush()
            print(json.dumps(payload,ensure_ascii=False))
    final=stream.get_final_message()
    save_result(final.to_dict(mode="json"),"stream-result")

Prijať a uložiť výsledky

Ailoot · Anthropic Messages

json alebo SSE

Uchovať všetky dokončené výsledky

Uložte každú úplnú vrátenú odpoveď, súbor a časť obsahu.

Zachovajte všetky bloky obsahu, podpisy uvažovania a skutočné ID volaní nástrojov. Zostavte všetky čiastkové zmeny blokov SSE; prvý textový blok nie je celý výstup.

Ak treba overiť pôvodnú odpoveď

Zachovajte ID požiadaviek/odpovedí aj hlavičky. Všeobecná URL na načítanie textovej úlohy nie je poskytnutá.

Polia odpovede
PoleTyp
PoleidTypstring
PolemodelTypstring
Polecontent[]Typtext|thinking|tool_use|other content block
Polestop_reasonTypstring|null
PoleusageTypobject
Chyby a ďalšie kroky
OdpoveďPodmienkaĎalší krok
Odpoveď400 · invalid_request_errorPodmienkaNeplatné povinné polia, reprezentácia materiálu alebo hodnota parametraĎalší krokPred novou požiadavkou na vytvorenie opravte uvedené polia.

Aliasy

Aliasy modelov

Ailoot glm-5.3, glm, glm-5, glm-5.1, glm-5.2, glm-latest
Ailoot Ultra glm-5.3, z-ai/glm-5.3, ~z-ai/glm-latest

Aliasy ciest metód

/chat/completions

Súvisiace ID na volanie

z-ai/glm-5.3, glm, glm-5, glm-5.1, glm-5.2, glm-latest, ~z-ai/glm-latest, glm-5.3, glm-5.3

Ailoot · OpenAI Responses POST /v1/responses glm-5.3

glm-5.3

Z.ai /glm-5.3
ID modelu
  • glm-5.3
  • glm
  • glm-5
  • glm-5.1
  • glm-5.2
  • glm-latest

Úvod

Z.ai GLM 5.3 je textový model na uvažovanie pre zložité softvérové inžinierstvo, prácu v termináli a agentov s dlhým horizontom úloh. Podporuje výrobcom zdokumentovaný kontext s rozsahom 1M tokenov, výstup až 128K tokenov, volanie funkcií a úsilie uvažovania low/high/max, pričom uvažovanie je zapnuté po celý čas.

Povolené vstupy
Text
Výsledky
Text

Dostupné v Ailoot · vstupy a metódy

Ailoot · OpenAI Responses POST /v1/responses
Vstup
text
Výstup
text
Kontext
1 000 000 tokens
Maximálny výstup
131 072 tokens
Výstupný formát
json alebo SSE
PoleTypPožiadavkaHodnoty a limityPredvolené
PolemodelTypstringPožiadavkaPovinnéHodnoty a limity
glm-5.3
Predvolené—
PoleinputTypstring|input_item[]PožiadavkaPovinnéHodnoty a limityPredvolené—
PoleinstructionsTypstringPožiadavkaVoliteľnéHodnoty a limityPredvolené—
Poleinput[].typeTypstringPožiadavkaVoliteľnéHodnoty a limity
message, reasoning, function_call, function_call_output
Predvolené—
Poleinput[].contentTypstring|content_part[]PožiadavkaVoliteľnéHodnoty a limityPredvolené—
Poleinput[].call_idTypstringPožiadavkaVoliteľnéHodnoty a limity
Platí, keď: function_call_output; zachovajte skutočne vrátený call_id
Predvolené—
Poleinput[].outputTypstring|content_part[]PožiadavkaVoliteľnéHodnoty a limity
Platí, keď: function_call_output
Predvolené—
Polemax_output_tokensTypintegerPožiadavkaVoliteľnéHodnoty a limity
Minimum: 1
Závisí od modelu
Predvolené—
PolestreamTypbooleanPožiadavkaVoliteľnéHodnoty a limityPredvolenéfalse
PoletemperatureTypnumberPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poletop_pTypnumberPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
PoletoolsTyptool[]PožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poletool_choiceTypstring|objectPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poleparallel_tool_callsTypbooleanPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Polereasoning.effortTypstringPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Polereasoning.summaryTypstringPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poletext.formatTypobjectPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poletext.verbosityTypstringPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
PoleincludeTypstring[]PožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
PolestoreTypbooleanPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poleprevious_response_idTypstringPožiadavkaVoliteľnéHodnoty a limity
Požiadavka na ID: Len skutočné ID odpovede z podporovaného pokračovania
Závisí od modelu
Predvolené—
Poleservice_tierTypstringPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poleprompt_cache_keyTypstringPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poleprompt_cache_optionsTypobjectPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Kombinácie vstupných podkladov

Text · Text UTF8

vstupný text alebo časť input_text

Parametre a životný cyklus metódy
ParameterŠpecifikácia
Parametermaterial_typesŠpecifikáciatext
ParameterrequiredŠpecifikáciamodel, input
Parameteroptional_controlsŠpecifikácianull
Parametercontent_typeŠpecifikáciaapplication/json
Parametertext_file_materialŠpecifikáciaskutočný obsah UTF-8 vložený ako text; ID súborov a URLs potrebujú samostatnú presne určenú podporu

Životný cyklus: exact retained published method

Štruktúry metód a ID sú presné; možnosti dodávateľa sa posudzujú oddelene od prijatia požiadavky.

Cenník

Sadzby metód Ailoot

Ailoot OpenAI ResponsesPOST /v1/responses
Vstup
0,0014 USD / 1K
Výstup
0,0044 USD / 1K
Čítanie cache
≈0,00026 USD / 1K

Ailoot pred požiadavkou rezervuje odhadovanú sumu. Po získaní výsledku vyúčtuje konečný poplatok podľa nameraného využitia. Pri streamovaní sa vyúčtovanie riadi konečným záznamom využitia. Ako funguje rezervácia a vyúčtovanie →

Podrobnosti referenčnej tarify

Referenčné sadzobníky modelu nemenia výber metódy, cenové odhady ani poplatky. Aktívne poplatky používajú sadzby vybranej metódy Ailoot.

Referenčné sadzobníky modelu

Ceny podľa konfigurácie

Každý poplatok priraďte k zobrazeným podmienkam. Pre každú skupinu alternatívnych konfigurácií použite jednu sadzbu.

KonfiguráciaSadzobníkPočet tokenov kontextu väčší nežTokeny kontextu, najviac (vrátane hranice)Poplatok
KonfiguráciaOpenAI Chat · Základné sadzby za tokenySadzobníkZákladná sadzbaPočet tokenov kontextu väčší než—Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranicePoplatok
Vstup · Vstupné tokeny $0.0028 / 1K tokenov
Výstup · Výstupné tokeny $0.0088 / 1K tokenov
Vstup · Čítanie cache $0.00052 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov
KonfiguráciaOpenAI Chat · Pásmo 1 podľa dĺžky požiadavkySadzobník—Počet tokenov kontextu väčší než0Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranicePoplatok
Vstup · Vstupné tokeny $0.0028 / 1K tokenov
Výstup · Výstupné tokeny $0.0088 / 1K tokenov
Vstup · Čítanie cache $0.00052 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov
KonfiguráciaAnthropic Messages · Základné sadzby za tokenySadzobníkZákladná sadzbaPočet tokenov kontextu väčší než—Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranicePoplatok
Vstup · Vstupné tokeny $0.0028 / 1K tokenov
Výstup · Výstupné tokeny $0.0088 / 1K tokenov
Vstup · Čítanie cache $0.00052 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov
KonfiguráciaAnthropic Messages · Pásmo 1 podľa dĺžky požiadavkySadzobník—Počet tokenov kontextu väčší než0Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranicePoplatok
Vstup · Vstupné tokeny $0.0028 / 1K tokenov
Výstup · Výstupné tokeny $0.0088 / 1K tokenov
Vstup · Čítanie cache $0.00052 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov

Príklady požiadaviek

Ailoot · OpenAI Responses

Príklad textuPython SDKNode.js SDKStreamovanie v jazyku Python
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 source-material file}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "glm-5.3", "input": ""}')
f=Path(os.environ["AILOOT_TEXT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 source material")
text=f.read_text(encoding="utf-8")
if not text.strip():raise SystemExit("Source material must contain text")
p["input"]="Summarize this material and quote supporting source passages.\n\n"+text
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/responses \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(json.loads(Path("result.json").read_text(encoding="utf-8")))
PY_RESULT
from openai import OpenAI
import os

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client = OpenAI(base_url="https://api.ailoot.ai/v1", api_key=os.environ["AILOOT_API_KEY"], max_retries=0)
resp = client.responses.create(model="glm-5.3", input="Explain the difference between an observation and a hypothesis in three sentences.")
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(resp.to_dict(mode="json"))
import OpenAI from "openai";

if (!process.env.AILOOT_API_KEY?.trim()) throw new Error("Set AILOOT_API_KEY before making a request");
const client = new OpenAI({ baseURL: "https://api.ailoot.ai/v1", apiKey: process.env.AILOOT_API_KEY, maxRetries: 0 });
const resp = await client.responses.create({ model: "glm-5.3", input: "Explain the difference between an observation and a hypothesis in three sentences." });
import { writeFileSync } from "node:fs";

function saveResult(data, stem = "result") {
  writeFileSync(stem + ".json", JSON.stringify(data, null, 2));
  console.log(JSON.stringify(data, null, 2));
  const saveBlob = (encoded, suffix, label) => {
    const raw = Buffer.from(encoded, "base64");
    const ext = raw.subarray(0,8).equals(Buffer.from([137,80,78,71,13,10,26,10])) ? "png" : raw[0]===255 && raw[1]===216 ? "jpg" : raw.subarray(0,4).toString()==="RIFF" && raw.subarray(8,12).toString()==="WEBP" ? "webp" : suffix;
    const file = `${stem}-${label}.${ext}`;
    writeFileSync(file, raw); console.log("Saved", file);
  };
  for (const [i, block] of (data.content || []).entries()) console.log("Content", i, JSON.stringify(block));
  for (const choice of data.choices || []) console.log("Choice", choice.index, JSON.stringify(choice.message || choice.delta || {}));
  for (const [i, item] of (data.output || []).entries()) {
    console.log("Output", i, JSON.stringify(item));
    if (item.type === "image_generation_call" && item.result) saveBlob(item.result, item.output_format || "bin", `output-${i}`);
  }
  for (const [ci, candidate] of (data.candidates || []).entries()) {
    for (const [pi, part] of (candidate.content?.parts || []).entries()) {
      console.log("Candidate/part", ci, pi, JSON.stringify(part));
      const blob = part.inlineData || part.inline_data;
      if (blob?.data) {
        const mime = blob.mimeType || blob.mime_type;
        const suffix = ({"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"})[mime] || "bin";
        saveBlob(blob.data, suffix, `candidate-${ci}-part-${pi}`);
      }
    }
  }
}

saveResult(resp);
from openai import OpenAI
import os
from pathlib import Path
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
with client.responses.stream(model="glm-5.3", input="Explain the difference between an observation and a hypothesis in three sentences.") as stream:
    with Path("stream-events.jsonl").open("w",encoding="utf-8") as log:
        for event in stream:
            payload=event.to_dict(mode="json")
            log.write(json.dumps(payload,ensure_ascii=False)+"\n"); log.flush()
            print(json.dumps(payload,ensure_ascii=False))
    final=stream.get_final_response()
    save_result(final.to_dict(mode="json"),"stream-result")

Prijať a uložiť výsledky

Ailoot · OpenAI Responses

json alebo SSE

Uchovať všetky dokončené výsledky

Uložte každú úplnú vrátenú odpoveď, súbor a časť obsahu.

Zachovajte každú výstupnú položku a časť obsahu, skutočný call_id funkcie, šifrované uvažovanie a údaje o spotrebe. Pri streamovaní zachovajte úplné identifikačné údaje udalostí a položiek.

Ak treba overiť pôvodnú odpoveď

Zachovajte ID požiadaviek/odpovedí aj hlavičky. Všeobecná URL na načítanie textovej úlohy nie je poskytnutá.

Polia odpovede
PoleTyp
PoleidTypstring
PolestatusTypstring
Poleoutput[]Typmessage|reasoning|function_call|other item
Poleoutput[].content[]Typcontent part
PoleusageTypobject
Chyby a ďalšie kroky
OdpoveďPodmienkaĎalší krok
Odpoveď400 · invalid_request_errorPodmienkaNeplatné povinné polia, reprezentácia materiálu alebo hodnota parametraĎalší krokPred novou požiadavkou na vytvorenie opravte uvedené polia.

Aliasy

Aliasy modelov

Ailoot glm-5.3, glm, glm-5, glm-5.1, glm-5.2, glm-latest
Ailoot Ultra glm-5.3, z-ai/glm-5.3, ~z-ai/glm-latest

Aliasy ciest metód

/chat/completions

Súvisiace ID na volanie

z-ai/glm-5.3, glm, glm-5, glm-5.1, glm-5.2, glm-latest, ~z-ai/glm-latest, glm-5.3, glm-5.3

Ailoot · OpenAI Chat POST /v1/chat/completions glm-5.3

glm-5.3

Z.ai /glm-5.3
ID modelu
  • glm-5.3
  • glm
  • glm-5
  • glm-5.1
  • glm-5.2
  • glm-latest

Úvod

Z.ai GLM 5.3 je textový model na uvažovanie pre zložité softvérové inžinierstvo, prácu v termináli a agentov s dlhým horizontom úloh. Podporuje výrobcom zdokumentovaný kontext s rozsahom 1M tokenov, výstup až 128K tokenov, volanie funkcií a úsilie uvažovania low/high/max, pričom uvažovanie je zapnuté po celý čas.

Povolené vstupy
Text
Výsledky
Text

Dostupné v Ailoot · vstupy a metódy

Ailoot · OpenAI Chat POST /v1/chat/completions
Vstup
text
Výstup
text
Kontext
1 000 000 tokens
Maximálny výstup
131 072 tokens
Výstupný formát
json alebo SSE
PoleTypPožiadavkaHodnoty a limityPredvolené
PolemodelTypstringPožiadavkaPovinnéHodnoty a limity
glm-5.3
Predvolené—
PolemessagesTypmessage[]PožiadavkaPovinnéHodnoty a limity
Minimálny počet položiek: 1
Predvolené—
Polemessages[].roleTypstringPožiadavkaPovinnéHodnoty a limity
Príklady: system, user, assistant, tool, function
Podmienky: Tieto roly sú výslovne zastúpené typmi kompatibility v zdrojovom kóde; presný súbor rolí zostáva závislý od modelu.
Závisí od modelu
Predvolené—
Polemessages[].contentTypstring|content_part[]|nullPožiadavkaVoliteľnéHodnoty a limityPredvolené—
Polemessages[].tool_callsTyptool_call[]PožiadavkaVoliteľnéHodnoty a limityPredvolené—
Polemessages[].tool_call_idTypstringPožiadavkaVoliteľnéHodnoty a limity
Platí, keď: role=tool; použite skutočne vrátené ID
Predvolené—
Polemessages[].nameTypstringPožiadavkaVoliteľnéHodnoty a limityPredvolené—
Polemessages[].reasoning_contentTypstringPožiadavkaVoliteľnéHodnoty a limity
Platí, keď: Posielajte späť skutočne vrátené uvažovanie, ak ho tento model používa
Predvolené—
Polemessages[].reasoning_detailsTypobject|arrayPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Polemax_tokensTypintegerPožiadavkaVoliteľnéHodnoty a limity
Minimum: 1
Závisí od modelu
Predvolené—
Polemax_completion_tokensTypintegerPožiadavkaVoliteľnéHodnoty a limity
Minimum: 1
Závisí od modelu
Predvolené—
PolestreamTypbooleanPožiadavkaVoliteľnéHodnoty a limityPredvolenéfalse
Polestream_options.include_usageTypbooleanPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
PoletemperatureTypnumberPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poletop_pTypnumberPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
PolestopTypstring|string[]PožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
PoletoolsTypfunction_tool[]PožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poletools[].typeTypstringPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poletools[].function.nameTypstringPožiadavkaPovinnéHodnoty a limity
Platí, keď: poskytnutý nástroj typu funkcia
Predvolené—
Poletools[].function.descriptionTypstringPožiadavkaVoliteľnéHodnoty a limityPredvolené—
Poletools[].function.parametersTypJSON_schemaPožiadavkaVoliteľnéHodnoty a limityPredvolené—
Poletool_choiceTypstring|objectPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poleparallel_tool_callsTypbooleanPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poleresponse_formatTypobjectPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Polereasoning_effortTypstringPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
PolereasoningTypobjectPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poleservice_tierTypstringPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
PoleinstructionsTypstringPožiadavkaVoliteľnéHodnoty a limity
Pole kompatibility
Predvolené—
PolefunctionsTypfunction[]PožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Polefunction_callTypstring|objectPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poleprompt_cache_optionsTypobjectPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Kombinácie vstupných podkladov

Text · Text UTF8

messages[].content

Parametre a životný cyklus metódy
ParameterŠpecifikácia
Parametermaterial_typesŠpecifikáciatext
ParameterrequiredŠpecifikáciamodel, messages
Parameteroptional_controlsŠpecifikácianull
Parametercontent_typeŠpecifikáciaapplication/json
Parametertext_file_materialŠpecifikáciaskutočný obsah UTF-8 vložený ako text; ID súborov a URLs potrebujú samostatnú presne určenú podporu

Životný cyklus: exact retained published method

Štruktúry metód a ID sú presné; možnosti dodávateľa sa posudzujú oddelene od prijatia požiadavky.

Cenník

Sadzby metód Ailoot

Ailoot OpenAI ChatPOST /v1/chat/completions
Vstup
0,0014 USD / 1K
Výstup
0,0044 USD / 1K
Čítanie cache
≈0,00026 USD / 1K

Ailoot pred požiadavkou rezervuje odhadovanú sumu. Po získaní výsledku vyúčtuje konečný poplatok podľa nameraného využitia. Pri streamovaní sa vyúčtovanie riadi konečným záznamom využitia. Ako funguje rezervácia a vyúčtovanie →

Podrobnosti referenčnej tarify

Referenčné sadzobníky modelu nemenia výber metódy, cenové odhady ani poplatky. Aktívne poplatky používajú sadzby vybranej metódy Ailoot.

Referenčné sadzobníky modelu

Ceny podľa konfigurácie

Každý poplatok priraďte k zobrazeným podmienkam. Pre každú skupinu alternatívnych konfigurácií použite jednu sadzbu.

KonfiguráciaSadzobníkPočet tokenov kontextu väčší nežTokeny kontextu, najviac (vrátane hranice)Poplatok
KonfiguráciaOpenAI Chat · Základné sadzby za tokenySadzobníkZákladná sadzbaPočet tokenov kontextu väčší než—Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranicePoplatok
Vstup · Vstupné tokeny $0.0028 / 1K tokenov
Výstup · Výstupné tokeny $0.0088 / 1K tokenov
Vstup · Čítanie cache $0.00052 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov
KonfiguráciaOpenAI Chat · Pásmo 1 podľa dĺžky požiadavkySadzobník—Počet tokenov kontextu väčší než0Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranicePoplatok
Vstup · Vstupné tokeny $0.0028 / 1K tokenov
Výstup · Výstupné tokeny $0.0088 / 1K tokenov
Vstup · Čítanie cache $0.00052 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov
KonfiguráciaAnthropic Messages · Základné sadzby za tokenySadzobníkZákladná sadzbaPočet tokenov kontextu väčší než—Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranicePoplatok
Vstup · Vstupné tokeny $0.0028 / 1K tokenov
Výstup · Výstupné tokeny $0.0088 / 1K tokenov
Vstup · Čítanie cache $0.00052 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov
KonfiguráciaAnthropic Messages · Pásmo 1 podľa dĺžky požiadavkySadzobník—Počet tokenov kontextu väčší než0Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranicePoplatok
Vstup · Vstupné tokeny $0.0028 / 1K tokenov
Výstup · Výstupné tokeny $0.0088 / 1K tokenov
Vstup · Čítanie cache $0.00052 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov

Príklady požiadaviek

Ailoot · OpenAI Chat

Príklad textuPython SDKNode.js SDKStreamovanie v jazyku Python
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 source-material file}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "glm-5.3", "messages": []}')
f=Path(os.environ["AILOOT_TEXT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 source material")
text=f.read_text(encoding="utf-8")
if not text.strip():raise SystemExit("Source material must contain text")
p["messages"]=[{"role":"user","content":"Summarize this material and quote supporting source passages.\n\n"+text}]
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/chat/completions \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
print(json.dumps(json.loads(Path("result.json").read_text()),ensure_ascii=False,indent=2))
PY_RESULT
from openai import OpenAI
import os

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client = OpenAI(base_url="https://api.ailoot.ai/v1", api_key=os.environ["AILOOT_API_KEY"], max_retries=0)
resp = client.chat.completions.create(
    model="glm-5.3",
    messages=[{"role": "user", "content": "Explain the difference between an observation and a hypothesis in three sentences."}],
)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(resp.to_dict(mode="json"))
import OpenAI from "openai";

if (!process.env.AILOOT_API_KEY?.trim()) throw new Error("Set AILOOT_API_KEY before making a request");
const client = new OpenAI({ baseURL: "https://api.ailoot.ai/v1", apiKey: process.env.AILOOT_API_KEY, maxRetries: 0 });
const resp = await client.chat.completions.create({
  model: "glm-5.3",
  messages: [{ role: "user", content: "Explain the difference between an observation and a hypothesis in three sentences." }],
});
import { writeFileSync } from "node:fs";

function saveResult(data, stem = "result") {
  writeFileSync(stem + ".json", JSON.stringify(data, null, 2));
  console.log(JSON.stringify(data, null, 2));
  const saveBlob = (encoded, suffix, label) => {
    const raw = Buffer.from(encoded, "base64");
    const ext = raw.subarray(0,8).equals(Buffer.from([137,80,78,71,13,10,26,10])) ? "png" : raw[0]===255 && raw[1]===216 ? "jpg" : raw.subarray(0,4).toString()==="RIFF" && raw.subarray(8,12).toString()==="WEBP" ? "webp" : suffix;
    const file = `${stem}-${label}.${ext}`;
    writeFileSync(file, raw); console.log("Saved", file);
  };
  for (const [i, block] of (data.content || []).entries()) console.log("Content", i, JSON.stringify(block));
  for (const choice of data.choices || []) console.log("Choice", choice.index, JSON.stringify(choice.message || choice.delta || {}));
  for (const [i, item] of (data.output || []).entries()) {
    console.log("Output", i, JSON.stringify(item));
    if (item.type === "image_generation_call" && item.result) saveBlob(item.result, item.output_format || "bin", `output-${i}`);
  }
  for (const [ci, candidate] of (data.candidates || []).entries()) {
    for (const [pi, part] of (candidate.content?.parts || []).entries()) {
      console.log("Candidate/part", ci, pi, JSON.stringify(part));
      const blob = part.inlineData || part.inline_data;
      if (blob?.data) {
        const mime = blob.mimeType || blob.mime_type;
        const suffix = ({"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"})[mime] || "bin";
        saveBlob(blob.data, suffix, `candidate-${ci}-part-${pi}`);
      }
    }
  }
}

saveResult(resp);
from openai import OpenAI
import os
from pathlib import Path

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

with client.chat.completions.stream(model='glm-5.3',messages=[{"role":"user","content":"Explain observations and hypotheses in three sentences."}]) as stream:
    with Path("stream-events.jsonl").open("w",encoding="utf-8") as log:
        for event in stream:
            payload=event.to_dict(mode="json")
            log.write(json.dumps(payload,ensure_ascii=False)+"\n"); log.flush()
            print(json.dumps(payload,ensure_ascii=False))
    final=stream.get_final_completion()
    save_result(final.to_dict(mode="json"),"stream-result")

Prijať a uložiť výsledky

Ailoot · OpenAI Chat

json alebo SSE

Uchovať všetky dokončené výsledky

Uložte každú úplnú vrátenú odpoveď, súbor a časť obsahu.

Zachovajte každý variant odpovede a jeho obsah, volania nástrojov a uvažovanie. V SSE zostavujte čiastkové zmeny podľa indexu variantu/nástroja a zachovajte konečný dôvod ukončenia aj údaje o spotrebe.

Ak treba overiť pôvodnú odpoveď

Zachovajte ID požiadaviek/odpovedí aj hlavičky. Všeobecná URL na načítanie textovej úlohy nie je poskytnutá.

Polia odpovede
PoleTyp
Polechoices[].indexTypinteger
Polechoices[].message.contentTypstring|null
Polechoices[].message.tool_callsTyptool_call[]
Polechoices[].message.reasoning_contentTypstring
Polechoices[].message.reasoning_detailsTypobject|array
Polechoices[].finish_reasonTypstring|null
PoleusageTypobject
Chyby a ďalšie kroky
OdpoveďPodmienkaĎalší krok
Odpoveď400 · invalid_request_errorPodmienkaNeplatné povinné polia, reprezentácia materiálu alebo hodnota parametraĎalší krokPred novou požiadavkou na vytvorenie opravte uvedené polia.

Aliasy

Aliasy modelov

Ailoot glm-5.3, glm, glm-5, glm-5.1, glm-5.2, glm-latest
Ailoot Ultra glm-5.3, z-ai/glm-5.3, ~z-ai/glm-latest

Aliasy ciest metód

/chat/completions

Súvisiace ID na volanie

z-ai/glm-5.3, glm, glm-5, glm-5.1, glm-5.2, glm-latest, ~z-ai/glm-latest, glm-5.3, glm-5.3

Ailoot Ultra · OpenAI Chat POST /v1/chat/completions glm-5.3

glm-5.3

Z.ai /glm-5.3
ID modelu
  • glm-5.3
  • z-ai/glm-5.3
  • ~z-ai/glm-latest

Úvod

Z.ai GLM 5.3 je textový model na uvažovanie pre zložité softvérové inžinierstvo, prácu v termináli a agentov s dlhým horizontom úloh. Podporuje výrobcom zdokumentovaný kontext s rozsahom 1M tokenov, výstup až 128K tokenov, volanie funkcií a úsilie uvažovania low/high/max, pričom uvažovanie je zapnuté po celý čas.

Povolené vstupy
Text
Výsledky
Text

Dostupné v Ailoot · vstupy a metódy

Ailoot Ultra · OpenAI Chat POST /v1/chat/completions
Vstup
text
Výstup
text
Výstupný formát
json alebo SSE
PoleTypPožiadavkaHodnoty a limityPredvolené
PolemodelTypstringPožiadavkaPovinnéHodnoty a limity
glm-5.3
Predvolené—
PolemessagesTypmessage[]PožiadavkaPovinnéHodnoty a limity
Minimálny počet položiek: 1
Predvolené—
Polemessages[].roleTypstringPožiadavkaPovinnéHodnoty a limity
Závisí od modelu
Predvolené—
Polemessages[].contentTypstringPožiadavkaVoliteľnéHodnoty a limity
Platí, keď: Textová konverzácia
Predvolené—
PolestreamTypbooleanPožiadavkaVoliteľnéHodnoty a limityPredvolenéfalse
Kombinácie vstupných podkladov

Text · Text UTF8

messages[].content

Parametre a životný cyklus metódy
ParameterŠpecifikácia
Parametercontent_typeŠpecifikáciaapplication/json
ParameterrequiredŠpecifikáciamodel, messages
Parametermaterial_typesŠpecifikáciatext
ParametermessagesŠpecifikáciapole správ so štruktúrou role/content
Parameterfile_materialŠpecifikáciaskutočný dokument UTF-8 vložený ako doslovný text; ID súboru sa neodvodzuje
Parameteroptional_controlsŠpecifikáciastream
Parametercontrol_scopeŠpecifikáciaTextová konverzácia; stream je logická hodnota a predvolene má hodnotu false.
Parameteroutput_modalitiesŠpecifikáciatext
Parameterhosted_operationsŠpecifikáciafalse
Parametermultimodal_input_bindingŠpecifikácianull

Aliasy metódy: /chat/completions

Životný cyklus: synchronous_or_streamed

Pošlite presné ID modelu spolu s messages.

Dĺžka kontextu nie je horná hranica výstupu.

Textový súbor môže poskytnúť doslovný text; obrazové a zvukové vstupy a vstupy so súborovými objektmi potrebujú presné naviazanie.

Cenník

Tarifné údaje nepridávajú možnosti požiadavky. Podporované parametre sú uvedené pri vybranej metóde.

Rýchly režim
Štandardná sadzba Keď je zvolený rýchly režim
Režim Flex
Štandardná sadzba Keď je zvolený režim flex
Maximálna úroveň uvažovania
Štandardná sadzba Keď sa pri maximálnej úrovni uvažovania používa predvolená úprava (default)
Úroveň uvažovania · vysoká
Štandardná sadzba Keď je úroveň uvažovania vysoká
Úroveň uvažovania · nízka
Štandardná sadzba Keď je úroveň uvažovania nízka
Úroveň uvažovania · maximálna
Štandardná sadzba Keď je úroveň uvažovania maximálna

Sadzby Ailoot

Ceny podľa konfigurácie

Každý poplatok priraďte k zobrazeným podmienkam. Pre každú skupinu alternatívnych konfigurácií použite jednu sadzbu.

KonfiguráciaSadzobníkPočet tokenov kontextu väčší nežTokeny kontextu, najviac (vrátane hranice)Poplatok
KonfiguráciaZákladné sadzby za tokenySadzobníkZákladná sadzbaPočet tokenov kontextu väčší než—Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranicePoplatok
Vstup · Vstupné tokeny $0.0028 / 1K tokenov
Výstup · Výstupné tokeny $0.0088 / 1K tokenov
Vstup · Čítanie cache $0.00052 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov
KonfiguráciaPásmo dĺžky požiadavky 1Sadzobník—Počet tokenov kontextu väčší než0Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranicePoplatok
Vstup · Vstupné tokeny $0.0028 / 1K tokenov
Výstup · Výstupné tokeny $0.0088 / 1K tokenov
Vstup · Čítanie cache $0.00052 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov

Ailoot pred požiadavkou rezervuje odhadovanú sumu. Po získaní výsledku vyúčtuje konečný poplatok podľa nameraného využitia. Pri streamovaní sa vyúčtovanie riadi konečným záznamom využitia. Ako funguje rezervácia a vyúčtovanie →

Príklady požiadaviek

Ailoot Ultra · OpenAI Chat

curlPython SDK
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model":"glm-5.3","messages":[{"role":"user","content":"hello"}],"stream":false}')

Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/chat/completions \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
r=json.loads(Path("result.json").read_text())
for x in r.get("choices",[]):
    if x.get("message",{}).get("content"): print(x["message"]["content"])
PY_RESULT
from openai import OpenAI
import os

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
result=client.chat.completions.create(model="glm-5.3", messages=[{"role":"user","content":"hello"}], stream=False)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(result.to_dict(mode="json"))

Prijať a uložiť výsledky

Ailoot Ultra · OpenAI Chat

json alebo SSE

Uchovať všetky dokončené výsledky

Uložte každú úplnú vrátenú odpoveď, súbor a časť obsahu.

Zachovajte každý variant odpovede a jeho obsah, volania nástrojov a uvažovanie. V SSE zostavujte čiastkové zmeny podľa indexu variantu/nástroja a zachovajte konečný dôvod ukončenia aj údaje o spotrebe.

Ak treba overiť pôvodnú odpoveď

Zachovajte ID požiadaviek/odpovedí aj hlavičky. Všeobecná URL na načítanie textovej úlohy nie je poskytnutá.

Polia odpovede
PoleTyp
Polechoices[].indexTypinteger
Polechoices[].message.contentTypstring|null
Polechoices[].message.tool_callsTyptool_call[]
Polechoices[].message.reasoning_contentTypstring
Polechoices[].message.reasoning_detailsTypobject|array
Polechoices[].finish_reasonTypstring|null
PoleusageTypobject
Chyby a ďalšie kroky
OdpoveďPodmienkaĎalší krok
Odpoveď400 · invalid_request_errorPodmienkaNeplatné povinné polia, reprezentácia materiálu alebo hodnota parametraĎalší krokPred novou požiadavkou na vytvorenie opravte uvedené polia.

Aliasy

Aliasy modelov

Ailoot glm-5.3, glm, glm-5, glm-5.1, glm-5.2, glm-latest
Ailoot Ultra glm-5.3, z-ai/glm-5.3, ~z-ai/glm-latest

Aliasy ciest metód

/chat/completions

Súvisiace ID na volanie

z-ai/glm-5.3, glm, glm-5, glm-5.1, glm-5.2, glm-latest, ~z-ai/glm-latest, glm-5.3, glm-5.3

Ailoot Ultra · Anthropic Messages POST /v1/messages glm-5.3

glm-5.3

Z.ai /glm-5.3
ID modelu
  • glm-5.3
  • z-ai/glm-5.3
  • ~z-ai/glm-latest

Úvod

Z.ai GLM 5.3 je textový model na uvažovanie pre zložité softvérové inžinierstvo, prácu v termináli a agentov s dlhým horizontom úloh. Podporuje výrobcom zdokumentovaný kontext s rozsahom 1M tokenov, výstup až 128K tokenov, volanie funkcií a úsilie uvažovania low/high/max, pričom uvažovanie je zapnuté po celý čas.

Povolené vstupy
Text
Výsledky
json · sse

Dostupné v Ailoot · vstupy a metódy

Ailoot Ultra · Anthropic Messages POST /v1/messages
Vstup
text
Výstup
json, sse
Výstupný formát
JSON alebo SSE
PoleTypPožiadavkaHodnoty a limityPredvolené
PolemodelTypstringPožiadavkaPovinnéHodnoty a limity
glm-5.3
Predvolené—
PolemessagesTypmessage[]PožiadavkaPovinnéHodnoty a limityPredvolené—
Polemessages[].roleTypstringPožiadavkaPovinnéHodnoty a limity
user, assistant
Predvolené—
Polemessages[].contentTypstringPožiadavkaPovinnéHodnoty a limityPredvolené—
Polemax_tokensTypintegerPožiadavkaPovinnéHodnoty a limityPredvolené—
PolestreamTypbooleanPožiadavkaVoliteľnéHodnoty a limityPredvolenéfalse
Kombinácie vstupných podkladov

Text · Text UTF-8

reťazec messages[].content

Parametre a životný cyklus metódy
ParameterŠpecifikácia
Parametercontent_typeŠpecifikáciaapplication/json
ParameterrequiredŠpecifikáciamodel, messages, max_tokens
Parameteroptional_controlsŠpecifikáciastream
Parametermaterial_typesŠpecifikáciatext
Parametertext_file_materialŠpecifikáciaPrečítajte skutočný dokument UTF-8 a vložte jeho text do uvedeného vstupného reťazca alebo reťazca obsahu správy.

Životný cyklus: synchronous_or_streamed

Cenník

Tarifné údaje nepridávajú možnosti požiadavky. Podporované parametre sú uvedené pri vybranej metóde.

Rýchly režim
Štandardná sadzba Keď je zvolený rýchly režim
Režim Flex
Štandardná sadzba Keď je zvolený režim flex
Maximálna úroveň uvažovania
Štandardná sadzba Keď sa pri maximálnej úrovni uvažovania používa predvolená úprava (default)
Úroveň uvažovania · vysoká
Štandardná sadzba Keď je úroveň uvažovania vysoká
Úroveň uvažovania · nízka
Štandardná sadzba Keď je úroveň uvažovania nízka
Úroveň uvažovania · maximálna
Štandardná sadzba Keď je úroveň uvažovania maximálna

Sadzby Ailoot

Ceny podľa konfigurácie

Každý poplatok priraďte k zobrazeným podmienkam. Pre každú skupinu alternatívnych konfigurácií použite jednu sadzbu.

KonfiguráciaSadzobníkPočet tokenov kontextu väčší nežTokeny kontextu, najviac (vrátane hranice)Poplatok
KonfiguráciaZákladné sadzby za tokenySadzobníkZákladná sadzbaPočet tokenov kontextu väčší než—Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranicePoplatok
Vstup · Vstupné tokeny $0.0028 / 1K tokenov
Výstup · Výstupné tokeny $0.0088 / 1K tokenov
Vstup · Čítanie cache $0.00052 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov
KonfiguráciaPásmo dĺžky požiadavky 1Sadzobník—Počet tokenov kontextu väčší než0Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranicePoplatok
Vstup · Vstupné tokeny $0.0028 / 1K tokenov
Výstup · Výstupné tokeny $0.0088 / 1K tokenov
Vstup · Čítanie cache $0.00052 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov

Ailoot pred požiadavkou rezervuje odhadovanú sumu. Po získaní výsledku vyúčtuje konečný poplatok podľa nameraného využitia. Pri streamovaní sa vyúčtovanie riadi konečným záznamom využitia. Ako funguje rezervácia a vyúčtovanie →

Príklady požiadaviek

Ailoot Ultra · Anthropic Messages

Úplné minimálne telo požiadavky vo formáte JSONcurl · použite svoj dokument UTF-8Python · uložte úplný výsledok
{
  "model": "glm-5.3",
  "max_tokens": 128,
  "messages": [
    {
      "role": "user",
      "content": "Summarize the incident report."
    }
  ],
  "stream": false
}
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 document}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json, os
from pathlib import Path

source_file = Path(os.environ['AILOOT_TEXT_FILE'])
if not source_file.is_file():
    raise SystemExit('Set AILOOT_TEXT_FILE to your actual UTF-8 document')
text = source_file.read_text(encoding='utf-8')
if not text.strip():
    raise SystemExit('Choose a document containing text')
payload = {'model': 'glm-5.3', 'max_tokens': 128, 'messages': [{'role': 'user', 'content': 'Summarize the incident report.'}]}
payload['messages'][0]['content'] = 'Summarize this material and quote supporting source passages.\n\n' + text
Path('request.json').write_text(json.dumps(payload, ensure_ascii=False), encoding='utf-8')
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/messages \
  -H "x-api-key: $AILOOT_API_KEY" -H 'anthropic-version: 2023-06-01' -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path

result = json.loads(Path('result.json').read_text(encoding='utf-8'))
print(json.dumps(result, ensure_ascii=False, indent=2))
PY_RESULT
import json, os
from pathlib import Path

source_file = Path(os.environ['AILOOT_TEXT_FILE'])
if not source_file.is_file():
    raise SystemExit('Set AILOOT_TEXT_FILE to your actual UTF-8 document')
text = source_file.read_text(encoding='utf-8')
if not text.strip():
    raise SystemExit('Choose a document containing text')
payload = {'model': 'glm-5.3', 'max_tokens': 128, 'messages': [{'role': 'user', 'content': 'Summarize the incident report.'}]}
payload['messages'][0]['content'] = 'Summarize this material and quote supporting source passages.\n\n' + text
from urllib.request import Request, urlopen
from urllib.error import HTTPError

api_key = os.environ['AILOOT_API_KEY']
if not api_key.strip():
    raise SystemExit('Set AILOOT_API_KEY before making a request')
headers = {'x-api-key': 'PLACEHOLDER_KEY', 'anthropic-version': '2023-06-01', 'Content-Type': 'application/json'}
headers['x-api-key'] = api_key
request = Request('https://api.ailoot.ai/v1/messages', data=json.dumps(payload, ensure_ascii=False).encode('utf-8'), headers=headers, method='POST')
try:
    with urlopen(request, timeout=120) as response:
        raw = response.read()
        Path('response-headers.txt').write_text(str(response.headers), encoding='utf-8')
except HTTPError as error:
    Path('result.json').write_bytes(error.read())
    Path('response-headers.txt').write_text(str(error.headers), encoding='utf-8')
    raise
Path('result.json').write_bytes(raw)
import json
from pathlib import Path

result = json.loads(Path('result.json').read_text(encoding='utf-8'))
print(json.dumps(result, ensure_ascii=False, indent=2))

Prijať a uložiť výsledky

Ailoot Ultra · Anthropic Messages

JSON alebo SSE

Uchovať všetky dokončené výsledky

Uložte každú úplnú vrátenú odpoveď, súbor a časť obsahu.

Zachovajte všetky bloky obsahu, podpisy uvažovania a skutočné ID volaní nástrojov. Zostavte všetky čiastkové zmeny blokov SSE; prvý textový blok nie je celý výstup.

Ak treba overiť pôvodnú odpoveď

Zachovajte ID požiadaviek/odpovedí aj hlavičky. Všeobecná URL na načítanie textovej úlohy nie je poskytnutá.

Polia odpovede
PoleTyp
PoleidTypstring
PolemodelTypstring
Polecontent[]Typtext|thinking|tool_use|other content block
Polestop_reasonTypstring|null
PoleusageTypobject
Chyby a ďalšie kroky
OdpoveďPodmienkaĎalší krok
Odpoveď400 · invalid_request_errorPodmienkaNeplatné povinné polia, reprezentácia materiálu alebo hodnota parametraĎalší krokPred novou požiadavkou na vytvorenie opravte uvedené polia.

Aliasy

Aliasy modelov

Ailoot glm-5.3, glm, glm-5, glm-5.1, glm-5.2, glm-latest
Ailoot Ultra glm-5.3, z-ai/glm-5.3, ~z-ai/glm-latest

Aliasy ciest metód

/chat/completions

Súvisiace ID na volanie

z-ai/glm-5.3, glm, glm-5, glm-5.1, glm-5.2, glm-latest, ~z-ai/glm-latest, glm-5.3, glm-5.3

Ailoot · Anthropic Messages POST /v1/messages glm

glm

Z.ai /glm
ID modelu
  • glm-5.3
  • glm
  • glm-5
  • glm-5.1
  • glm-5.2
  • glm-latest

Úvod

Z.ai GLM 5.3 je textový model na uvažovanie pre zložité softvérové inžinierstvo, prácu v termináli a agentov s dlhým horizontom úloh. Podporuje výrobcom zdokumentovaný kontext s rozsahom 1M tokenov, výstup až 128K tokenov, volanie funkcií a úsilie uvažovania low/high/max, pričom uvažovanie je zapnuté po celý čas.

Povolené vstupy
Text
Výsledky
Text

Dostupné v Ailoot · vstupy a metódy

Ailoot · Anthropic Messages POST /v1/messages
Vstup
text
Výstup
text
Kontext
1 000 000 tokens
Maximálny výstup
131 072 tokens
Výstupný formát
json alebo SSE
PoleTypPožiadavkaHodnoty a limityPredvolené
PolemodelTypstringPožiadavkaPovinnéHodnoty a limity
glm
Predvolené—
PolemessagesTypmessage[]PožiadavkaPovinnéHodnoty a limity
Minimálny počet položiek: 1
Predvolené—
Polemessages[].roleTypstringPožiadavkaPovinnéHodnoty a limity
user, assistant
Predvolené—
Polemessages[].contentTypstring|content_block[]PožiadavkaPovinnéHodnoty a limityPredvolené—
PolesystemTypstring|content_block[]PožiadavkaVoliteľnéHodnoty a limityPredvolené—
Polemax_tokensTypintegerPožiadavkaPovinnéHodnoty a limity
Minimum: 1
Limit sa vzťahuje na: presná horná hranica zvoleného modelu/karty
Predvolené—
PolestreamTypbooleanPožiadavkaVoliteľnéHodnoty a limityPredvolenéfalse
PoletemperatureTypnumberPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poletop_pTypnumberPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Polestop_sequencesTypstring[]PožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
PoletoolsTyptool[]PožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poletools[].nameTypstringPožiadavkaVoliteľnéHodnoty a limity
Platí, keď: poskytnutý nástroj
Predvolené—
Poletools[].descriptionTypstringPožiadavkaVoliteľnéHodnoty a limityPredvolené—
Poletools[].input_schemaTypJSON_schemaPožiadavkaVoliteľnéHodnoty a limityPredvolené—
Poletool_choiceTypobjectPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Polethinking.typeTypstringPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Polethinking.budget_tokensTypintegerPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poleoutput_config.effortTypstringPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
PolemetadataTypobjectPožiadavkaVoliteľnéHodnoty a limityPredvolené—
Polecache_controlTypobjectPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Kombinácie vstupných podkladov

Text · Text UTF8

messages[].content alebo blok type=text

Parametre a životný cyklus metódy
ParameterŠpecifikácia
Parametermaterial_typesŠpecifikáciatext
ParameterrequiredŠpecifikáciamodel, messages, max_tokens
Parameteroptional_controlsŠpecifikácianull
Parametercontent_typeŠpecifikáciaapplication/json
Parametertext_file_materialŠpecifikáciaskutočný obsah UTF-8 vložený ako text; ID súborov a URLs potrebujú samostatnú presne určenú podporu

Životný cyklus: exact retained published method

Štruktúry metód a ID sú presné; možnosti dodávateľa sa posudzujú oddelene od prijatia požiadavky.

Cenník

Sadzby metód Ailoot

Ailoot Anthropic MessagesPOST /v1/messages
Vstup
0,0014 USD / 1K
Výstup
0,0044 USD / 1K
Čítanie cache
≈0,00026 USD / 1K

Ailoot pred požiadavkou rezervuje odhadovanú sumu. Po získaní výsledku vyúčtuje konečný poplatok podľa nameraného využitia. Pri streamovaní sa vyúčtovanie riadi konečným záznamom využitia. Ako funguje rezervácia a vyúčtovanie →

Podrobnosti referenčnej tarify

Referenčné sadzobníky modelu nemenia výber metódy, cenové odhady ani poplatky. Aktívne poplatky používajú sadzby vybranej metódy Ailoot.

Referenčné sadzobníky modelu

Ceny podľa konfigurácie

Každý poplatok priraďte k zobrazeným podmienkam. Pre každú skupinu alternatívnych konfigurácií použite jednu sadzbu.

KonfiguráciaSadzobníkPočet tokenov kontextu väčší nežTokeny kontextu, najviac (vrátane hranice)Poplatok
KonfiguráciaOpenAI Chat · Základné sadzby za tokenySadzobníkZákladná sadzbaPočet tokenov kontextu väčší než—Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranicePoplatok
Vstup · Vstupné tokeny $0.0028 / 1K tokenov
Výstup · Výstupné tokeny $0.0088 / 1K tokenov
Vstup · Čítanie cache $0.00052 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov
KonfiguráciaOpenAI Chat · Pásmo 1 podľa dĺžky požiadavkySadzobník—Počet tokenov kontextu väčší než0Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranicePoplatok
Vstup · Vstupné tokeny $0.0028 / 1K tokenov
Výstup · Výstupné tokeny $0.0088 / 1K tokenov
Vstup · Čítanie cache $0.00052 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov
KonfiguráciaAnthropic Messages · Základné sadzby za tokenySadzobníkZákladná sadzbaPočet tokenov kontextu väčší než—Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranicePoplatok
Vstup · Vstupné tokeny $0.0028 / 1K tokenov
Výstup · Výstupné tokeny $0.0088 / 1K tokenov
Vstup · Čítanie cache $0.00052 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov
KonfiguráciaAnthropic Messages · Pásmo 1 podľa dĺžky požiadavkySadzobník—Počet tokenov kontextu väčší než0Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranicePoplatok
Vstup · Vstupné tokeny $0.0028 / 1K tokenov
Výstup · Výstupné tokeny $0.0088 / 1K tokenov
Vstup · Čítanie cache $0.00052 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov

Príklady požiadaviek

Ailoot · Anthropic Messages

Príklad textuPython SDKNode.js SDKStreamovanie v jazyku Python
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 source-material file}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "glm", "max_tokens": 1024, "messages": []}')
f=Path(os.environ["AILOOT_TEXT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 source material")
text=f.read_text(encoding="utf-8")
if not text.strip():raise SystemExit("Source material must contain text")
p["messages"]=[{"role":"user","content":"Summarize this material and quote supporting source passages.\n\n"+text}]
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/messages \
  -H "x-api-key: $AILOOT_API_KEY" -H 'anthropic-version: 2023-06-01' -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
print(json.dumps(json.loads(Path("result.json").read_text()),ensure_ascii=False,indent=2))
PY_RESULT
import anthropic
import os

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client = anthropic.Anthropic(base_url="https://api.ailoot.ai", api_key=os.environ["AILOOT_API_KEY"], max_retries=0)
msg = client.messages.create(
    model="glm",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Explain the difference between an observation and a hypothesis in three sentences."}],
)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(msg.to_dict(mode="json"))
import Anthropic from "@anthropic-ai/sdk";

if (!process.env.AILOOT_API_KEY?.trim()) throw new Error("Set AILOOT_API_KEY before making a request");
const client = new Anthropic({ baseURL: "https://api.ailoot.ai", apiKey: process.env.AILOOT_API_KEY, maxRetries: 0 });
const msg = await client.messages.create({
  model: "glm",
  max_tokens: 1024,
  messages: [{ role: "user", content: "Explain the difference between an observation and a hypothesis in three sentences." }],
});
import { writeFileSync } from "node:fs";

function saveResult(data, stem = "result") {
  writeFileSync(stem + ".json", JSON.stringify(data, null, 2));
  console.log(JSON.stringify(data, null, 2));
  const saveBlob = (encoded, suffix, label) => {
    const raw = Buffer.from(encoded, "base64");
    const ext = raw.subarray(0,8).equals(Buffer.from([137,80,78,71,13,10,26,10])) ? "png" : raw[0]===255 && raw[1]===216 ? "jpg" : raw.subarray(0,4).toString()==="RIFF" && raw.subarray(8,12).toString()==="WEBP" ? "webp" : suffix;
    const file = `${stem}-${label}.${ext}`;
    writeFileSync(file, raw); console.log("Saved", file);
  };
  for (const [i, block] of (data.content || []).entries()) console.log("Content", i, JSON.stringify(block));
  for (const choice of data.choices || []) console.log("Choice", choice.index, JSON.stringify(choice.message || choice.delta || {}));
  for (const [i, item] of (data.output || []).entries()) {
    console.log("Output", i, JSON.stringify(item));
    if (item.type === "image_generation_call" && item.result) saveBlob(item.result, item.output_format || "bin", `output-${i}`);
  }
  for (const [ci, candidate] of (data.candidates || []).entries()) {
    for (const [pi, part] of (candidate.content?.parts || []).entries()) {
      console.log("Candidate/part", ci, pi, JSON.stringify(part));
      const blob = part.inlineData || part.inline_data;
      if (blob?.data) {
        const mime = blob.mimeType || blob.mime_type;
        const suffix = ({"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"})[mime] || "bin";
        saveBlob(blob.data, suffix, `candidate-${ci}-part-${pi}`);
      }
    }
  }
}

saveResult(msg);
import anthropic,os
from pathlib import Path

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=anthropic.Anthropic(base_url="https://api.ailoot.ai",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

with client.messages.stream(model='glm',max_tokens=1024,messages=[{"role":"user","content":"Explain observations and hypotheses in three sentences."}]) as stream:
    with Path("stream-events.jsonl").open("w",encoding="utf-8") as log:
        for event in stream:
            payload=event.to_dict(mode="json")
            log.write(json.dumps(payload,ensure_ascii=False)+"\n"); log.flush()
            print(json.dumps(payload,ensure_ascii=False))
    final=stream.get_final_message()
    save_result(final.to_dict(mode="json"),"stream-result")

Prijať a uložiť výsledky

Ailoot · Anthropic Messages

json alebo SSE

Uchovať všetky dokončené výsledky

Uložte každú úplnú vrátenú odpoveď, súbor a časť obsahu.

Zachovajte všetky bloky obsahu, podpisy uvažovania a skutočné ID volaní nástrojov. Zostavte všetky čiastkové zmeny blokov SSE; prvý textový blok nie je celý výstup.

Ak treba overiť pôvodnú odpoveď

Zachovajte ID požiadaviek/odpovedí aj hlavičky. Všeobecná URL na načítanie textovej úlohy nie je poskytnutá.

Polia odpovede
PoleTyp
PoleidTypstring
PolemodelTypstring
Polecontent[]Typtext|thinking|tool_use|other content block
Polestop_reasonTypstring|null
PoleusageTypobject
Chyby a ďalšie kroky
OdpoveďPodmienkaĎalší krok
Odpoveď400 · invalid_request_errorPodmienkaNeplatné povinné polia, reprezentácia materiálu alebo hodnota parametraĎalší krokPred novou požiadavkou na vytvorenie opravte uvedené polia.

Aliasy

Aliasy modelov

Ailoot glm-5.3, glm, glm-5, glm-5.1, glm-5.2, glm-latest
Ailoot Ultra glm-5.3, z-ai/glm-5.3, ~z-ai/glm-latest

Aliasy ciest metód

/chat/completions

Súvisiace ID na volanie

z-ai/glm-5.3, glm, glm-5, glm-5.1, glm-5.2, glm-latest, ~z-ai/glm-latest, glm-5.3, glm-5.3

Ailoot · OpenAI Responses POST /v1/responses glm

glm

Z.ai /glm
ID modelu
  • glm-5.3
  • glm
  • glm-5
  • glm-5.1
  • glm-5.2
  • glm-latest

Úvod

Z.ai GLM 5.3 je textový model na uvažovanie pre zložité softvérové inžinierstvo, prácu v termináli a agentov s dlhým horizontom úloh. Podporuje výrobcom zdokumentovaný kontext s rozsahom 1M tokenov, výstup až 128K tokenov, volanie funkcií a úsilie uvažovania low/high/max, pričom uvažovanie je zapnuté po celý čas.

Povolené vstupy
Text
Výsledky
Text

Dostupné v Ailoot · vstupy a metódy

Ailoot · OpenAI Responses POST /v1/responses
Vstup
text
Výstup
text
Kontext
1 000 000 tokens
Maximálny výstup
131 072 tokens
Výstupný formát
json alebo SSE
PoleTypPožiadavkaHodnoty a limityPredvolené
PolemodelTypstringPožiadavkaPovinnéHodnoty a limity
glm
Predvolené—
PoleinputTypstring|input_item[]PožiadavkaPovinnéHodnoty a limityPredvolené—
PoleinstructionsTypstringPožiadavkaVoliteľnéHodnoty a limityPredvolené—
Poleinput[].typeTypstringPožiadavkaVoliteľnéHodnoty a limity
message, reasoning, function_call, function_call_output
Predvolené—
Poleinput[].contentTypstring|content_part[]PožiadavkaVoliteľnéHodnoty a limityPredvolené—
Poleinput[].call_idTypstringPožiadavkaVoliteľnéHodnoty a limity
Platí, keď: function_call_output; zachovajte skutočne vrátený call_id
Predvolené—
Poleinput[].outputTypstring|content_part[]PožiadavkaVoliteľnéHodnoty a limity
Platí, keď: function_call_output
Predvolené—
Polemax_output_tokensTypintegerPožiadavkaVoliteľnéHodnoty a limity
Minimum: 1
Závisí od modelu
Predvolené—
PolestreamTypbooleanPožiadavkaVoliteľnéHodnoty a limityPredvolenéfalse
PoletemperatureTypnumberPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poletop_pTypnumberPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
PoletoolsTyptool[]PožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poletool_choiceTypstring|objectPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poleparallel_tool_callsTypbooleanPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Polereasoning.effortTypstringPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Polereasoning.summaryTypstringPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poletext.formatTypobjectPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poletext.verbosityTypstringPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
PoleincludeTypstring[]PožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
PolestoreTypbooleanPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poleprevious_response_idTypstringPožiadavkaVoliteľnéHodnoty a limity
Požiadavka na ID: Len skutočné ID odpovede z podporovaného pokračovania
Závisí od modelu
Predvolené—
Poleservice_tierTypstringPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poleprompt_cache_keyTypstringPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poleprompt_cache_optionsTypobjectPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Kombinácie vstupných podkladov

Text · Text UTF8

vstupný text alebo časť input_text

Parametre a životný cyklus metódy
ParameterŠpecifikácia
Parametermaterial_typesŠpecifikáciatext
ParameterrequiredŠpecifikáciamodel, input
Parameteroptional_controlsŠpecifikácianull
Parametercontent_typeŠpecifikáciaapplication/json
Parametertext_file_materialŠpecifikáciaskutočný obsah UTF-8 vložený ako text; ID súborov a URLs potrebujú samostatnú presne určenú podporu

Životný cyklus: exact retained published method

Štruktúry metód a ID sú presné; možnosti dodávateľa sa posudzujú oddelene od prijatia požiadavky.

Cenník

Sadzby metód Ailoot

Ailoot OpenAI ResponsesPOST /v1/responses
Vstup
0,0014 USD / 1K
Výstup
0,0044 USD / 1K
Čítanie cache
≈0,00026 USD / 1K

Ailoot pred požiadavkou rezervuje odhadovanú sumu. Po získaní výsledku vyúčtuje konečný poplatok podľa nameraného využitia. Pri streamovaní sa vyúčtovanie riadi konečným záznamom využitia. Ako funguje rezervácia a vyúčtovanie →

Podrobnosti referenčnej tarify

Referenčné sadzobníky modelu nemenia výber metódy, cenové odhady ani poplatky. Aktívne poplatky používajú sadzby vybranej metódy Ailoot.

Referenčné sadzobníky modelu

Ceny podľa konfigurácie

Každý poplatok priraďte k zobrazeným podmienkam. Pre každú skupinu alternatívnych konfigurácií použite jednu sadzbu.

KonfiguráciaSadzobníkPočet tokenov kontextu väčší nežTokeny kontextu, najviac (vrátane hranice)Poplatok
KonfiguráciaOpenAI Chat · Základné sadzby za tokenySadzobníkZákladná sadzbaPočet tokenov kontextu väčší než—Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranicePoplatok
Vstup · Vstupné tokeny $0.0028 / 1K tokenov
Výstup · Výstupné tokeny $0.0088 / 1K tokenov
Vstup · Čítanie cache $0.00052 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov
KonfiguráciaOpenAI Chat · Pásmo 1 podľa dĺžky požiadavkySadzobník—Počet tokenov kontextu väčší než0Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranicePoplatok
Vstup · Vstupné tokeny $0.0028 / 1K tokenov
Výstup · Výstupné tokeny $0.0088 / 1K tokenov
Vstup · Čítanie cache $0.00052 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov
KonfiguráciaAnthropic Messages · Základné sadzby za tokenySadzobníkZákladná sadzbaPočet tokenov kontextu väčší než—Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranicePoplatok
Vstup · Vstupné tokeny $0.0028 / 1K tokenov
Výstup · Výstupné tokeny $0.0088 / 1K tokenov
Vstup · Čítanie cache $0.00052 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov
KonfiguráciaAnthropic Messages · Pásmo 1 podľa dĺžky požiadavkySadzobník—Počet tokenov kontextu väčší než0Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranicePoplatok
Vstup · Vstupné tokeny $0.0028 / 1K tokenov
Výstup · Výstupné tokeny $0.0088 / 1K tokenov
Vstup · Čítanie cache $0.00052 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov

Príklady požiadaviek

Ailoot · OpenAI Responses

Príklad textuPython SDKNode.js SDKStreamovanie v jazyku Python
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 source-material file}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "glm", "input": ""}')
f=Path(os.environ["AILOOT_TEXT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 source material")
text=f.read_text(encoding="utf-8")
if not text.strip():raise SystemExit("Source material must contain text")
p["input"]="Summarize this material and quote supporting source passages.\n\n"+text
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/responses \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(json.loads(Path("result.json").read_text(encoding="utf-8")))
PY_RESULT
from openai import OpenAI
import os

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client = OpenAI(base_url="https://api.ailoot.ai/v1", api_key=os.environ["AILOOT_API_KEY"], max_retries=0)
resp = client.responses.create(model="glm", input="Explain the difference between an observation and a hypothesis in three sentences.")
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(resp.to_dict(mode="json"))
import OpenAI from "openai";

if (!process.env.AILOOT_API_KEY?.trim()) throw new Error("Set AILOOT_API_KEY before making a request");
const client = new OpenAI({ baseURL: "https://api.ailoot.ai/v1", apiKey: process.env.AILOOT_API_KEY, maxRetries: 0 });
const resp = await client.responses.create({ model: "glm", input: "Explain the difference between an observation and a hypothesis in three sentences." });
import { writeFileSync } from "node:fs";

function saveResult(data, stem = "result") {
  writeFileSync(stem + ".json", JSON.stringify(data, null, 2));
  console.log(JSON.stringify(data, null, 2));
  const saveBlob = (encoded, suffix, label) => {
    const raw = Buffer.from(encoded, "base64");
    const ext = raw.subarray(0,8).equals(Buffer.from([137,80,78,71,13,10,26,10])) ? "png" : raw[0]===255 && raw[1]===216 ? "jpg" : raw.subarray(0,4).toString()==="RIFF" && raw.subarray(8,12).toString()==="WEBP" ? "webp" : suffix;
    const file = `${stem}-${label}.${ext}`;
    writeFileSync(file, raw); console.log("Saved", file);
  };
  for (const [i, block] of (data.content || []).entries()) console.log("Content", i, JSON.stringify(block));
  for (const choice of data.choices || []) console.log("Choice", choice.index, JSON.stringify(choice.message || choice.delta || {}));
  for (const [i, item] of (data.output || []).entries()) {
    console.log("Output", i, JSON.stringify(item));
    if (item.type === "image_generation_call" && item.result) saveBlob(item.result, item.output_format || "bin", `output-${i}`);
  }
  for (const [ci, candidate] of (data.candidates || []).entries()) {
    for (const [pi, part] of (candidate.content?.parts || []).entries()) {
      console.log("Candidate/part", ci, pi, JSON.stringify(part));
      const blob = part.inlineData || part.inline_data;
      if (blob?.data) {
        const mime = blob.mimeType || blob.mime_type;
        const suffix = ({"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"})[mime] || "bin";
        saveBlob(blob.data, suffix, `candidate-${ci}-part-${pi}`);
      }
    }
  }
}

saveResult(resp);
from openai import OpenAI
import os
from pathlib import Path
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
with client.responses.stream(model="glm", input="Explain the difference between an observation and a hypothesis in three sentences.") as stream:
    with Path("stream-events.jsonl").open("w",encoding="utf-8") as log:
        for event in stream:
            payload=event.to_dict(mode="json")
            log.write(json.dumps(payload,ensure_ascii=False)+"\n"); log.flush()
            print(json.dumps(payload,ensure_ascii=False))
    final=stream.get_final_response()
    save_result(final.to_dict(mode="json"),"stream-result")

Prijať a uložiť výsledky

Ailoot · OpenAI Responses

json alebo SSE

Uchovať všetky dokončené výsledky

Uložte každú úplnú vrátenú odpoveď, súbor a časť obsahu.

Zachovajte každú výstupnú položku a časť obsahu, skutočný call_id funkcie, šifrované uvažovanie a údaje o spotrebe. Pri streamovaní zachovajte úplné identifikačné údaje udalostí a položiek.

Ak treba overiť pôvodnú odpoveď

Zachovajte ID požiadaviek/odpovedí aj hlavičky. Všeobecná URL na načítanie textovej úlohy nie je poskytnutá.

Polia odpovede
PoleTyp
PoleidTypstring
PolestatusTypstring
Poleoutput[]Typmessage|reasoning|function_call|other item
Poleoutput[].content[]Typcontent part
PoleusageTypobject
Chyby a ďalšie kroky
OdpoveďPodmienkaĎalší krok
Odpoveď400 · invalid_request_errorPodmienkaNeplatné povinné polia, reprezentácia materiálu alebo hodnota parametraĎalší krokPred novou požiadavkou na vytvorenie opravte uvedené polia.

Aliasy

Aliasy modelov

Ailoot glm-5.3, glm, glm-5, glm-5.1, glm-5.2, glm-latest
Ailoot Ultra glm-5.3, z-ai/glm-5.3, ~z-ai/glm-latest

Aliasy ciest metód

/chat/completions

Súvisiace ID na volanie

z-ai/glm-5.3, glm, glm-5, glm-5.1, glm-5.2, glm-latest, ~z-ai/glm-latest, glm-5.3, glm-5.3

Ailoot · OpenAI Chat POST /v1/chat/completions glm

glm

Z.ai /glm
ID modelu
  • glm-5.3
  • glm
  • glm-5
  • glm-5.1
  • glm-5.2
  • glm-latest

Úvod

Z.ai GLM 5.3 je textový model na uvažovanie pre zložité softvérové inžinierstvo, prácu v termináli a agentov s dlhým horizontom úloh. Podporuje výrobcom zdokumentovaný kontext s rozsahom 1M tokenov, výstup až 128K tokenov, volanie funkcií a úsilie uvažovania low/high/max, pričom uvažovanie je zapnuté po celý čas.

Povolené vstupy
Text
Výsledky
Text

Dostupné v Ailoot · vstupy a metódy

Ailoot · OpenAI Chat POST /v1/chat/completions
Vstup
text
Výstup
text
Kontext
1 000 000 tokens
Maximálny výstup
131 072 tokens
Výstupný formát
json alebo SSE
PoleTypPožiadavkaHodnoty a limityPredvolené
PolemodelTypstringPožiadavkaPovinnéHodnoty a limity
glm
Predvolené—
PolemessagesTypmessage[]PožiadavkaPovinnéHodnoty a limity
Minimálny počet položiek: 1
Predvolené—
Polemessages[].roleTypstringPožiadavkaPovinnéHodnoty a limity
Príklady: system, user, assistant, tool, function
Podmienky: Tieto roly sú výslovne zastúpené typmi kompatibility v zdrojovom kóde; presný súbor rolí zostáva závislý od modelu.
Závisí od modelu
Predvolené—
Polemessages[].contentTypstring|content_part[]|nullPožiadavkaVoliteľnéHodnoty a limityPredvolené—
Polemessages[].tool_callsTyptool_call[]PožiadavkaVoliteľnéHodnoty a limityPredvolené—
Polemessages[].tool_call_idTypstringPožiadavkaVoliteľnéHodnoty a limity
Platí, keď: role=tool; použite skutočne vrátené ID
Predvolené—
Polemessages[].nameTypstringPožiadavkaVoliteľnéHodnoty a limityPredvolené—
Polemessages[].reasoning_contentTypstringPožiadavkaVoliteľnéHodnoty a limity
Platí, keď: Posielajte späť skutočne vrátené uvažovanie, ak ho tento model používa
Predvolené—
Polemessages[].reasoning_detailsTypobject|arrayPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Polemax_tokensTypintegerPožiadavkaVoliteľnéHodnoty a limity
Minimum: 1
Závisí od modelu
Predvolené—
Polemax_completion_tokensTypintegerPožiadavkaVoliteľnéHodnoty a limity
Minimum: 1
Závisí od modelu
Predvolené—
PolestreamTypbooleanPožiadavkaVoliteľnéHodnoty a limityPredvolenéfalse
Polestream_options.include_usageTypbooleanPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
PoletemperatureTypnumberPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poletop_pTypnumberPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
PolestopTypstring|string[]PožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
PoletoolsTypfunction_tool[]PožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poletools[].typeTypstringPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poletools[].function.nameTypstringPožiadavkaPovinnéHodnoty a limity
Platí, keď: poskytnutý nástroj typu funkcia
Predvolené—
Poletools[].function.descriptionTypstringPožiadavkaVoliteľnéHodnoty a limityPredvolené—
Poletools[].function.parametersTypJSON_schemaPožiadavkaVoliteľnéHodnoty a limityPredvolené—
Poletool_choiceTypstring|objectPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poleparallel_tool_callsTypbooleanPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poleresponse_formatTypobjectPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Polereasoning_effortTypstringPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
PolereasoningTypobjectPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poleservice_tierTypstringPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
PoleinstructionsTypstringPožiadavkaVoliteľnéHodnoty a limity
Pole kompatibility
Predvolené—
PolefunctionsTypfunction[]PožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Polefunction_callTypstring|objectPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poleprompt_cache_optionsTypobjectPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Kombinácie vstupných podkladov

Text · Text UTF8

messages[].content

Parametre a životný cyklus metódy
ParameterŠpecifikácia
Parametermaterial_typesŠpecifikáciatext
ParameterrequiredŠpecifikáciamodel, messages
Parameteroptional_controlsŠpecifikácianull
Parametercontent_typeŠpecifikáciaapplication/json
Parametertext_file_materialŠpecifikáciaskutočný obsah UTF-8 vložený ako text; ID súborov a URLs potrebujú samostatnú presne určenú podporu

Životný cyklus: exact retained published method

Štruktúry metód a ID sú presné; možnosti dodávateľa sa posudzujú oddelene od prijatia požiadavky.

Cenník

Sadzby metód Ailoot

Ailoot OpenAI ChatPOST /v1/chat/completions
Vstup
0,0014 USD / 1K
Výstup
0,0044 USD / 1K
Čítanie cache
≈0,00026 USD / 1K

Ailoot pred požiadavkou rezervuje odhadovanú sumu. Po získaní výsledku vyúčtuje konečný poplatok podľa nameraného využitia. Pri streamovaní sa vyúčtovanie riadi konečným záznamom využitia. Ako funguje rezervácia a vyúčtovanie →

Podrobnosti referenčnej tarify

Referenčné sadzobníky modelu nemenia výber metódy, cenové odhady ani poplatky. Aktívne poplatky používajú sadzby vybranej metódy Ailoot.

Referenčné sadzobníky modelu

Ceny podľa konfigurácie

Každý poplatok priraďte k zobrazeným podmienkam. Pre každú skupinu alternatívnych konfigurácií použite jednu sadzbu.

KonfiguráciaSadzobníkPočet tokenov kontextu väčší nežTokeny kontextu, najviac (vrátane hranice)Poplatok
KonfiguráciaOpenAI Chat · Základné sadzby za tokenySadzobníkZákladná sadzbaPočet tokenov kontextu väčší než—Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranicePoplatok
Vstup · Vstupné tokeny $0.0028 / 1K tokenov
Výstup · Výstupné tokeny $0.0088 / 1K tokenov
Vstup · Čítanie cache $0.00052 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov
KonfiguráciaOpenAI Chat · Pásmo 1 podľa dĺžky požiadavkySadzobník—Počet tokenov kontextu väčší než0Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranicePoplatok
Vstup · Vstupné tokeny $0.0028 / 1K tokenov
Výstup · Výstupné tokeny $0.0088 / 1K tokenov
Vstup · Čítanie cache $0.00052 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov
KonfiguráciaAnthropic Messages · Základné sadzby za tokenySadzobníkZákladná sadzbaPočet tokenov kontextu väčší než—Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranicePoplatok
Vstup · Vstupné tokeny $0.0028 / 1K tokenov
Výstup · Výstupné tokeny $0.0088 / 1K tokenov
Vstup · Čítanie cache $0.00052 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov
KonfiguráciaAnthropic Messages · Pásmo 1 podľa dĺžky požiadavkySadzobník—Počet tokenov kontextu väčší než0Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranicePoplatok
Vstup · Vstupné tokeny $0.0028 / 1K tokenov
Výstup · Výstupné tokeny $0.0088 / 1K tokenov
Vstup · Čítanie cache $0.00052 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov

Príklady požiadaviek

Ailoot · OpenAI Chat

Príklad textuPython SDKNode.js SDKStreamovanie v jazyku Python
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 source-material file}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "glm", "messages": []}')
f=Path(os.environ["AILOOT_TEXT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 source material")
text=f.read_text(encoding="utf-8")
if not text.strip():raise SystemExit("Source material must contain text")
p["messages"]=[{"role":"user","content":"Summarize this material and quote supporting source passages.\n\n"+text}]
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/chat/completions \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
print(json.dumps(json.loads(Path("result.json").read_text()),ensure_ascii=False,indent=2))
PY_RESULT
from openai import OpenAI
import os

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client = OpenAI(base_url="https://api.ailoot.ai/v1", api_key=os.environ["AILOOT_API_KEY"], max_retries=0)
resp = client.chat.completions.create(
    model="glm",
    messages=[{"role": "user", "content": "Explain the difference between an observation and a hypothesis in three sentences."}],
)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(resp.to_dict(mode="json"))
import OpenAI from "openai";

if (!process.env.AILOOT_API_KEY?.trim()) throw new Error("Set AILOOT_API_KEY before making a request");
const client = new OpenAI({ baseURL: "https://api.ailoot.ai/v1", apiKey: process.env.AILOOT_API_KEY, maxRetries: 0 });
const resp = await client.chat.completions.create({
  model: "glm",
  messages: [{ role: "user", content: "Explain the difference between an observation and a hypothesis in three sentences." }],
});
import { writeFileSync } from "node:fs";

function saveResult(data, stem = "result") {
  writeFileSync(stem + ".json", JSON.stringify(data, null, 2));
  console.log(JSON.stringify(data, null, 2));
  const saveBlob = (encoded, suffix, label) => {
    const raw = Buffer.from(encoded, "base64");
    const ext = raw.subarray(0,8).equals(Buffer.from([137,80,78,71,13,10,26,10])) ? "png" : raw[0]===255 && raw[1]===216 ? "jpg" : raw.subarray(0,4).toString()==="RIFF" && raw.subarray(8,12).toString()==="WEBP" ? "webp" : suffix;
    const file = `${stem}-${label}.${ext}`;
    writeFileSync(file, raw); console.log("Saved", file);
  };
  for (const [i, block] of (data.content || []).entries()) console.log("Content", i, JSON.stringify(block));
  for (const choice of data.choices || []) console.log("Choice", choice.index, JSON.stringify(choice.message || choice.delta || {}));
  for (const [i, item] of (data.output || []).entries()) {
    console.log("Output", i, JSON.stringify(item));
    if (item.type === "image_generation_call" && item.result) saveBlob(item.result, item.output_format || "bin", `output-${i}`);
  }
  for (const [ci, candidate] of (data.candidates || []).entries()) {
    for (const [pi, part] of (candidate.content?.parts || []).entries()) {
      console.log("Candidate/part", ci, pi, JSON.stringify(part));
      const blob = part.inlineData || part.inline_data;
      if (blob?.data) {
        const mime = blob.mimeType || blob.mime_type;
        const suffix = ({"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"})[mime] || "bin";
        saveBlob(blob.data, suffix, `candidate-${ci}-part-${pi}`);
      }
    }
  }
}

saveResult(resp);
from openai import OpenAI
import os
from pathlib import Path

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

with client.chat.completions.stream(model='glm',messages=[{"role":"user","content":"Explain observations and hypotheses in three sentences."}]) as stream:
    with Path("stream-events.jsonl").open("w",encoding="utf-8") as log:
        for event in stream:
            payload=event.to_dict(mode="json")
            log.write(json.dumps(payload,ensure_ascii=False)+"\n"); log.flush()
            print(json.dumps(payload,ensure_ascii=False))
    final=stream.get_final_completion()
    save_result(final.to_dict(mode="json"),"stream-result")

Prijať a uložiť výsledky

Ailoot · OpenAI Chat

json alebo SSE

Uchovať všetky dokončené výsledky

Uložte každú úplnú vrátenú odpoveď, súbor a časť obsahu.

Zachovajte každý variant odpovede a jeho obsah, volania nástrojov a uvažovanie. V SSE zostavujte čiastkové zmeny podľa indexu variantu/nástroja a zachovajte konečný dôvod ukončenia aj údaje o spotrebe.

Ak treba overiť pôvodnú odpoveď

Zachovajte ID požiadaviek/odpovedí aj hlavičky. Všeobecná URL na načítanie textovej úlohy nie je poskytnutá.

Polia odpovede
PoleTyp
Polechoices[].indexTypinteger
Polechoices[].message.contentTypstring|null
Polechoices[].message.tool_callsTyptool_call[]
Polechoices[].message.reasoning_contentTypstring
Polechoices[].message.reasoning_detailsTypobject|array
Polechoices[].finish_reasonTypstring|null
PoleusageTypobject
Chyby a ďalšie kroky
OdpoveďPodmienkaĎalší krok
Odpoveď400 · invalid_request_errorPodmienkaNeplatné povinné polia, reprezentácia materiálu alebo hodnota parametraĎalší krokPred novou požiadavkou na vytvorenie opravte uvedené polia.

Aliasy

Aliasy modelov

Ailoot glm-5.3, glm, glm-5, glm-5.1, glm-5.2, glm-latest
Ailoot Ultra glm-5.3, z-ai/glm-5.3, ~z-ai/glm-latest

Aliasy ciest metód

/chat/completions

Súvisiace ID na volanie

z-ai/glm-5.3, glm, glm-5, glm-5.1, glm-5.2, glm-latest, ~z-ai/glm-latest, glm-5.3, glm-5.3

Ailoot · Anthropic Messages POST /v1/messages glm-5

glm-5

Z.ai /glm-5
ID modelu
  • glm-5.3
  • glm
  • glm-5
  • glm-5.1
  • glm-5.2
  • glm-latest

Úvod

Z.ai GLM 5.3 je textový model na uvažovanie pre zložité softvérové inžinierstvo, prácu v termináli a agentov s dlhým horizontom úloh. Podporuje výrobcom zdokumentovaný kontext s rozsahom 1M tokenov, výstup až 128K tokenov, volanie funkcií a úsilie uvažovania low/high/max, pričom uvažovanie je zapnuté po celý čas.

Povolené vstupy
Text
Výsledky
Text

Dostupné v Ailoot · vstupy a metódy

Ailoot · Anthropic Messages POST /v1/messages
Vstup
text
Výstup
text
Kontext
1 000 000 tokens
Maximálny výstup
131 072 tokens
Výstupný formát
json alebo SSE
PoleTypPožiadavkaHodnoty a limityPredvolené
PolemodelTypstringPožiadavkaPovinnéHodnoty a limity
glm-5
Predvolené—
PolemessagesTypmessage[]PožiadavkaPovinnéHodnoty a limity
Minimálny počet položiek: 1
Predvolené—
Polemessages[].roleTypstringPožiadavkaPovinnéHodnoty a limity
user, assistant
Predvolené—
Polemessages[].contentTypstring|content_block[]PožiadavkaPovinnéHodnoty a limityPredvolené—
PolesystemTypstring|content_block[]PožiadavkaVoliteľnéHodnoty a limityPredvolené—
Polemax_tokensTypintegerPožiadavkaPovinnéHodnoty a limity
Minimum: 1
Limit sa vzťahuje na: presná horná hranica zvoleného modelu/karty
Predvolené—
PolestreamTypbooleanPožiadavkaVoliteľnéHodnoty a limityPredvolenéfalse
PoletemperatureTypnumberPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poletop_pTypnumberPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Polestop_sequencesTypstring[]PožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
PoletoolsTyptool[]PožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poletools[].nameTypstringPožiadavkaVoliteľnéHodnoty a limity
Platí, keď: poskytnutý nástroj
Predvolené—
Poletools[].descriptionTypstringPožiadavkaVoliteľnéHodnoty a limityPredvolené—
Poletools[].input_schemaTypJSON_schemaPožiadavkaVoliteľnéHodnoty a limityPredvolené—
Poletool_choiceTypobjectPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Polethinking.typeTypstringPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Polethinking.budget_tokensTypintegerPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poleoutput_config.effortTypstringPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
PolemetadataTypobjectPožiadavkaVoliteľnéHodnoty a limityPredvolené—
Polecache_controlTypobjectPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Kombinácie vstupných podkladov

Text · Text UTF8

messages[].content alebo blok type=text

Parametre a životný cyklus metódy
ParameterŠpecifikácia
Parametermaterial_typesŠpecifikáciatext
ParameterrequiredŠpecifikáciamodel, messages, max_tokens
Parameteroptional_controlsŠpecifikácianull
Parametercontent_typeŠpecifikáciaapplication/json
Parametertext_file_materialŠpecifikáciaskutočný obsah UTF-8 vložený ako text; ID súborov a URLs potrebujú samostatnú presne určenú podporu

Životný cyklus: exact retained published method

Štruktúry metód a ID sú presné; možnosti dodávateľa sa posudzujú oddelene od prijatia požiadavky.

Cenník

Sadzby metód Ailoot

Ailoot Anthropic MessagesPOST /v1/messages
Vstup
0,0014 USD / 1K
Výstup
0,0044 USD / 1K
Čítanie cache
≈0,00026 USD / 1K

Ailoot pred požiadavkou rezervuje odhadovanú sumu. Po získaní výsledku vyúčtuje konečný poplatok podľa nameraného využitia. Pri streamovaní sa vyúčtovanie riadi konečným záznamom využitia. Ako funguje rezervácia a vyúčtovanie →

Podrobnosti referenčnej tarify

Referenčné sadzobníky modelu nemenia výber metódy, cenové odhady ani poplatky. Aktívne poplatky používajú sadzby vybranej metódy Ailoot.

Referenčné sadzobníky modelu

Ceny podľa konfigurácie

Každý poplatok priraďte k zobrazeným podmienkam. Pre každú skupinu alternatívnych konfigurácií použite jednu sadzbu.

KonfiguráciaSadzobníkPočet tokenov kontextu väčší nežTokeny kontextu, najviac (vrátane hranice)Poplatok
KonfiguráciaOpenAI Chat · Základné sadzby za tokenySadzobníkZákladná sadzbaPočet tokenov kontextu väčší než—Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranicePoplatok
Vstup · Vstupné tokeny $0.0028 / 1K tokenov
Výstup · Výstupné tokeny $0.0088 / 1K tokenov
Vstup · Čítanie cache $0.00052 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov
KonfiguráciaOpenAI Chat · Pásmo 1 podľa dĺžky požiadavkySadzobník—Počet tokenov kontextu väčší než0Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranicePoplatok
Vstup · Vstupné tokeny $0.0028 / 1K tokenov
Výstup · Výstupné tokeny $0.0088 / 1K tokenov
Vstup · Čítanie cache $0.00052 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov
KonfiguráciaAnthropic Messages · Základné sadzby za tokenySadzobníkZákladná sadzbaPočet tokenov kontextu väčší než—Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranicePoplatok
Vstup · Vstupné tokeny $0.0028 / 1K tokenov
Výstup · Výstupné tokeny $0.0088 / 1K tokenov
Vstup · Čítanie cache $0.00052 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov
KonfiguráciaAnthropic Messages · Pásmo 1 podľa dĺžky požiadavkySadzobník—Počet tokenov kontextu väčší než0Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranicePoplatok
Vstup · Vstupné tokeny $0.0028 / 1K tokenov
Výstup · Výstupné tokeny $0.0088 / 1K tokenov
Vstup · Čítanie cache $0.00052 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov

Príklady požiadaviek

Ailoot · Anthropic Messages

Príklad textuPython SDKNode.js SDKStreamovanie v jazyku Python
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 source-material file}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "glm-5", "max_tokens": 1024, "messages": []}')
f=Path(os.environ["AILOOT_TEXT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 source material")
text=f.read_text(encoding="utf-8")
if not text.strip():raise SystemExit("Source material must contain text")
p["messages"]=[{"role":"user","content":"Summarize this material and quote supporting source passages.\n\n"+text}]
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/messages \
  -H "x-api-key: $AILOOT_API_KEY" -H 'anthropic-version: 2023-06-01' -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
print(json.dumps(json.loads(Path("result.json").read_text()),ensure_ascii=False,indent=2))
PY_RESULT
import anthropic
import os

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client = anthropic.Anthropic(base_url="https://api.ailoot.ai", api_key=os.environ["AILOOT_API_KEY"], max_retries=0)
msg = client.messages.create(
    model="glm-5",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Explain the difference between an observation and a hypothesis in three sentences."}],
)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(msg.to_dict(mode="json"))
import Anthropic from "@anthropic-ai/sdk";

if (!process.env.AILOOT_API_KEY?.trim()) throw new Error("Set AILOOT_API_KEY before making a request");
const client = new Anthropic({ baseURL: "https://api.ailoot.ai", apiKey: process.env.AILOOT_API_KEY, maxRetries: 0 });
const msg = await client.messages.create({
  model: "glm-5",
  max_tokens: 1024,
  messages: [{ role: "user", content: "Explain the difference between an observation and a hypothesis in three sentences." }],
});
import { writeFileSync } from "node:fs";

function saveResult(data, stem = "result") {
  writeFileSync(stem + ".json", JSON.stringify(data, null, 2));
  console.log(JSON.stringify(data, null, 2));
  const saveBlob = (encoded, suffix, label) => {
    const raw = Buffer.from(encoded, "base64");
    const ext = raw.subarray(0,8).equals(Buffer.from([137,80,78,71,13,10,26,10])) ? "png" : raw[0]===255 && raw[1]===216 ? "jpg" : raw.subarray(0,4).toString()==="RIFF" && raw.subarray(8,12).toString()==="WEBP" ? "webp" : suffix;
    const file = `${stem}-${label}.${ext}`;
    writeFileSync(file, raw); console.log("Saved", file);
  };
  for (const [i, block] of (data.content || []).entries()) console.log("Content", i, JSON.stringify(block));
  for (const choice of data.choices || []) console.log("Choice", choice.index, JSON.stringify(choice.message || choice.delta || {}));
  for (const [i, item] of (data.output || []).entries()) {
    console.log("Output", i, JSON.stringify(item));
    if (item.type === "image_generation_call" && item.result) saveBlob(item.result, item.output_format || "bin", `output-${i}`);
  }
  for (const [ci, candidate] of (data.candidates || []).entries()) {
    for (const [pi, part] of (candidate.content?.parts || []).entries()) {
      console.log("Candidate/part", ci, pi, JSON.stringify(part));
      const blob = part.inlineData || part.inline_data;
      if (blob?.data) {
        const mime = blob.mimeType || blob.mime_type;
        const suffix = ({"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"})[mime] || "bin";
        saveBlob(blob.data, suffix, `candidate-${ci}-part-${pi}`);
      }
    }
  }
}

saveResult(msg);
import anthropic,os
from pathlib import Path

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=anthropic.Anthropic(base_url="https://api.ailoot.ai",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

with client.messages.stream(model='glm-5',max_tokens=1024,messages=[{"role":"user","content":"Explain observations and hypotheses in three sentences."}]) as stream:
    with Path("stream-events.jsonl").open("w",encoding="utf-8") as log:
        for event in stream:
            payload=event.to_dict(mode="json")
            log.write(json.dumps(payload,ensure_ascii=False)+"\n"); log.flush()
            print(json.dumps(payload,ensure_ascii=False))
    final=stream.get_final_message()
    save_result(final.to_dict(mode="json"),"stream-result")

Prijať a uložiť výsledky

Ailoot · Anthropic Messages

json alebo SSE

Uchovať všetky dokončené výsledky

Uložte každú úplnú vrátenú odpoveď, súbor a časť obsahu.

Zachovajte všetky bloky obsahu, podpisy uvažovania a skutočné ID volaní nástrojov. Zostavte všetky čiastkové zmeny blokov SSE; prvý textový blok nie je celý výstup.

Ak treba overiť pôvodnú odpoveď

Zachovajte ID požiadaviek/odpovedí aj hlavičky. Všeobecná URL na načítanie textovej úlohy nie je poskytnutá.

Polia odpovede
PoleTyp
PoleidTypstring
PolemodelTypstring
Polecontent[]Typtext|thinking|tool_use|other content block
Polestop_reasonTypstring|null
PoleusageTypobject
Chyby a ďalšie kroky
OdpoveďPodmienkaĎalší krok
Odpoveď400 · invalid_request_errorPodmienkaNeplatné povinné polia, reprezentácia materiálu alebo hodnota parametraĎalší krokPred novou požiadavkou na vytvorenie opravte uvedené polia.

Aliasy

Aliasy modelov

Ailoot glm-5.3, glm, glm-5, glm-5.1, glm-5.2, glm-latest
Ailoot Ultra glm-5.3, z-ai/glm-5.3, ~z-ai/glm-latest

Aliasy ciest metód

/chat/completions

Súvisiace ID na volanie

z-ai/glm-5.3, glm, glm-5, glm-5.1, glm-5.2, glm-latest, ~z-ai/glm-latest, glm-5.3, glm-5.3

Ailoot · OpenAI Responses POST /v1/responses glm-5

glm-5

Z.ai /glm-5
ID modelu
  • glm-5.3
  • glm
  • glm-5
  • glm-5.1
  • glm-5.2
  • glm-latest

Úvod

Z.ai GLM 5.3 je textový model na uvažovanie pre zložité softvérové inžinierstvo, prácu v termináli a agentov s dlhým horizontom úloh. Podporuje výrobcom zdokumentovaný kontext s rozsahom 1M tokenov, výstup až 128K tokenov, volanie funkcií a úsilie uvažovania low/high/max, pričom uvažovanie je zapnuté po celý čas.

Povolené vstupy
Text
Výsledky
Text

Dostupné v Ailoot · vstupy a metódy

Ailoot · OpenAI Responses POST /v1/responses
Vstup
text
Výstup
text
Kontext
1 000 000 tokens
Maximálny výstup
131 072 tokens
Výstupný formát
json alebo SSE
PoleTypPožiadavkaHodnoty a limityPredvolené
PolemodelTypstringPožiadavkaPovinnéHodnoty a limity
glm-5
Predvolené—
PoleinputTypstring|input_item[]PožiadavkaPovinnéHodnoty a limityPredvolené—
PoleinstructionsTypstringPožiadavkaVoliteľnéHodnoty a limityPredvolené—
Poleinput[].typeTypstringPožiadavkaVoliteľnéHodnoty a limity
message, reasoning, function_call, function_call_output
Predvolené—
Poleinput[].contentTypstring|content_part[]PožiadavkaVoliteľnéHodnoty a limityPredvolené—
Poleinput[].call_idTypstringPožiadavkaVoliteľnéHodnoty a limity
Platí, keď: function_call_output; zachovajte skutočne vrátený call_id
Predvolené—
Poleinput[].outputTypstring|content_part[]PožiadavkaVoliteľnéHodnoty a limity
Platí, keď: function_call_output
Predvolené—
Polemax_output_tokensTypintegerPožiadavkaVoliteľnéHodnoty a limity
Minimum: 1
Závisí od modelu
Predvolené—
PolestreamTypbooleanPožiadavkaVoliteľnéHodnoty a limityPredvolenéfalse
PoletemperatureTypnumberPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poletop_pTypnumberPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
PoletoolsTyptool[]PožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poletool_choiceTypstring|objectPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poleparallel_tool_callsTypbooleanPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Polereasoning.effortTypstringPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Polereasoning.summaryTypstringPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poletext.formatTypobjectPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poletext.verbosityTypstringPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
PoleincludeTypstring[]PožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
PolestoreTypbooleanPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poleprevious_response_idTypstringPožiadavkaVoliteľnéHodnoty a limity
Požiadavka na ID: Len skutočné ID odpovede z podporovaného pokračovania
Závisí od modelu
Predvolené—
Poleservice_tierTypstringPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poleprompt_cache_keyTypstringPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poleprompt_cache_optionsTypobjectPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Kombinácie vstupných podkladov

Text · Text UTF8

vstupný text alebo časť input_text

Parametre a životný cyklus metódy
ParameterŠpecifikácia
Parametermaterial_typesŠpecifikáciatext
ParameterrequiredŠpecifikáciamodel, input
Parameteroptional_controlsŠpecifikácianull
Parametercontent_typeŠpecifikáciaapplication/json
Parametertext_file_materialŠpecifikáciaskutočný obsah UTF-8 vložený ako text; ID súborov a URLs potrebujú samostatnú presne určenú podporu

Životný cyklus: exact retained published method

Štruktúry metód a ID sú presné; možnosti dodávateľa sa posudzujú oddelene od prijatia požiadavky.

Cenník

Sadzby metód Ailoot

Ailoot OpenAI ResponsesPOST /v1/responses
Vstup
0,0014 USD / 1K
Výstup
0,0044 USD / 1K
Čítanie cache
≈0,00026 USD / 1K

Ailoot pred požiadavkou rezervuje odhadovanú sumu. Po získaní výsledku vyúčtuje konečný poplatok podľa nameraného využitia. Pri streamovaní sa vyúčtovanie riadi konečným záznamom využitia. Ako funguje rezervácia a vyúčtovanie →

Podrobnosti referenčnej tarify

Referenčné sadzobníky modelu nemenia výber metódy, cenové odhady ani poplatky. Aktívne poplatky používajú sadzby vybranej metódy Ailoot.

Referenčné sadzobníky modelu

Ceny podľa konfigurácie

Každý poplatok priraďte k zobrazeným podmienkam. Pre každú skupinu alternatívnych konfigurácií použite jednu sadzbu.

KonfiguráciaSadzobníkPočet tokenov kontextu väčší nežTokeny kontextu, najviac (vrátane hranice)Poplatok
KonfiguráciaOpenAI Chat · Základné sadzby za tokenySadzobníkZákladná sadzbaPočet tokenov kontextu väčší než—Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranicePoplatok
Vstup · Vstupné tokeny $0.0028 / 1K tokenov
Výstup · Výstupné tokeny $0.0088 / 1K tokenov
Vstup · Čítanie cache $0.00052 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov
KonfiguráciaOpenAI Chat · Pásmo 1 podľa dĺžky požiadavkySadzobník—Počet tokenov kontextu väčší než0Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranicePoplatok
Vstup · Vstupné tokeny $0.0028 / 1K tokenov
Výstup · Výstupné tokeny $0.0088 / 1K tokenov
Vstup · Čítanie cache $0.00052 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov
KonfiguráciaAnthropic Messages · Základné sadzby za tokenySadzobníkZákladná sadzbaPočet tokenov kontextu väčší než—Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranicePoplatok
Vstup · Vstupné tokeny $0.0028 / 1K tokenov
Výstup · Výstupné tokeny $0.0088 / 1K tokenov
Vstup · Čítanie cache $0.00052 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov
KonfiguráciaAnthropic Messages · Pásmo 1 podľa dĺžky požiadavkySadzobník—Počet tokenov kontextu väčší než0Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranicePoplatok
Vstup · Vstupné tokeny $0.0028 / 1K tokenov
Výstup · Výstupné tokeny $0.0088 / 1K tokenov
Vstup · Čítanie cache $0.00052 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov

Príklady požiadaviek

Ailoot · OpenAI Responses

Príklad textuPython SDKNode.js SDKStreamovanie v jazyku Python
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 source-material file}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "glm-5", "input": ""}')
f=Path(os.environ["AILOOT_TEXT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 source material")
text=f.read_text(encoding="utf-8")
if not text.strip():raise SystemExit("Source material must contain text")
p["input"]="Summarize this material and quote supporting source passages.\n\n"+text
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/responses \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(json.loads(Path("result.json").read_text(encoding="utf-8")))
PY_RESULT
from openai import OpenAI
import os

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client = OpenAI(base_url="https://api.ailoot.ai/v1", api_key=os.environ["AILOOT_API_KEY"], max_retries=0)
resp = client.responses.create(model="glm-5", input="Explain the difference between an observation and a hypothesis in three sentences.")
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(resp.to_dict(mode="json"))
import OpenAI from "openai";

if (!process.env.AILOOT_API_KEY?.trim()) throw new Error("Set AILOOT_API_KEY before making a request");
const client = new OpenAI({ baseURL: "https://api.ailoot.ai/v1", apiKey: process.env.AILOOT_API_KEY, maxRetries: 0 });
const resp = await client.responses.create({ model: "glm-5", input: "Explain the difference between an observation and a hypothesis in three sentences." });
import { writeFileSync } from "node:fs";

function saveResult(data, stem = "result") {
  writeFileSync(stem + ".json", JSON.stringify(data, null, 2));
  console.log(JSON.stringify(data, null, 2));
  const saveBlob = (encoded, suffix, label) => {
    const raw = Buffer.from(encoded, "base64");
    const ext = raw.subarray(0,8).equals(Buffer.from([137,80,78,71,13,10,26,10])) ? "png" : raw[0]===255 && raw[1]===216 ? "jpg" : raw.subarray(0,4).toString()==="RIFF" && raw.subarray(8,12).toString()==="WEBP" ? "webp" : suffix;
    const file = `${stem}-${label}.${ext}`;
    writeFileSync(file, raw); console.log("Saved", file);
  };
  for (const [i, block] of (data.content || []).entries()) console.log("Content", i, JSON.stringify(block));
  for (const choice of data.choices || []) console.log("Choice", choice.index, JSON.stringify(choice.message || choice.delta || {}));
  for (const [i, item] of (data.output || []).entries()) {
    console.log("Output", i, JSON.stringify(item));
    if (item.type === "image_generation_call" && item.result) saveBlob(item.result, item.output_format || "bin", `output-${i}`);
  }
  for (const [ci, candidate] of (data.candidates || []).entries()) {
    for (const [pi, part] of (candidate.content?.parts || []).entries()) {
      console.log("Candidate/part", ci, pi, JSON.stringify(part));
      const blob = part.inlineData || part.inline_data;
      if (blob?.data) {
        const mime = blob.mimeType || blob.mime_type;
        const suffix = ({"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"})[mime] || "bin";
        saveBlob(blob.data, suffix, `candidate-${ci}-part-${pi}`);
      }
    }
  }
}

saveResult(resp);
from openai import OpenAI
import os
from pathlib import Path
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
with client.responses.stream(model="glm-5", input="Explain the difference between an observation and a hypothesis in three sentences.") as stream:
    with Path("stream-events.jsonl").open("w",encoding="utf-8") as log:
        for event in stream:
            payload=event.to_dict(mode="json")
            log.write(json.dumps(payload,ensure_ascii=False)+"\n"); log.flush()
            print(json.dumps(payload,ensure_ascii=False))
    final=stream.get_final_response()
    save_result(final.to_dict(mode="json"),"stream-result")

Prijať a uložiť výsledky

Ailoot · OpenAI Responses

json alebo SSE

Uchovať všetky dokončené výsledky

Uložte každú úplnú vrátenú odpoveď, súbor a časť obsahu.

Zachovajte každú výstupnú položku a časť obsahu, skutočný call_id funkcie, šifrované uvažovanie a údaje o spotrebe. Pri streamovaní zachovajte úplné identifikačné údaje udalostí a položiek.

Ak treba overiť pôvodnú odpoveď

Zachovajte ID požiadaviek/odpovedí aj hlavičky. Všeobecná URL na načítanie textovej úlohy nie je poskytnutá.

Polia odpovede
PoleTyp
PoleidTypstring
PolestatusTypstring
Poleoutput[]Typmessage|reasoning|function_call|other item
Poleoutput[].content[]Typcontent part
PoleusageTypobject
Chyby a ďalšie kroky
OdpoveďPodmienkaĎalší krok
Odpoveď400 · invalid_request_errorPodmienkaNeplatné povinné polia, reprezentácia materiálu alebo hodnota parametraĎalší krokPred novou požiadavkou na vytvorenie opravte uvedené polia.

Aliasy

Aliasy modelov

Ailoot glm-5.3, glm, glm-5, glm-5.1, glm-5.2, glm-latest
Ailoot Ultra glm-5.3, z-ai/glm-5.3, ~z-ai/glm-latest

Aliasy ciest metód

/chat/completions

Súvisiace ID na volanie

z-ai/glm-5.3, glm, glm-5, glm-5.1, glm-5.2, glm-latest, ~z-ai/glm-latest, glm-5.3, glm-5.3

Ailoot · OpenAI Chat POST /v1/chat/completions glm-5

glm-5

Z.ai /glm-5
ID modelu
  • glm-5.3
  • glm
  • glm-5
  • glm-5.1
  • glm-5.2
  • glm-latest

Úvod

Z.ai GLM 5.3 je textový model na uvažovanie pre zložité softvérové inžinierstvo, prácu v termináli a agentov s dlhým horizontom úloh. Podporuje výrobcom zdokumentovaný kontext s rozsahom 1M tokenov, výstup až 128K tokenov, volanie funkcií a úsilie uvažovania low/high/max, pričom uvažovanie je zapnuté po celý čas.

Povolené vstupy
Text
Výsledky
Text

Dostupné v Ailoot · vstupy a metódy

Ailoot · OpenAI Chat POST /v1/chat/completions
Vstup
text
Výstup
text
Kontext
1 000 000 tokens
Maximálny výstup
131 072 tokens
Výstupný formát
json alebo SSE
PoleTypPožiadavkaHodnoty a limityPredvolené
PolemodelTypstringPožiadavkaPovinnéHodnoty a limity
glm-5
Predvolené—
PolemessagesTypmessage[]PožiadavkaPovinnéHodnoty a limity
Minimálny počet položiek: 1
Predvolené—
Polemessages[].roleTypstringPožiadavkaPovinnéHodnoty a limity
Príklady: system, user, assistant, tool, function
Podmienky: Tieto roly sú výslovne zastúpené typmi kompatibility v zdrojovom kóde; presný súbor rolí zostáva závislý od modelu.
Závisí od modelu
Predvolené—
Polemessages[].contentTypstring|content_part[]|nullPožiadavkaVoliteľnéHodnoty a limityPredvolené—
Polemessages[].tool_callsTyptool_call[]PožiadavkaVoliteľnéHodnoty a limityPredvolené—
Polemessages[].tool_call_idTypstringPožiadavkaVoliteľnéHodnoty a limity
Platí, keď: role=tool; použite skutočne vrátené ID
Predvolené—
Polemessages[].nameTypstringPožiadavkaVoliteľnéHodnoty a limityPredvolené—
Polemessages[].reasoning_contentTypstringPožiadavkaVoliteľnéHodnoty a limity
Platí, keď: Posielajte späť skutočne vrátené uvažovanie, ak ho tento model používa
Predvolené—
Polemessages[].reasoning_detailsTypobject|arrayPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Polemax_tokensTypintegerPožiadavkaVoliteľnéHodnoty a limity
Minimum: 1
Závisí od modelu
Predvolené—
Polemax_completion_tokensTypintegerPožiadavkaVoliteľnéHodnoty a limity
Minimum: 1
Závisí od modelu
Predvolené—
PolestreamTypbooleanPožiadavkaVoliteľnéHodnoty a limityPredvolenéfalse
Polestream_options.include_usageTypbooleanPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
PoletemperatureTypnumberPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poletop_pTypnumberPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
PolestopTypstring|string[]PožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
PoletoolsTypfunction_tool[]PožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poletools[].typeTypstringPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poletools[].function.nameTypstringPožiadavkaPovinnéHodnoty a limity
Platí, keď: poskytnutý nástroj typu funkcia
Predvolené—
Poletools[].function.descriptionTypstringPožiadavkaVoliteľnéHodnoty a limityPredvolené—
Poletools[].function.parametersTypJSON_schemaPožiadavkaVoliteľnéHodnoty a limityPredvolené—
Poletool_choiceTypstring|objectPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poleparallel_tool_callsTypbooleanPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poleresponse_formatTypobjectPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Polereasoning_effortTypstringPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
PolereasoningTypobjectPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poleservice_tierTypstringPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
PoleinstructionsTypstringPožiadavkaVoliteľnéHodnoty a limity
Pole kompatibility
Predvolené—
PolefunctionsTypfunction[]PožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Polefunction_callTypstring|objectPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poleprompt_cache_optionsTypobjectPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Kombinácie vstupných podkladov

Text · Text UTF8

messages[].content

Parametre a životný cyklus metódy
ParameterŠpecifikácia
Parametermaterial_typesŠpecifikáciatext
ParameterrequiredŠpecifikáciamodel, messages
Parameteroptional_controlsŠpecifikácianull
Parametercontent_typeŠpecifikáciaapplication/json
Parametertext_file_materialŠpecifikáciaskutočný obsah UTF-8 vložený ako text; ID súborov a URLs potrebujú samostatnú presne určenú podporu

Životný cyklus: exact retained published method

Štruktúry metód a ID sú presné; možnosti dodávateľa sa posudzujú oddelene od prijatia požiadavky.

Cenník

Sadzby metód Ailoot

Ailoot OpenAI ChatPOST /v1/chat/completions
Vstup
0,0014 USD / 1K
Výstup
0,0044 USD / 1K
Čítanie cache
≈0,00026 USD / 1K

Ailoot pred požiadavkou rezervuje odhadovanú sumu. Po získaní výsledku vyúčtuje konečný poplatok podľa nameraného využitia. Pri streamovaní sa vyúčtovanie riadi konečným záznamom využitia. Ako funguje rezervácia a vyúčtovanie →

Podrobnosti referenčnej tarify

Referenčné sadzobníky modelu nemenia výber metódy, cenové odhady ani poplatky. Aktívne poplatky používajú sadzby vybranej metódy Ailoot.

Referenčné sadzobníky modelu

Ceny podľa konfigurácie

Každý poplatok priraďte k zobrazeným podmienkam. Pre každú skupinu alternatívnych konfigurácií použite jednu sadzbu.

KonfiguráciaSadzobníkPočet tokenov kontextu väčší nežTokeny kontextu, najviac (vrátane hranice)Poplatok
KonfiguráciaOpenAI Chat · Základné sadzby za tokenySadzobníkZákladná sadzbaPočet tokenov kontextu väčší než—Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranicePoplatok
Vstup · Vstupné tokeny $0.0028 / 1K tokenov
Výstup · Výstupné tokeny $0.0088 / 1K tokenov
Vstup · Čítanie cache $0.00052 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov
KonfiguráciaOpenAI Chat · Pásmo 1 podľa dĺžky požiadavkySadzobník—Počet tokenov kontextu väčší než0Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranicePoplatok
Vstup · Vstupné tokeny $0.0028 / 1K tokenov
Výstup · Výstupné tokeny $0.0088 / 1K tokenov
Vstup · Čítanie cache $0.00052 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov
KonfiguráciaAnthropic Messages · Základné sadzby za tokenySadzobníkZákladná sadzbaPočet tokenov kontextu väčší než—Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranicePoplatok
Vstup · Vstupné tokeny $0.0028 / 1K tokenov
Výstup · Výstupné tokeny $0.0088 / 1K tokenov
Vstup · Čítanie cache $0.00052 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov
KonfiguráciaAnthropic Messages · Pásmo 1 podľa dĺžky požiadavkySadzobník—Počet tokenov kontextu väčší než0Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranicePoplatok
Vstup · Vstupné tokeny $0.0028 / 1K tokenov
Výstup · Výstupné tokeny $0.0088 / 1K tokenov
Vstup · Čítanie cache $0.00052 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov

Príklady požiadaviek

Ailoot · OpenAI Chat

Príklad textuPython SDKNode.js SDKStreamovanie v jazyku Python
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 source-material file}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "glm-5", "messages": []}')
f=Path(os.environ["AILOOT_TEXT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 source material")
text=f.read_text(encoding="utf-8")
if not text.strip():raise SystemExit("Source material must contain text")
p["messages"]=[{"role":"user","content":"Summarize this material and quote supporting source passages.\n\n"+text}]
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/chat/completions \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
print(json.dumps(json.loads(Path("result.json").read_text()),ensure_ascii=False,indent=2))
PY_RESULT
from openai import OpenAI
import os

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client = OpenAI(base_url="https://api.ailoot.ai/v1", api_key=os.environ["AILOOT_API_KEY"], max_retries=0)
resp = client.chat.completions.create(
    model="glm-5",
    messages=[{"role": "user", "content": "Explain the difference between an observation and a hypothesis in three sentences."}],
)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(resp.to_dict(mode="json"))
import OpenAI from "openai";

if (!process.env.AILOOT_API_KEY?.trim()) throw new Error("Set AILOOT_API_KEY before making a request");
const client = new OpenAI({ baseURL: "https://api.ailoot.ai/v1", apiKey: process.env.AILOOT_API_KEY, maxRetries: 0 });
const resp = await client.chat.completions.create({
  model: "glm-5",
  messages: [{ role: "user", content: "Explain the difference between an observation and a hypothesis in three sentences." }],
});
import { writeFileSync } from "node:fs";

function saveResult(data, stem = "result") {
  writeFileSync(stem + ".json", JSON.stringify(data, null, 2));
  console.log(JSON.stringify(data, null, 2));
  const saveBlob = (encoded, suffix, label) => {
    const raw = Buffer.from(encoded, "base64");
    const ext = raw.subarray(0,8).equals(Buffer.from([137,80,78,71,13,10,26,10])) ? "png" : raw[0]===255 && raw[1]===216 ? "jpg" : raw.subarray(0,4).toString()==="RIFF" && raw.subarray(8,12).toString()==="WEBP" ? "webp" : suffix;
    const file = `${stem}-${label}.${ext}`;
    writeFileSync(file, raw); console.log("Saved", file);
  };
  for (const [i, block] of (data.content || []).entries()) console.log("Content", i, JSON.stringify(block));
  for (const choice of data.choices || []) console.log("Choice", choice.index, JSON.stringify(choice.message || choice.delta || {}));
  for (const [i, item] of (data.output || []).entries()) {
    console.log("Output", i, JSON.stringify(item));
    if (item.type === "image_generation_call" && item.result) saveBlob(item.result, item.output_format || "bin", `output-${i}`);
  }
  for (const [ci, candidate] of (data.candidates || []).entries()) {
    for (const [pi, part] of (candidate.content?.parts || []).entries()) {
      console.log("Candidate/part", ci, pi, JSON.stringify(part));
      const blob = part.inlineData || part.inline_data;
      if (blob?.data) {
        const mime = blob.mimeType || blob.mime_type;
        const suffix = ({"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"})[mime] || "bin";
        saveBlob(blob.data, suffix, `candidate-${ci}-part-${pi}`);
      }
    }
  }
}

saveResult(resp);
from openai import OpenAI
import os
from pathlib import Path

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

with client.chat.completions.stream(model='glm-5',messages=[{"role":"user","content":"Explain observations and hypotheses in three sentences."}]) as stream:
    with Path("stream-events.jsonl").open("w",encoding="utf-8") as log:
        for event in stream:
            payload=event.to_dict(mode="json")
            log.write(json.dumps(payload,ensure_ascii=False)+"\n"); log.flush()
            print(json.dumps(payload,ensure_ascii=False))
    final=stream.get_final_completion()
    save_result(final.to_dict(mode="json"),"stream-result")

Prijať a uložiť výsledky

Ailoot · OpenAI Chat

json alebo SSE

Uchovať všetky dokončené výsledky

Uložte každú úplnú vrátenú odpoveď, súbor a časť obsahu.

Zachovajte každý variant odpovede a jeho obsah, volania nástrojov a uvažovanie. V SSE zostavujte čiastkové zmeny podľa indexu variantu/nástroja a zachovajte konečný dôvod ukončenia aj údaje o spotrebe.

Ak treba overiť pôvodnú odpoveď

Zachovajte ID požiadaviek/odpovedí aj hlavičky. Všeobecná URL na načítanie textovej úlohy nie je poskytnutá.

Polia odpovede
PoleTyp
Polechoices[].indexTypinteger
Polechoices[].message.contentTypstring|null
Polechoices[].message.tool_callsTyptool_call[]
Polechoices[].message.reasoning_contentTypstring
Polechoices[].message.reasoning_detailsTypobject|array
Polechoices[].finish_reasonTypstring|null
PoleusageTypobject
Chyby a ďalšie kroky
OdpoveďPodmienkaĎalší krok
Odpoveď400 · invalid_request_errorPodmienkaNeplatné povinné polia, reprezentácia materiálu alebo hodnota parametraĎalší krokPred novou požiadavkou na vytvorenie opravte uvedené polia.

Aliasy

Aliasy modelov

Ailoot glm-5.3, glm, glm-5, glm-5.1, glm-5.2, glm-latest
Ailoot Ultra glm-5.3, z-ai/glm-5.3, ~z-ai/glm-latest

Aliasy ciest metód

/chat/completions

Súvisiace ID na volanie

z-ai/glm-5.3, glm, glm-5, glm-5.1, glm-5.2, glm-latest, ~z-ai/glm-latest, glm-5.3, glm-5.3

Ailoot · Anthropic Messages POST /v1/messages glm-5.1

glm-5.1

Z.ai /glm-5.1
ID modelu
  • glm-5.3
  • glm
  • glm-5
  • glm-5.1
  • glm-5.2
  • glm-latest

Úvod

Z.ai GLM 5.3 je textový model na uvažovanie pre zložité softvérové inžinierstvo, prácu v termináli a agentov s dlhým horizontom úloh. Podporuje výrobcom zdokumentovaný kontext s rozsahom 1M tokenov, výstup až 128K tokenov, volanie funkcií a úsilie uvažovania low/high/max, pričom uvažovanie je zapnuté po celý čas.

Povolené vstupy
Text
Výsledky
Text

Dostupné v Ailoot · vstupy a metódy

Ailoot · Anthropic Messages POST /v1/messages
Vstup
text
Výstup
text
Kontext
1 000 000 tokens
Maximálny výstup
131 072 tokens
Výstupný formát
json alebo SSE
PoleTypPožiadavkaHodnoty a limityPredvolené
PolemodelTypstringPožiadavkaPovinnéHodnoty a limity
glm-5.1
Predvolené—
PolemessagesTypmessage[]PožiadavkaPovinnéHodnoty a limity
Minimálny počet položiek: 1
Predvolené—
Polemessages[].roleTypstringPožiadavkaPovinnéHodnoty a limity
user, assistant
Predvolené—
Polemessages[].contentTypstring|content_block[]PožiadavkaPovinnéHodnoty a limityPredvolené—
PolesystemTypstring|content_block[]PožiadavkaVoliteľnéHodnoty a limityPredvolené—
Polemax_tokensTypintegerPožiadavkaPovinnéHodnoty a limity
Minimum: 1
Limit sa vzťahuje na: presná horná hranica zvoleného modelu/karty
Predvolené—
PolestreamTypbooleanPožiadavkaVoliteľnéHodnoty a limityPredvolenéfalse
PoletemperatureTypnumberPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poletop_pTypnumberPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Polestop_sequencesTypstring[]PožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
PoletoolsTyptool[]PožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poletools[].nameTypstringPožiadavkaVoliteľnéHodnoty a limity
Platí, keď: poskytnutý nástroj
Predvolené—
Poletools[].descriptionTypstringPožiadavkaVoliteľnéHodnoty a limityPredvolené—
Poletools[].input_schemaTypJSON_schemaPožiadavkaVoliteľnéHodnoty a limityPredvolené—
Poletool_choiceTypobjectPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Polethinking.typeTypstringPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Polethinking.budget_tokensTypintegerPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poleoutput_config.effortTypstringPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
PolemetadataTypobjectPožiadavkaVoliteľnéHodnoty a limityPredvolené—
Polecache_controlTypobjectPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Kombinácie vstupných podkladov

Text · Text UTF8

messages[].content alebo blok type=text

Parametre a životný cyklus metódy
ParameterŠpecifikácia
Parametermaterial_typesŠpecifikáciatext
ParameterrequiredŠpecifikáciamodel, messages, max_tokens
Parameteroptional_controlsŠpecifikácianull
Parametercontent_typeŠpecifikáciaapplication/json
Parametertext_file_materialŠpecifikáciaskutočný obsah UTF-8 vložený ako text; ID súborov a URLs potrebujú samostatnú presne určenú podporu

Životný cyklus: exact retained published method

Štruktúry metód a ID sú presné; možnosti dodávateľa sa posudzujú oddelene od prijatia požiadavky.

Cenník

Sadzby metód Ailoot

Ailoot Anthropic MessagesPOST /v1/messages
Vstup
0,0014 USD / 1K
Výstup
0,0044 USD / 1K
Čítanie cache
≈0,00026 USD / 1K

Ailoot pred požiadavkou rezervuje odhadovanú sumu. Po získaní výsledku vyúčtuje konečný poplatok podľa nameraného využitia. Pri streamovaní sa vyúčtovanie riadi konečným záznamom využitia. Ako funguje rezervácia a vyúčtovanie →

Podrobnosti referenčnej tarify

Referenčné sadzobníky modelu nemenia výber metódy, cenové odhady ani poplatky. Aktívne poplatky používajú sadzby vybranej metódy Ailoot.

Referenčné sadzobníky modelu

Ceny podľa konfigurácie

Každý poplatok priraďte k zobrazeným podmienkam. Pre každú skupinu alternatívnych konfigurácií použite jednu sadzbu.

KonfiguráciaSadzobníkPočet tokenov kontextu väčší nežTokeny kontextu, najviac (vrátane hranice)Poplatok
KonfiguráciaOpenAI Chat · Základné sadzby za tokenySadzobníkZákladná sadzbaPočet tokenov kontextu väčší než—Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranicePoplatok
Vstup · Vstupné tokeny $0.0028 / 1K tokenov
Výstup · Výstupné tokeny $0.0088 / 1K tokenov
Vstup · Čítanie cache $0.00052 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov
KonfiguráciaOpenAI Chat · Pásmo 1 podľa dĺžky požiadavkySadzobník—Počet tokenov kontextu väčší než0Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranicePoplatok
Vstup · Vstupné tokeny $0.0028 / 1K tokenov
Výstup · Výstupné tokeny $0.0088 / 1K tokenov
Vstup · Čítanie cache $0.00052 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov
KonfiguráciaAnthropic Messages · Základné sadzby za tokenySadzobníkZákladná sadzbaPočet tokenov kontextu väčší než—Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranicePoplatok
Vstup · Vstupné tokeny $0.0028 / 1K tokenov
Výstup · Výstupné tokeny $0.0088 / 1K tokenov
Vstup · Čítanie cache $0.00052 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov
KonfiguráciaAnthropic Messages · Pásmo 1 podľa dĺžky požiadavkySadzobník—Počet tokenov kontextu väčší než0Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranicePoplatok
Vstup · Vstupné tokeny $0.0028 / 1K tokenov
Výstup · Výstupné tokeny $0.0088 / 1K tokenov
Vstup · Čítanie cache $0.00052 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov

Príklady požiadaviek

Ailoot · Anthropic Messages

Príklad textuPython SDKNode.js SDKStreamovanie v jazyku Python
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 source-material file}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "glm-5.1", "max_tokens": 1024, "messages": []}')
f=Path(os.environ["AILOOT_TEXT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 source material")
text=f.read_text(encoding="utf-8")
if not text.strip():raise SystemExit("Source material must contain text")
p["messages"]=[{"role":"user","content":"Summarize this material and quote supporting source passages.\n\n"+text}]
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/messages \
  -H "x-api-key: $AILOOT_API_KEY" -H 'anthropic-version: 2023-06-01' -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
print(json.dumps(json.loads(Path("result.json").read_text()),ensure_ascii=False,indent=2))
PY_RESULT
import anthropic
import os

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client = anthropic.Anthropic(base_url="https://api.ailoot.ai", api_key=os.environ["AILOOT_API_KEY"], max_retries=0)
msg = client.messages.create(
    model="glm-5.1",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Explain the difference between an observation and a hypothesis in three sentences."}],
)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(msg.to_dict(mode="json"))
import Anthropic from "@anthropic-ai/sdk";

if (!process.env.AILOOT_API_KEY?.trim()) throw new Error("Set AILOOT_API_KEY before making a request");
const client = new Anthropic({ baseURL: "https://api.ailoot.ai", apiKey: process.env.AILOOT_API_KEY, maxRetries: 0 });
const msg = await client.messages.create({
  model: "glm-5.1",
  max_tokens: 1024,
  messages: [{ role: "user", content: "Explain the difference between an observation and a hypothesis in three sentences." }],
});
import { writeFileSync } from "node:fs";

function saveResult(data, stem = "result") {
  writeFileSync(stem + ".json", JSON.stringify(data, null, 2));
  console.log(JSON.stringify(data, null, 2));
  const saveBlob = (encoded, suffix, label) => {
    const raw = Buffer.from(encoded, "base64");
    const ext = raw.subarray(0,8).equals(Buffer.from([137,80,78,71,13,10,26,10])) ? "png" : raw[0]===255 && raw[1]===216 ? "jpg" : raw.subarray(0,4).toString()==="RIFF" && raw.subarray(8,12).toString()==="WEBP" ? "webp" : suffix;
    const file = `${stem}-${label}.${ext}`;
    writeFileSync(file, raw); console.log("Saved", file);
  };
  for (const [i, block] of (data.content || []).entries()) console.log("Content", i, JSON.stringify(block));
  for (const choice of data.choices || []) console.log("Choice", choice.index, JSON.stringify(choice.message || choice.delta || {}));
  for (const [i, item] of (data.output || []).entries()) {
    console.log("Output", i, JSON.stringify(item));
    if (item.type === "image_generation_call" && item.result) saveBlob(item.result, item.output_format || "bin", `output-${i}`);
  }
  for (const [ci, candidate] of (data.candidates || []).entries()) {
    for (const [pi, part] of (candidate.content?.parts || []).entries()) {
      console.log("Candidate/part", ci, pi, JSON.stringify(part));
      const blob = part.inlineData || part.inline_data;
      if (blob?.data) {
        const mime = blob.mimeType || blob.mime_type;
        const suffix = ({"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"})[mime] || "bin";
        saveBlob(blob.data, suffix, `candidate-${ci}-part-${pi}`);
      }
    }
  }
}

saveResult(msg);
import anthropic,os
from pathlib import Path

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=anthropic.Anthropic(base_url="https://api.ailoot.ai",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

with client.messages.stream(model='glm-5.1',max_tokens=1024,messages=[{"role":"user","content":"Explain observations and hypotheses in three sentences."}]) as stream:
    with Path("stream-events.jsonl").open("w",encoding="utf-8") as log:
        for event in stream:
            payload=event.to_dict(mode="json")
            log.write(json.dumps(payload,ensure_ascii=False)+"\n"); log.flush()
            print(json.dumps(payload,ensure_ascii=False))
    final=stream.get_final_message()
    save_result(final.to_dict(mode="json"),"stream-result")

Prijať a uložiť výsledky

Ailoot · Anthropic Messages

json alebo SSE

Uchovať všetky dokončené výsledky

Uložte každú úplnú vrátenú odpoveď, súbor a časť obsahu.

Zachovajte všetky bloky obsahu, podpisy uvažovania a skutočné ID volaní nástrojov. Zostavte všetky čiastkové zmeny blokov SSE; prvý textový blok nie je celý výstup.

Ak treba overiť pôvodnú odpoveď

Zachovajte ID požiadaviek/odpovedí aj hlavičky. Všeobecná URL na načítanie textovej úlohy nie je poskytnutá.

Polia odpovede
PoleTyp
PoleidTypstring
PolemodelTypstring
Polecontent[]Typtext|thinking|tool_use|other content block
Polestop_reasonTypstring|null
PoleusageTypobject
Chyby a ďalšie kroky
OdpoveďPodmienkaĎalší krok
Odpoveď400 · invalid_request_errorPodmienkaNeplatné povinné polia, reprezentácia materiálu alebo hodnota parametraĎalší krokPred novou požiadavkou na vytvorenie opravte uvedené polia.

Aliasy

Aliasy modelov

Ailoot glm-5.3, glm, glm-5, glm-5.1, glm-5.2, glm-latest
Ailoot Ultra glm-5.3, z-ai/glm-5.3, ~z-ai/glm-latest

Aliasy ciest metód

/chat/completions

Súvisiace ID na volanie

z-ai/glm-5.3, glm, glm-5, glm-5.1, glm-5.2, glm-latest, ~z-ai/glm-latest, glm-5.3, glm-5.3

Ailoot · OpenAI Responses POST /v1/responses glm-5.1

glm-5.1

Z.ai /glm-5.1
ID modelu
  • glm-5.3
  • glm
  • glm-5
  • glm-5.1
  • glm-5.2
  • glm-latest

Úvod

Z.ai GLM 5.3 je textový model na uvažovanie pre zložité softvérové inžinierstvo, prácu v termináli a agentov s dlhým horizontom úloh. Podporuje výrobcom zdokumentovaný kontext s rozsahom 1M tokenov, výstup až 128K tokenov, volanie funkcií a úsilie uvažovania low/high/max, pričom uvažovanie je zapnuté po celý čas.

Povolené vstupy
Text
Výsledky
Text

Dostupné v Ailoot · vstupy a metódy

Ailoot · OpenAI Responses POST /v1/responses
Vstup
text
Výstup
text
Kontext
1 000 000 tokens
Maximálny výstup
131 072 tokens
Výstupný formát
json alebo SSE
PoleTypPožiadavkaHodnoty a limityPredvolené
PolemodelTypstringPožiadavkaPovinnéHodnoty a limity
glm-5.1
Predvolené—
PoleinputTypstring|input_item[]PožiadavkaPovinnéHodnoty a limityPredvolené—
PoleinstructionsTypstringPožiadavkaVoliteľnéHodnoty a limityPredvolené—
Poleinput[].typeTypstringPožiadavkaVoliteľnéHodnoty a limity
message, reasoning, function_call, function_call_output
Predvolené—
Poleinput[].contentTypstring|content_part[]PožiadavkaVoliteľnéHodnoty a limityPredvolené—
Poleinput[].call_idTypstringPožiadavkaVoliteľnéHodnoty a limity
Platí, keď: function_call_output; zachovajte skutočne vrátený call_id
Predvolené—
Poleinput[].outputTypstring|content_part[]PožiadavkaVoliteľnéHodnoty a limity
Platí, keď: function_call_output
Predvolené—
Polemax_output_tokensTypintegerPožiadavkaVoliteľnéHodnoty a limity
Minimum: 1
Závisí od modelu
Predvolené—
PolestreamTypbooleanPožiadavkaVoliteľnéHodnoty a limityPredvolenéfalse
PoletemperatureTypnumberPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poletop_pTypnumberPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
PoletoolsTyptool[]PožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poletool_choiceTypstring|objectPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poleparallel_tool_callsTypbooleanPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Polereasoning.effortTypstringPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Polereasoning.summaryTypstringPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poletext.formatTypobjectPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poletext.verbosityTypstringPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
PoleincludeTypstring[]PožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
PolestoreTypbooleanPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poleprevious_response_idTypstringPožiadavkaVoliteľnéHodnoty a limity
Požiadavka na ID: Len skutočné ID odpovede z podporovaného pokračovania
Závisí od modelu
Predvolené—
Poleservice_tierTypstringPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poleprompt_cache_keyTypstringPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poleprompt_cache_optionsTypobjectPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Kombinácie vstupných podkladov

Text · Text UTF8

vstupný text alebo časť input_text

Parametre a životný cyklus metódy
ParameterŠpecifikácia
Parametermaterial_typesŠpecifikáciatext
ParameterrequiredŠpecifikáciamodel, input
Parameteroptional_controlsŠpecifikácianull
Parametercontent_typeŠpecifikáciaapplication/json
Parametertext_file_materialŠpecifikáciaskutočný obsah UTF-8 vložený ako text; ID súborov a URLs potrebujú samostatnú presne určenú podporu

Životný cyklus: exact retained published method

Štruktúry metód a ID sú presné; možnosti dodávateľa sa posudzujú oddelene od prijatia požiadavky.

Cenník

Sadzby metód Ailoot

Ailoot OpenAI ResponsesPOST /v1/responses
Vstup
0,0014 USD / 1K
Výstup
0,0044 USD / 1K
Čítanie cache
≈0,00026 USD / 1K

Ailoot pred požiadavkou rezervuje odhadovanú sumu. Po získaní výsledku vyúčtuje konečný poplatok podľa nameraného využitia. Pri streamovaní sa vyúčtovanie riadi konečným záznamom využitia. Ako funguje rezervácia a vyúčtovanie →

Podrobnosti referenčnej tarify

Referenčné sadzobníky modelu nemenia výber metódy, cenové odhady ani poplatky. Aktívne poplatky používajú sadzby vybranej metódy Ailoot.

Referenčné sadzobníky modelu

Ceny podľa konfigurácie

Každý poplatok priraďte k zobrazeným podmienkam. Pre každú skupinu alternatívnych konfigurácií použite jednu sadzbu.

KonfiguráciaSadzobníkPočet tokenov kontextu väčší nežTokeny kontextu, najviac (vrátane hranice)Poplatok
KonfiguráciaOpenAI Chat · Základné sadzby za tokenySadzobníkZákladná sadzbaPočet tokenov kontextu väčší než—Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranicePoplatok
Vstup · Vstupné tokeny $0.0028 / 1K tokenov
Výstup · Výstupné tokeny $0.0088 / 1K tokenov
Vstup · Čítanie cache $0.00052 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov
KonfiguráciaOpenAI Chat · Pásmo 1 podľa dĺžky požiadavkySadzobník—Počet tokenov kontextu väčší než0Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranicePoplatok
Vstup · Vstupné tokeny $0.0028 / 1K tokenov
Výstup · Výstupné tokeny $0.0088 / 1K tokenov
Vstup · Čítanie cache $0.00052 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov
KonfiguráciaAnthropic Messages · Základné sadzby za tokenySadzobníkZákladná sadzbaPočet tokenov kontextu väčší než—Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranicePoplatok
Vstup · Vstupné tokeny $0.0028 / 1K tokenov
Výstup · Výstupné tokeny $0.0088 / 1K tokenov
Vstup · Čítanie cache $0.00052 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov
KonfiguráciaAnthropic Messages · Pásmo 1 podľa dĺžky požiadavkySadzobník—Počet tokenov kontextu väčší než0Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranicePoplatok
Vstup · Vstupné tokeny $0.0028 / 1K tokenov
Výstup · Výstupné tokeny $0.0088 / 1K tokenov
Vstup · Čítanie cache $0.00052 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov

Príklady požiadaviek

Ailoot · OpenAI Responses

Príklad textuPython SDKNode.js SDKStreamovanie v jazyku Python
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 source-material file}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "glm-5.1", "input": ""}')
f=Path(os.environ["AILOOT_TEXT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 source material")
text=f.read_text(encoding="utf-8")
if not text.strip():raise SystemExit("Source material must contain text")
p["input"]="Summarize this material and quote supporting source passages.\n\n"+text
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/responses \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(json.loads(Path("result.json").read_text(encoding="utf-8")))
PY_RESULT
from openai import OpenAI
import os

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client = OpenAI(base_url="https://api.ailoot.ai/v1", api_key=os.environ["AILOOT_API_KEY"], max_retries=0)
resp = client.responses.create(model="glm-5.1", input="Explain the difference between an observation and a hypothesis in three sentences.")
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(resp.to_dict(mode="json"))
import OpenAI from "openai";

if (!process.env.AILOOT_API_KEY?.trim()) throw new Error("Set AILOOT_API_KEY before making a request");
const client = new OpenAI({ baseURL: "https://api.ailoot.ai/v1", apiKey: process.env.AILOOT_API_KEY, maxRetries: 0 });
const resp = await client.responses.create({ model: "glm-5.1", input: "Explain the difference between an observation and a hypothesis in three sentences." });
import { writeFileSync } from "node:fs";

function saveResult(data, stem = "result") {
  writeFileSync(stem + ".json", JSON.stringify(data, null, 2));
  console.log(JSON.stringify(data, null, 2));
  const saveBlob = (encoded, suffix, label) => {
    const raw = Buffer.from(encoded, "base64");
    const ext = raw.subarray(0,8).equals(Buffer.from([137,80,78,71,13,10,26,10])) ? "png" : raw[0]===255 && raw[1]===216 ? "jpg" : raw.subarray(0,4).toString()==="RIFF" && raw.subarray(8,12).toString()==="WEBP" ? "webp" : suffix;
    const file = `${stem}-${label}.${ext}`;
    writeFileSync(file, raw); console.log("Saved", file);
  };
  for (const [i, block] of (data.content || []).entries()) console.log("Content", i, JSON.stringify(block));
  for (const choice of data.choices || []) console.log("Choice", choice.index, JSON.stringify(choice.message || choice.delta || {}));
  for (const [i, item] of (data.output || []).entries()) {
    console.log("Output", i, JSON.stringify(item));
    if (item.type === "image_generation_call" && item.result) saveBlob(item.result, item.output_format || "bin", `output-${i}`);
  }
  for (const [ci, candidate] of (data.candidates || []).entries()) {
    for (const [pi, part] of (candidate.content?.parts || []).entries()) {
      console.log("Candidate/part", ci, pi, JSON.stringify(part));
      const blob = part.inlineData || part.inline_data;
      if (blob?.data) {
        const mime = blob.mimeType || blob.mime_type;
        const suffix = ({"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"})[mime] || "bin";
        saveBlob(blob.data, suffix, `candidate-${ci}-part-${pi}`);
      }
    }
  }
}

saveResult(resp);
from openai import OpenAI
import os
from pathlib import Path
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
with client.responses.stream(model="glm-5.1", input="Explain the difference between an observation and a hypothesis in three sentences.") as stream:
    with Path("stream-events.jsonl").open("w",encoding="utf-8") as log:
        for event in stream:
            payload=event.to_dict(mode="json")
            log.write(json.dumps(payload,ensure_ascii=False)+"\n"); log.flush()
            print(json.dumps(payload,ensure_ascii=False))
    final=stream.get_final_response()
    save_result(final.to_dict(mode="json"),"stream-result")

Prijať a uložiť výsledky

Ailoot · OpenAI Responses

json alebo SSE

Uchovať všetky dokončené výsledky

Uložte každú úplnú vrátenú odpoveď, súbor a časť obsahu.

Zachovajte každú výstupnú položku a časť obsahu, skutočný call_id funkcie, šifrované uvažovanie a údaje o spotrebe. Pri streamovaní zachovajte úplné identifikačné údaje udalostí a položiek.

Ak treba overiť pôvodnú odpoveď

Zachovajte ID požiadaviek/odpovedí aj hlavičky. Všeobecná URL na načítanie textovej úlohy nie je poskytnutá.

Polia odpovede
PoleTyp
PoleidTypstring
PolestatusTypstring
Poleoutput[]Typmessage|reasoning|function_call|other item
Poleoutput[].content[]Typcontent part
PoleusageTypobject
Chyby a ďalšie kroky
OdpoveďPodmienkaĎalší krok
Odpoveď400 · invalid_request_errorPodmienkaNeplatné povinné polia, reprezentácia materiálu alebo hodnota parametraĎalší krokPred novou požiadavkou na vytvorenie opravte uvedené polia.

Aliasy

Aliasy modelov

Ailoot glm-5.3, glm, glm-5, glm-5.1, glm-5.2, glm-latest
Ailoot Ultra glm-5.3, z-ai/glm-5.3, ~z-ai/glm-latest

Aliasy ciest metód

/chat/completions

Súvisiace ID na volanie

z-ai/glm-5.3, glm, glm-5, glm-5.1, glm-5.2, glm-latest, ~z-ai/glm-latest, glm-5.3, glm-5.3

Ailoot · OpenAI Chat POST /v1/chat/completions glm-5.1

glm-5.1

Z.ai /glm-5.1
ID modelu
  • glm-5.3
  • glm
  • glm-5
  • glm-5.1
  • glm-5.2
  • glm-latest

Úvod

Z.ai GLM 5.3 je textový model na uvažovanie pre zložité softvérové inžinierstvo, prácu v termináli a agentov s dlhým horizontom úloh. Podporuje výrobcom zdokumentovaný kontext s rozsahom 1M tokenov, výstup až 128K tokenov, volanie funkcií a úsilie uvažovania low/high/max, pričom uvažovanie je zapnuté po celý čas.

Povolené vstupy
Text
Výsledky
Text

Dostupné v Ailoot · vstupy a metódy

Ailoot · OpenAI Chat POST /v1/chat/completions
Vstup
text
Výstup
text
Kontext
1 000 000 tokens
Maximálny výstup
131 072 tokens
Výstupný formát
json alebo SSE
PoleTypPožiadavkaHodnoty a limityPredvolené
PolemodelTypstringPožiadavkaPovinnéHodnoty a limity
glm-5.1
Predvolené—
PolemessagesTypmessage[]PožiadavkaPovinnéHodnoty a limity
Minimálny počet položiek: 1
Predvolené—
Polemessages[].roleTypstringPožiadavkaPovinnéHodnoty a limity
Príklady: system, user, assistant, tool, function
Podmienky: Tieto roly sú výslovne zastúpené typmi kompatibility v zdrojovom kóde; presný súbor rolí zostáva závislý od modelu.
Závisí od modelu
Predvolené—
Polemessages[].contentTypstring|content_part[]|nullPožiadavkaVoliteľnéHodnoty a limityPredvolené—
Polemessages[].tool_callsTyptool_call[]PožiadavkaVoliteľnéHodnoty a limityPredvolené—
Polemessages[].tool_call_idTypstringPožiadavkaVoliteľnéHodnoty a limity
Platí, keď: role=tool; použite skutočne vrátené ID
Predvolené—
Polemessages[].nameTypstringPožiadavkaVoliteľnéHodnoty a limityPredvolené—
Polemessages[].reasoning_contentTypstringPožiadavkaVoliteľnéHodnoty a limity
Platí, keď: Posielajte späť skutočne vrátené uvažovanie, ak ho tento model používa
Predvolené—
Polemessages[].reasoning_detailsTypobject|arrayPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Polemax_tokensTypintegerPožiadavkaVoliteľnéHodnoty a limity
Minimum: 1
Závisí od modelu
Predvolené—
Polemax_completion_tokensTypintegerPožiadavkaVoliteľnéHodnoty a limity
Minimum: 1
Závisí od modelu
Predvolené—
PolestreamTypbooleanPožiadavkaVoliteľnéHodnoty a limityPredvolenéfalse
Polestream_options.include_usageTypbooleanPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
PoletemperatureTypnumberPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poletop_pTypnumberPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
PolestopTypstring|string[]PožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
PoletoolsTypfunction_tool[]PožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poletools[].typeTypstringPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poletools[].function.nameTypstringPožiadavkaPovinnéHodnoty a limity
Platí, keď: poskytnutý nástroj typu funkcia
Predvolené—
Poletools[].function.descriptionTypstringPožiadavkaVoliteľnéHodnoty a limityPredvolené—
Poletools[].function.parametersTypJSON_schemaPožiadavkaVoliteľnéHodnoty a limityPredvolené—
Poletool_choiceTypstring|objectPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poleparallel_tool_callsTypbooleanPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poleresponse_formatTypobjectPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Polereasoning_effortTypstringPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
PolereasoningTypobjectPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poleservice_tierTypstringPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
PoleinstructionsTypstringPožiadavkaVoliteľnéHodnoty a limity
Pole kompatibility
Predvolené—
PolefunctionsTypfunction[]PožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Polefunction_callTypstring|objectPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poleprompt_cache_optionsTypobjectPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Kombinácie vstupných podkladov

Text · Text UTF8

messages[].content

Parametre a životný cyklus metódy
ParameterŠpecifikácia
Parametermaterial_typesŠpecifikáciatext
ParameterrequiredŠpecifikáciamodel, messages
Parameteroptional_controlsŠpecifikácianull
Parametercontent_typeŠpecifikáciaapplication/json
Parametertext_file_materialŠpecifikáciaskutočný obsah UTF-8 vložený ako text; ID súborov a URLs potrebujú samostatnú presne určenú podporu

Životný cyklus: exact retained published method

Štruktúry metód a ID sú presné; možnosti dodávateľa sa posudzujú oddelene od prijatia požiadavky.

Cenník

Sadzby metód Ailoot

Ailoot OpenAI ChatPOST /v1/chat/completions
Vstup
0,0014 USD / 1K
Výstup
0,0044 USD / 1K
Čítanie cache
≈0,00026 USD / 1K

Ailoot pred požiadavkou rezervuje odhadovanú sumu. Po získaní výsledku vyúčtuje konečný poplatok podľa nameraného využitia. Pri streamovaní sa vyúčtovanie riadi konečným záznamom využitia. Ako funguje rezervácia a vyúčtovanie →

Podrobnosti referenčnej tarify

Referenčné sadzobníky modelu nemenia výber metódy, cenové odhady ani poplatky. Aktívne poplatky používajú sadzby vybranej metódy Ailoot.

Referenčné sadzobníky modelu

Ceny podľa konfigurácie

Každý poplatok priraďte k zobrazeným podmienkam. Pre každú skupinu alternatívnych konfigurácií použite jednu sadzbu.

KonfiguráciaSadzobníkPočet tokenov kontextu väčší nežTokeny kontextu, najviac (vrátane hranice)Poplatok
KonfiguráciaOpenAI Chat · Základné sadzby za tokenySadzobníkZákladná sadzbaPočet tokenov kontextu väčší než—Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranicePoplatok
Vstup · Vstupné tokeny $0.0028 / 1K tokenov
Výstup · Výstupné tokeny $0.0088 / 1K tokenov
Vstup · Čítanie cache $0.00052 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov
KonfiguráciaOpenAI Chat · Pásmo 1 podľa dĺžky požiadavkySadzobník—Počet tokenov kontextu väčší než0Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranicePoplatok
Vstup · Vstupné tokeny $0.0028 / 1K tokenov
Výstup · Výstupné tokeny $0.0088 / 1K tokenov
Vstup · Čítanie cache $0.00052 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov
KonfiguráciaAnthropic Messages · Základné sadzby za tokenySadzobníkZákladná sadzbaPočet tokenov kontextu väčší než—Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranicePoplatok
Vstup · Vstupné tokeny $0.0028 / 1K tokenov
Výstup · Výstupné tokeny $0.0088 / 1K tokenov
Vstup · Čítanie cache $0.00052 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov
KonfiguráciaAnthropic Messages · Pásmo 1 podľa dĺžky požiadavkySadzobník—Počet tokenov kontextu väčší než0Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranicePoplatok
Vstup · Vstupné tokeny $0.0028 / 1K tokenov
Výstup · Výstupné tokeny $0.0088 / 1K tokenov
Vstup · Čítanie cache $0.00052 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov

Príklady požiadaviek

Ailoot · OpenAI Chat

Príklad textuPython SDKNode.js SDKStreamovanie v jazyku Python
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 source-material file}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "glm-5.1", "messages": []}')
f=Path(os.environ["AILOOT_TEXT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 source material")
text=f.read_text(encoding="utf-8")
if not text.strip():raise SystemExit("Source material must contain text")
p["messages"]=[{"role":"user","content":"Summarize this material and quote supporting source passages.\n\n"+text}]
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/chat/completions \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
print(json.dumps(json.loads(Path("result.json").read_text()),ensure_ascii=False,indent=2))
PY_RESULT
from openai import OpenAI
import os

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client = OpenAI(base_url="https://api.ailoot.ai/v1", api_key=os.environ["AILOOT_API_KEY"], max_retries=0)
resp = client.chat.completions.create(
    model="glm-5.1",
    messages=[{"role": "user", "content": "Explain the difference between an observation and a hypothesis in three sentences."}],
)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(resp.to_dict(mode="json"))
import OpenAI from "openai";

if (!process.env.AILOOT_API_KEY?.trim()) throw new Error("Set AILOOT_API_KEY before making a request");
const client = new OpenAI({ baseURL: "https://api.ailoot.ai/v1", apiKey: process.env.AILOOT_API_KEY, maxRetries: 0 });
const resp = await client.chat.completions.create({
  model: "glm-5.1",
  messages: [{ role: "user", content: "Explain the difference between an observation and a hypothesis in three sentences." }],
});
import { writeFileSync } from "node:fs";

function saveResult(data, stem = "result") {
  writeFileSync(stem + ".json", JSON.stringify(data, null, 2));
  console.log(JSON.stringify(data, null, 2));
  const saveBlob = (encoded, suffix, label) => {
    const raw = Buffer.from(encoded, "base64");
    const ext = raw.subarray(0,8).equals(Buffer.from([137,80,78,71,13,10,26,10])) ? "png" : raw[0]===255 && raw[1]===216 ? "jpg" : raw.subarray(0,4).toString()==="RIFF" && raw.subarray(8,12).toString()==="WEBP" ? "webp" : suffix;
    const file = `${stem}-${label}.${ext}`;
    writeFileSync(file, raw); console.log("Saved", file);
  };
  for (const [i, block] of (data.content || []).entries()) console.log("Content", i, JSON.stringify(block));
  for (const choice of data.choices || []) console.log("Choice", choice.index, JSON.stringify(choice.message || choice.delta || {}));
  for (const [i, item] of (data.output || []).entries()) {
    console.log("Output", i, JSON.stringify(item));
    if (item.type === "image_generation_call" && item.result) saveBlob(item.result, item.output_format || "bin", `output-${i}`);
  }
  for (const [ci, candidate] of (data.candidates || []).entries()) {
    for (const [pi, part] of (candidate.content?.parts || []).entries()) {
      console.log("Candidate/part", ci, pi, JSON.stringify(part));
      const blob = part.inlineData || part.inline_data;
      if (blob?.data) {
        const mime = blob.mimeType || blob.mime_type;
        const suffix = ({"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"})[mime] || "bin";
        saveBlob(blob.data, suffix, `candidate-${ci}-part-${pi}`);
      }
    }
  }
}

saveResult(resp);
from openai import OpenAI
import os
from pathlib import Path

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

with client.chat.completions.stream(model='glm-5.1',messages=[{"role":"user","content":"Explain observations and hypotheses in three sentences."}]) as stream:
    with Path("stream-events.jsonl").open("w",encoding="utf-8") as log:
        for event in stream:
            payload=event.to_dict(mode="json")
            log.write(json.dumps(payload,ensure_ascii=False)+"\n"); log.flush()
            print(json.dumps(payload,ensure_ascii=False))
    final=stream.get_final_completion()
    save_result(final.to_dict(mode="json"),"stream-result")

Prijať a uložiť výsledky

Ailoot · OpenAI Chat

json alebo SSE

Uchovať všetky dokončené výsledky

Uložte každú úplnú vrátenú odpoveď, súbor a časť obsahu.

Zachovajte každý variant odpovede a jeho obsah, volania nástrojov a uvažovanie. V SSE zostavujte čiastkové zmeny podľa indexu variantu/nástroja a zachovajte konečný dôvod ukončenia aj údaje o spotrebe.

Ak treba overiť pôvodnú odpoveď

Zachovajte ID požiadaviek/odpovedí aj hlavičky. Všeobecná URL na načítanie textovej úlohy nie je poskytnutá.

Polia odpovede
PoleTyp
Polechoices[].indexTypinteger
Polechoices[].message.contentTypstring|null
Polechoices[].message.tool_callsTyptool_call[]
Polechoices[].message.reasoning_contentTypstring
Polechoices[].message.reasoning_detailsTypobject|array
Polechoices[].finish_reasonTypstring|null
PoleusageTypobject
Chyby a ďalšie kroky
OdpoveďPodmienkaĎalší krok
Odpoveď400 · invalid_request_errorPodmienkaNeplatné povinné polia, reprezentácia materiálu alebo hodnota parametraĎalší krokPred novou požiadavkou na vytvorenie opravte uvedené polia.

Aliasy

Aliasy modelov

Ailoot glm-5.3, glm, glm-5, glm-5.1, glm-5.2, glm-latest
Ailoot Ultra glm-5.3, z-ai/glm-5.3, ~z-ai/glm-latest

Aliasy ciest metód

/chat/completions

Súvisiace ID na volanie

z-ai/glm-5.3, glm, glm-5, glm-5.1, glm-5.2, glm-latest, ~z-ai/glm-latest, glm-5.3, glm-5.3

Ailoot · Anthropic Messages POST /v1/messages glm-5.2

glm-5.2

Z.ai /glm-5.2
ID modelu
  • glm-5.3
  • glm
  • glm-5
  • glm-5.1
  • glm-5.2
  • glm-latest

Úvod

Z.ai GLM 5.3 je textový model na uvažovanie pre zložité softvérové inžinierstvo, prácu v termináli a agentov s dlhým horizontom úloh. Podporuje výrobcom zdokumentovaný kontext s rozsahom 1M tokenov, výstup až 128K tokenov, volanie funkcií a úsilie uvažovania low/high/max, pričom uvažovanie je zapnuté po celý čas.

Povolené vstupy
Text
Výsledky
Text

Dostupné v Ailoot · vstupy a metódy

Ailoot · Anthropic Messages POST /v1/messages
Vstup
text
Výstup
text
Kontext
1 000 000 tokens
Maximálny výstup
131 072 tokens
Výstupný formát
json alebo SSE
PoleTypPožiadavkaHodnoty a limityPredvolené
PolemodelTypstringPožiadavkaPovinnéHodnoty a limity
glm-5.2
Predvolené—
PolemessagesTypmessage[]PožiadavkaPovinnéHodnoty a limity
Minimálny počet položiek: 1
Predvolené—
Polemessages[].roleTypstringPožiadavkaPovinnéHodnoty a limity
user, assistant
Predvolené—
Polemessages[].contentTypstring|content_block[]PožiadavkaPovinnéHodnoty a limityPredvolené—
PolesystemTypstring|content_block[]PožiadavkaVoliteľnéHodnoty a limityPredvolené—
Polemax_tokensTypintegerPožiadavkaPovinnéHodnoty a limity
Minimum: 1
Limit sa vzťahuje na: presná horná hranica zvoleného modelu/karty
Predvolené—
PolestreamTypbooleanPožiadavkaVoliteľnéHodnoty a limityPredvolenéfalse
PoletemperatureTypnumberPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poletop_pTypnumberPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Polestop_sequencesTypstring[]PožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
PoletoolsTyptool[]PožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poletools[].nameTypstringPožiadavkaVoliteľnéHodnoty a limity
Platí, keď: poskytnutý nástroj
Predvolené—
Poletools[].descriptionTypstringPožiadavkaVoliteľnéHodnoty a limityPredvolené—
Poletools[].input_schemaTypJSON_schemaPožiadavkaVoliteľnéHodnoty a limityPredvolené—
Poletool_choiceTypobjectPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Polethinking.typeTypstringPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Polethinking.budget_tokensTypintegerPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poleoutput_config.effortTypstringPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
PolemetadataTypobjectPožiadavkaVoliteľnéHodnoty a limityPredvolené—
Polecache_controlTypobjectPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Kombinácie vstupných podkladov

Text · Text UTF8

messages[].content alebo blok type=text

Parametre a životný cyklus metódy
ParameterŠpecifikácia
Parametermaterial_typesŠpecifikáciatext
ParameterrequiredŠpecifikáciamodel, messages, max_tokens
Parameteroptional_controlsŠpecifikácianull
Parametercontent_typeŠpecifikáciaapplication/json
Parametertext_file_materialŠpecifikáciaskutočný obsah UTF-8 vložený ako text; ID súborov a URLs potrebujú samostatnú presne určenú podporu

Životný cyklus: exact retained published method

Štruktúry metód a ID sú presné; možnosti dodávateľa sa posudzujú oddelene od prijatia požiadavky.

Cenník

Sadzby metód Ailoot

Ailoot Anthropic MessagesPOST /v1/messages
Vstup
0,0014 USD / 1K
Výstup
0,0044 USD / 1K
Čítanie cache
≈0,00026 USD / 1K

Ailoot pred požiadavkou rezervuje odhadovanú sumu. Po získaní výsledku vyúčtuje konečný poplatok podľa nameraného využitia. Pri streamovaní sa vyúčtovanie riadi konečným záznamom využitia. Ako funguje rezervácia a vyúčtovanie →

Podrobnosti referenčnej tarify

Referenčné sadzobníky modelu nemenia výber metódy, cenové odhady ani poplatky. Aktívne poplatky používajú sadzby vybranej metódy Ailoot.

Referenčné sadzobníky modelu

Ceny podľa konfigurácie

Každý poplatok priraďte k zobrazeným podmienkam. Pre každú skupinu alternatívnych konfigurácií použite jednu sadzbu.

KonfiguráciaSadzobníkPočet tokenov kontextu väčší nežTokeny kontextu, najviac (vrátane hranice)Poplatok
KonfiguráciaOpenAI Chat · Základné sadzby za tokenySadzobníkZákladná sadzbaPočet tokenov kontextu väčší než—Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranicePoplatok
Vstup · Vstupné tokeny $0.0028 / 1K tokenov
Výstup · Výstupné tokeny $0.0088 / 1K tokenov
Vstup · Čítanie cache $0.00052 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov
KonfiguráciaOpenAI Chat · Pásmo 1 podľa dĺžky požiadavkySadzobník—Počet tokenov kontextu väčší než0Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranicePoplatok
Vstup · Vstupné tokeny $0.0028 / 1K tokenov
Výstup · Výstupné tokeny $0.0088 / 1K tokenov
Vstup · Čítanie cache $0.00052 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov
KonfiguráciaAnthropic Messages · Základné sadzby za tokenySadzobníkZákladná sadzbaPočet tokenov kontextu väčší než—Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranicePoplatok
Vstup · Vstupné tokeny $0.0028 / 1K tokenov
Výstup · Výstupné tokeny $0.0088 / 1K tokenov
Vstup · Čítanie cache $0.00052 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov
KonfiguráciaAnthropic Messages · Pásmo 1 podľa dĺžky požiadavkySadzobník—Počet tokenov kontextu väčší než0Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranicePoplatok
Vstup · Vstupné tokeny $0.0028 / 1K tokenov
Výstup · Výstupné tokeny $0.0088 / 1K tokenov
Vstup · Čítanie cache $0.00052 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov

Príklady požiadaviek

Ailoot · Anthropic Messages

Príklad textuPython SDKNode.js SDKStreamovanie v jazyku Python
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 source-material file}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "glm-5.2", "max_tokens": 1024, "messages": []}')
f=Path(os.environ["AILOOT_TEXT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 source material")
text=f.read_text(encoding="utf-8")
if not text.strip():raise SystemExit("Source material must contain text")
p["messages"]=[{"role":"user","content":"Summarize this material and quote supporting source passages.\n\n"+text}]
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/messages \
  -H "x-api-key: $AILOOT_API_KEY" -H 'anthropic-version: 2023-06-01' -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
print(json.dumps(json.loads(Path("result.json").read_text()),ensure_ascii=False,indent=2))
PY_RESULT
import anthropic
import os

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client = anthropic.Anthropic(base_url="https://api.ailoot.ai", api_key=os.environ["AILOOT_API_KEY"], max_retries=0)
msg = client.messages.create(
    model="glm-5.2",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Explain the difference between an observation and a hypothesis in three sentences."}],
)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(msg.to_dict(mode="json"))
import Anthropic from "@anthropic-ai/sdk";

if (!process.env.AILOOT_API_KEY?.trim()) throw new Error("Set AILOOT_API_KEY before making a request");
const client = new Anthropic({ baseURL: "https://api.ailoot.ai", apiKey: process.env.AILOOT_API_KEY, maxRetries: 0 });
const msg = await client.messages.create({
  model: "glm-5.2",
  max_tokens: 1024,
  messages: [{ role: "user", content: "Explain the difference between an observation and a hypothesis in three sentences." }],
});
import { writeFileSync } from "node:fs";

function saveResult(data, stem = "result") {
  writeFileSync(stem + ".json", JSON.stringify(data, null, 2));
  console.log(JSON.stringify(data, null, 2));
  const saveBlob = (encoded, suffix, label) => {
    const raw = Buffer.from(encoded, "base64");
    const ext = raw.subarray(0,8).equals(Buffer.from([137,80,78,71,13,10,26,10])) ? "png" : raw[0]===255 && raw[1]===216 ? "jpg" : raw.subarray(0,4).toString()==="RIFF" && raw.subarray(8,12).toString()==="WEBP" ? "webp" : suffix;
    const file = `${stem}-${label}.${ext}`;
    writeFileSync(file, raw); console.log("Saved", file);
  };
  for (const [i, block] of (data.content || []).entries()) console.log("Content", i, JSON.stringify(block));
  for (const choice of data.choices || []) console.log("Choice", choice.index, JSON.stringify(choice.message || choice.delta || {}));
  for (const [i, item] of (data.output || []).entries()) {
    console.log("Output", i, JSON.stringify(item));
    if (item.type === "image_generation_call" && item.result) saveBlob(item.result, item.output_format || "bin", `output-${i}`);
  }
  for (const [ci, candidate] of (data.candidates || []).entries()) {
    for (const [pi, part] of (candidate.content?.parts || []).entries()) {
      console.log("Candidate/part", ci, pi, JSON.stringify(part));
      const blob = part.inlineData || part.inline_data;
      if (blob?.data) {
        const mime = blob.mimeType || blob.mime_type;
        const suffix = ({"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"})[mime] || "bin";
        saveBlob(blob.data, suffix, `candidate-${ci}-part-${pi}`);
      }
    }
  }
}

saveResult(msg);
import anthropic,os
from pathlib import Path

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=anthropic.Anthropic(base_url="https://api.ailoot.ai",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

with client.messages.stream(model='glm-5.2',max_tokens=1024,messages=[{"role":"user","content":"Explain observations and hypotheses in three sentences."}]) as stream:
    with Path("stream-events.jsonl").open("w",encoding="utf-8") as log:
        for event in stream:
            payload=event.to_dict(mode="json")
            log.write(json.dumps(payload,ensure_ascii=False)+"\n"); log.flush()
            print(json.dumps(payload,ensure_ascii=False))
    final=stream.get_final_message()
    save_result(final.to_dict(mode="json"),"stream-result")

Prijať a uložiť výsledky

Ailoot · Anthropic Messages

json alebo SSE

Uchovať všetky dokončené výsledky

Uložte každú úplnú vrátenú odpoveď, súbor a časť obsahu.

Zachovajte všetky bloky obsahu, podpisy uvažovania a skutočné ID volaní nástrojov. Zostavte všetky čiastkové zmeny blokov SSE; prvý textový blok nie je celý výstup.

Ak treba overiť pôvodnú odpoveď

Zachovajte ID požiadaviek/odpovedí aj hlavičky. Všeobecná URL na načítanie textovej úlohy nie je poskytnutá.

Polia odpovede
PoleTyp
PoleidTypstring
PolemodelTypstring
Polecontent[]Typtext|thinking|tool_use|other content block
Polestop_reasonTypstring|null
PoleusageTypobject
Chyby a ďalšie kroky
OdpoveďPodmienkaĎalší krok
Odpoveď400 · invalid_request_errorPodmienkaNeplatné povinné polia, reprezentácia materiálu alebo hodnota parametraĎalší krokPred novou požiadavkou na vytvorenie opravte uvedené polia.

Aliasy

Aliasy modelov

Ailoot glm-5.3, glm, glm-5, glm-5.1, glm-5.2, glm-latest
Ailoot Ultra glm-5.3, z-ai/glm-5.3, ~z-ai/glm-latest

Aliasy ciest metód

/chat/completions

Súvisiace ID na volanie

z-ai/glm-5.3, glm, glm-5, glm-5.1, glm-5.2, glm-latest, ~z-ai/glm-latest, glm-5.3, glm-5.3

Ailoot · OpenAI Responses POST /v1/responses glm-5.2

glm-5.2

Z.ai /glm-5.2
ID modelu
  • glm-5.3
  • glm
  • glm-5
  • glm-5.1
  • glm-5.2
  • glm-latest

Úvod

Z.ai GLM 5.3 je textový model na uvažovanie pre zložité softvérové inžinierstvo, prácu v termináli a agentov s dlhým horizontom úloh. Podporuje výrobcom zdokumentovaný kontext s rozsahom 1M tokenov, výstup až 128K tokenov, volanie funkcií a úsilie uvažovania low/high/max, pričom uvažovanie je zapnuté po celý čas.

Povolené vstupy
Text
Výsledky
Text

Dostupné v Ailoot · vstupy a metódy

Ailoot · OpenAI Responses POST /v1/responses
Vstup
text
Výstup
text
Kontext
1 000 000 tokens
Maximálny výstup
131 072 tokens
Výstupný formát
json alebo SSE
PoleTypPožiadavkaHodnoty a limityPredvolené
PolemodelTypstringPožiadavkaPovinnéHodnoty a limity
glm-5.2
Predvolené—
PoleinputTypstring|input_item[]PožiadavkaPovinnéHodnoty a limityPredvolené—
PoleinstructionsTypstringPožiadavkaVoliteľnéHodnoty a limityPredvolené—
Poleinput[].typeTypstringPožiadavkaVoliteľnéHodnoty a limity
message, reasoning, function_call, function_call_output
Predvolené—
Poleinput[].contentTypstring|content_part[]PožiadavkaVoliteľnéHodnoty a limityPredvolené—
Poleinput[].call_idTypstringPožiadavkaVoliteľnéHodnoty a limity
Platí, keď: function_call_output; zachovajte skutočne vrátený call_id
Predvolené—
Poleinput[].outputTypstring|content_part[]PožiadavkaVoliteľnéHodnoty a limity
Platí, keď: function_call_output
Predvolené—
Polemax_output_tokensTypintegerPožiadavkaVoliteľnéHodnoty a limity
Minimum: 1
Závisí od modelu
Predvolené—
PolestreamTypbooleanPožiadavkaVoliteľnéHodnoty a limityPredvolenéfalse
PoletemperatureTypnumberPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poletop_pTypnumberPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
PoletoolsTyptool[]PožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poletool_choiceTypstring|objectPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poleparallel_tool_callsTypbooleanPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Polereasoning.effortTypstringPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Polereasoning.summaryTypstringPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poletext.formatTypobjectPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poletext.verbosityTypstringPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
PoleincludeTypstring[]PožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
PolestoreTypbooleanPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poleprevious_response_idTypstringPožiadavkaVoliteľnéHodnoty a limity
Požiadavka na ID: Len skutočné ID odpovede z podporovaného pokračovania
Závisí od modelu
Predvolené—
Poleservice_tierTypstringPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poleprompt_cache_keyTypstringPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poleprompt_cache_optionsTypobjectPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Kombinácie vstupných podkladov

Text · Text UTF8

vstupný text alebo časť input_text

Parametre a životný cyklus metódy
ParameterŠpecifikácia
Parametermaterial_typesŠpecifikáciatext
ParameterrequiredŠpecifikáciamodel, input
Parameteroptional_controlsŠpecifikácianull
Parametercontent_typeŠpecifikáciaapplication/json
Parametertext_file_materialŠpecifikáciaskutočný obsah UTF-8 vložený ako text; ID súborov a URLs potrebujú samostatnú presne určenú podporu

Životný cyklus: exact retained published method

Štruktúry metód a ID sú presné; možnosti dodávateľa sa posudzujú oddelene od prijatia požiadavky.

Cenník

Sadzby metód Ailoot

Ailoot OpenAI ResponsesPOST /v1/responses
Vstup
0,0014 USD / 1K
Výstup
0,0044 USD / 1K
Čítanie cache
≈0,00026 USD / 1K

Ailoot pred požiadavkou rezervuje odhadovanú sumu. Po získaní výsledku vyúčtuje konečný poplatok podľa nameraného využitia. Pri streamovaní sa vyúčtovanie riadi konečným záznamom využitia. Ako funguje rezervácia a vyúčtovanie →

Podrobnosti referenčnej tarify

Referenčné sadzobníky modelu nemenia výber metódy, cenové odhady ani poplatky. Aktívne poplatky používajú sadzby vybranej metódy Ailoot.

Referenčné sadzobníky modelu

Ceny podľa konfigurácie

Každý poplatok priraďte k zobrazeným podmienkam. Pre každú skupinu alternatívnych konfigurácií použite jednu sadzbu.

KonfiguráciaSadzobníkPočet tokenov kontextu väčší nežTokeny kontextu, najviac (vrátane hranice)Poplatok
KonfiguráciaOpenAI Chat · Základné sadzby za tokenySadzobníkZákladná sadzbaPočet tokenov kontextu väčší než—Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranicePoplatok
Vstup · Vstupné tokeny $0.0028 / 1K tokenov
Výstup · Výstupné tokeny $0.0088 / 1K tokenov
Vstup · Čítanie cache $0.00052 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov
KonfiguráciaOpenAI Chat · Pásmo 1 podľa dĺžky požiadavkySadzobník—Počet tokenov kontextu väčší než0Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranicePoplatok
Vstup · Vstupné tokeny $0.0028 / 1K tokenov
Výstup · Výstupné tokeny $0.0088 / 1K tokenov
Vstup · Čítanie cache $0.00052 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov
KonfiguráciaAnthropic Messages · Základné sadzby za tokenySadzobníkZákladná sadzbaPočet tokenov kontextu väčší než—Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranicePoplatok
Vstup · Vstupné tokeny $0.0028 / 1K tokenov
Výstup · Výstupné tokeny $0.0088 / 1K tokenov
Vstup · Čítanie cache $0.00052 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov
KonfiguráciaAnthropic Messages · Pásmo 1 podľa dĺžky požiadavkySadzobník—Počet tokenov kontextu väčší než0Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranicePoplatok
Vstup · Vstupné tokeny $0.0028 / 1K tokenov
Výstup · Výstupné tokeny $0.0088 / 1K tokenov
Vstup · Čítanie cache $0.00052 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov

Príklady požiadaviek

Ailoot · OpenAI Responses

Príklad textuPython SDKNode.js SDKStreamovanie v jazyku Python
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 source-material file}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "glm-5.2", "input": ""}')
f=Path(os.environ["AILOOT_TEXT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 source material")
text=f.read_text(encoding="utf-8")
if not text.strip():raise SystemExit("Source material must contain text")
p["input"]="Summarize this material and quote supporting source passages.\n\n"+text
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/responses \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(json.loads(Path("result.json").read_text(encoding="utf-8")))
PY_RESULT
from openai import OpenAI
import os

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client = OpenAI(base_url="https://api.ailoot.ai/v1", api_key=os.environ["AILOOT_API_KEY"], max_retries=0)
resp = client.responses.create(model="glm-5.2", input="Explain the difference between an observation and a hypothesis in three sentences.")
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(resp.to_dict(mode="json"))
import OpenAI from "openai";

if (!process.env.AILOOT_API_KEY?.trim()) throw new Error("Set AILOOT_API_KEY before making a request");
const client = new OpenAI({ baseURL: "https://api.ailoot.ai/v1", apiKey: process.env.AILOOT_API_KEY, maxRetries: 0 });
const resp = await client.responses.create({ model: "glm-5.2", input: "Explain the difference between an observation and a hypothesis in three sentences." });
import { writeFileSync } from "node:fs";

function saveResult(data, stem = "result") {
  writeFileSync(stem + ".json", JSON.stringify(data, null, 2));
  console.log(JSON.stringify(data, null, 2));
  const saveBlob = (encoded, suffix, label) => {
    const raw = Buffer.from(encoded, "base64");
    const ext = raw.subarray(0,8).equals(Buffer.from([137,80,78,71,13,10,26,10])) ? "png" : raw[0]===255 && raw[1]===216 ? "jpg" : raw.subarray(0,4).toString()==="RIFF" && raw.subarray(8,12).toString()==="WEBP" ? "webp" : suffix;
    const file = `${stem}-${label}.${ext}`;
    writeFileSync(file, raw); console.log("Saved", file);
  };
  for (const [i, block] of (data.content || []).entries()) console.log("Content", i, JSON.stringify(block));
  for (const choice of data.choices || []) console.log("Choice", choice.index, JSON.stringify(choice.message || choice.delta || {}));
  for (const [i, item] of (data.output || []).entries()) {
    console.log("Output", i, JSON.stringify(item));
    if (item.type === "image_generation_call" && item.result) saveBlob(item.result, item.output_format || "bin", `output-${i}`);
  }
  for (const [ci, candidate] of (data.candidates || []).entries()) {
    for (const [pi, part] of (candidate.content?.parts || []).entries()) {
      console.log("Candidate/part", ci, pi, JSON.stringify(part));
      const blob = part.inlineData || part.inline_data;
      if (blob?.data) {
        const mime = blob.mimeType || blob.mime_type;
        const suffix = ({"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"})[mime] || "bin";
        saveBlob(blob.data, suffix, `candidate-${ci}-part-${pi}`);
      }
    }
  }
}

saveResult(resp);
from openai import OpenAI
import os
from pathlib import Path
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
with client.responses.stream(model="glm-5.2", input="Explain the difference between an observation and a hypothesis in three sentences.") as stream:
    with Path("stream-events.jsonl").open("w",encoding="utf-8") as log:
        for event in stream:
            payload=event.to_dict(mode="json")
            log.write(json.dumps(payload,ensure_ascii=False)+"\n"); log.flush()
            print(json.dumps(payload,ensure_ascii=False))
    final=stream.get_final_response()
    save_result(final.to_dict(mode="json"),"stream-result")

Prijať a uložiť výsledky

Ailoot · OpenAI Responses

json alebo SSE

Uchovať všetky dokončené výsledky

Uložte každú úplnú vrátenú odpoveď, súbor a časť obsahu.

Zachovajte každú výstupnú položku a časť obsahu, skutočný call_id funkcie, šifrované uvažovanie a údaje o spotrebe. Pri streamovaní zachovajte úplné identifikačné údaje udalostí a položiek.

Ak treba overiť pôvodnú odpoveď

Zachovajte ID požiadaviek/odpovedí aj hlavičky. Všeobecná URL na načítanie textovej úlohy nie je poskytnutá.

Polia odpovede
PoleTyp
PoleidTypstring
PolestatusTypstring
Poleoutput[]Typmessage|reasoning|function_call|other item
Poleoutput[].content[]Typcontent part
PoleusageTypobject
Chyby a ďalšie kroky
OdpoveďPodmienkaĎalší krok
Odpoveď400 · invalid_request_errorPodmienkaNeplatné povinné polia, reprezentácia materiálu alebo hodnota parametraĎalší krokPred novou požiadavkou na vytvorenie opravte uvedené polia.

Aliasy

Aliasy modelov

Ailoot glm-5.3, glm, glm-5, glm-5.1, glm-5.2, glm-latest
Ailoot Ultra glm-5.3, z-ai/glm-5.3, ~z-ai/glm-latest

Aliasy ciest metód

/chat/completions

Súvisiace ID na volanie

z-ai/glm-5.3, glm, glm-5, glm-5.1, glm-5.2, glm-latest, ~z-ai/glm-latest, glm-5.3, glm-5.3

Ailoot · OpenAI Chat POST /v1/chat/completions glm-5.2

glm-5.2

Z.ai /glm-5.2
ID modelu
  • glm-5.3
  • glm
  • glm-5
  • glm-5.1
  • glm-5.2
  • glm-latest

Úvod

Z.ai GLM 5.3 je textový model na uvažovanie pre zložité softvérové inžinierstvo, prácu v termináli a agentov s dlhým horizontom úloh. Podporuje výrobcom zdokumentovaný kontext s rozsahom 1M tokenov, výstup až 128K tokenov, volanie funkcií a úsilie uvažovania low/high/max, pričom uvažovanie je zapnuté po celý čas.

Povolené vstupy
Text
Výsledky
Text

Dostupné v Ailoot · vstupy a metódy

Ailoot · OpenAI Chat POST /v1/chat/completions
Vstup
text
Výstup
text
Kontext
1 000 000 tokens
Maximálny výstup
131 072 tokens
Výstupný formát
json alebo SSE
PoleTypPožiadavkaHodnoty a limityPredvolené
PolemodelTypstringPožiadavkaPovinnéHodnoty a limity
glm-5.2
Predvolené—
PolemessagesTypmessage[]PožiadavkaPovinnéHodnoty a limity
Minimálny počet položiek: 1
Predvolené—
Polemessages[].roleTypstringPožiadavkaPovinnéHodnoty a limity
Príklady: system, user, assistant, tool, function
Podmienky: Tieto roly sú výslovne zastúpené typmi kompatibility v zdrojovom kóde; presný súbor rolí zostáva závislý od modelu.
Závisí od modelu
Predvolené—
Polemessages[].contentTypstring|content_part[]|nullPožiadavkaVoliteľnéHodnoty a limityPredvolené—
Polemessages[].tool_callsTyptool_call[]PožiadavkaVoliteľnéHodnoty a limityPredvolené—
Polemessages[].tool_call_idTypstringPožiadavkaVoliteľnéHodnoty a limity
Platí, keď: role=tool; použite skutočne vrátené ID
Predvolené—
Polemessages[].nameTypstringPožiadavkaVoliteľnéHodnoty a limityPredvolené—
Polemessages[].reasoning_contentTypstringPožiadavkaVoliteľnéHodnoty a limity
Platí, keď: Posielajte späť skutočne vrátené uvažovanie, ak ho tento model používa
Predvolené—
Polemessages[].reasoning_detailsTypobject|arrayPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Polemax_tokensTypintegerPožiadavkaVoliteľnéHodnoty a limity
Minimum: 1
Závisí od modelu
Predvolené—
Polemax_completion_tokensTypintegerPožiadavkaVoliteľnéHodnoty a limity
Minimum: 1
Závisí od modelu
Predvolené—
PolestreamTypbooleanPožiadavkaVoliteľnéHodnoty a limityPredvolenéfalse
Polestream_options.include_usageTypbooleanPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
PoletemperatureTypnumberPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poletop_pTypnumberPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
PolestopTypstring|string[]PožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
PoletoolsTypfunction_tool[]PožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poletools[].typeTypstringPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poletools[].function.nameTypstringPožiadavkaPovinnéHodnoty a limity
Platí, keď: poskytnutý nástroj typu funkcia
Predvolené—
Poletools[].function.descriptionTypstringPožiadavkaVoliteľnéHodnoty a limityPredvolené—
Poletools[].function.parametersTypJSON_schemaPožiadavkaVoliteľnéHodnoty a limityPredvolené—
Poletool_choiceTypstring|objectPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poleparallel_tool_callsTypbooleanPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poleresponse_formatTypobjectPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Polereasoning_effortTypstringPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
PolereasoningTypobjectPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poleservice_tierTypstringPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
PoleinstructionsTypstringPožiadavkaVoliteľnéHodnoty a limity
Pole kompatibility
Predvolené—
PolefunctionsTypfunction[]PožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Polefunction_callTypstring|objectPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poleprompt_cache_optionsTypobjectPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Kombinácie vstupných podkladov

Text · Text UTF8

messages[].content

Parametre a životný cyklus metódy
ParameterŠpecifikácia
Parametermaterial_typesŠpecifikáciatext
ParameterrequiredŠpecifikáciamodel, messages
Parameteroptional_controlsŠpecifikácianull
Parametercontent_typeŠpecifikáciaapplication/json
Parametertext_file_materialŠpecifikáciaskutočný obsah UTF-8 vložený ako text; ID súborov a URLs potrebujú samostatnú presne určenú podporu

Životný cyklus: exact retained published method

Štruktúry metód a ID sú presné; možnosti dodávateľa sa posudzujú oddelene od prijatia požiadavky.

Cenník

Sadzby metód Ailoot

Ailoot OpenAI ChatPOST /v1/chat/completions
Vstup
0,0014 USD / 1K
Výstup
0,0044 USD / 1K
Čítanie cache
≈0,00026 USD / 1K

Ailoot pred požiadavkou rezervuje odhadovanú sumu. Po získaní výsledku vyúčtuje konečný poplatok podľa nameraného využitia. Pri streamovaní sa vyúčtovanie riadi konečným záznamom využitia. Ako funguje rezervácia a vyúčtovanie →

Podrobnosti referenčnej tarify

Referenčné sadzobníky modelu nemenia výber metódy, cenové odhady ani poplatky. Aktívne poplatky používajú sadzby vybranej metódy Ailoot.

Referenčné sadzobníky modelu

Ceny podľa konfigurácie

Každý poplatok priraďte k zobrazeným podmienkam. Pre každú skupinu alternatívnych konfigurácií použite jednu sadzbu.

KonfiguráciaSadzobníkPočet tokenov kontextu väčší nežTokeny kontextu, najviac (vrátane hranice)Poplatok
KonfiguráciaOpenAI Chat · Základné sadzby za tokenySadzobníkZákladná sadzbaPočet tokenov kontextu väčší než—Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranicePoplatok
Vstup · Vstupné tokeny $0.0028 / 1K tokenov
Výstup · Výstupné tokeny $0.0088 / 1K tokenov
Vstup · Čítanie cache $0.00052 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov
KonfiguráciaOpenAI Chat · Pásmo 1 podľa dĺžky požiadavkySadzobník—Počet tokenov kontextu väčší než0Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranicePoplatok
Vstup · Vstupné tokeny $0.0028 / 1K tokenov
Výstup · Výstupné tokeny $0.0088 / 1K tokenov
Vstup · Čítanie cache $0.00052 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov
KonfiguráciaAnthropic Messages · Základné sadzby za tokenySadzobníkZákladná sadzbaPočet tokenov kontextu väčší než—Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranicePoplatok
Vstup · Vstupné tokeny $0.0028 / 1K tokenov
Výstup · Výstupné tokeny $0.0088 / 1K tokenov
Vstup · Čítanie cache $0.00052 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov
KonfiguráciaAnthropic Messages · Pásmo 1 podľa dĺžky požiadavkySadzobník—Počet tokenov kontextu väčší než0Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranicePoplatok
Vstup · Vstupné tokeny $0.0028 / 1K tokenov
Výstup · Výstupné tokeny $0.0088 / 1K tokenov
Vstup · Čítanie cache $0.00052 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov

Príklady požiadaviek

Ailoot · OpenAI Chat

Príklad textuPython SDKNode.js SDKStreamovanie v jazyku Python
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 source-material file}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "glm-5.2", "messages": []}')
f=Path(os.environ["AILOOT_TEXT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 source material")
text=f.read_text(encoding="utf-8")
if not text.strip():raise SystemExit("Source material must contain text")
p["messages"]=[{"role":"user","content":"Summarize this material and quote supporting source passages.\n\n"+text}]
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/chat/completions \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
print(json.dumps(json.loads(Path("result.json").read_text()),ensure_ascii=False,indent=2))
PY_RESULT
from openai import OpenAI
import os

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client = OpenAI(base_url="https://api.ailoot.ai/v1", api_key=os.environ["AILOOT_API_KEY"], max_retries=0)
resp = client.chat.completions.create(
    model="glm-5.2",
    messages=[{"role": "user", "content": "Explain the difference between an observation and a hypothesis in three sentences."}],
)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(resp.to_dict(mode="json"))
import OpenAI from "openai";

if (!process.env.AILOOT_API_KEY?.trim()) throw new Error("Set AILOOT_API_KEY before making a request");
const client = new OpenAI({ baseURL: "https://api.ailoot.ai/v1", apiKey: process.env.AILOOT_API_KEY, maxRetries: 0 });
const resp = await client.chat.completions.create({
  model: "glm-5.2",
  messages: [{ role: "user", content: "Explain the difference between an observation and a hypothesis in three sentences." }],
});
import { writeFileSync } from "node:fs";

function saveResult(data, stem = "result") {
  writeFileSync(stem + ".json", JSON.stringify(data, null, 2));
  console.log(JSON.stringify(data, null, 2));
  const saveBlob = (encoded, suffix, label) => {
    const raw = Buffer.from(encoded, "base64");
    const ext = raw.subarray(0,8).equals(Buffer.from([137,80,78,71,13,10,26,10])) ? "png" : raw[0]===255 && raw[1]===216 ? "jpg" : raw.subarray(0,4).toString()==="RIFF" && raw.subarray(8,12).toString()==="WEBP" ? "webp" : suffix;
    const file = `${stem}-${label}.${ext}`;
    writeFileSync(file, raw); console.log("Saved", file);
  };
  for (const [i, block] of (data.content || []).entries()) console.log("Content", i, JSON.stringify(block));
  for (const choice of data.choices || []) console.log("Choice", choice.index, JSON.stringify(choice.message || choice.delta || {}));
  for (const [i, item] of (data.output || []).entries()) {
    console.log("Output", i, JSON.stringify(item));
    if (item.type === "image_generation_call" && item.result) saveBlob(item.result, item.output_format || "bin", `output-${i}`);
  }
  for (const [ci, candidate] of (data.candidates || []).entries()) {
    for (const [pi, part] of (candidate.content?.parts || []).entries()) {
      console.log("Candidate/part", ci, pi, JSON.stringify(part));
      const blob = part.inlineData || part.inline_data;
      if (blob?.data) {
        const mime = blob.mimeType || blob.mime_type;
        const suffix = ({"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"})[mime] || "bin";
        saveBlob(blob.data, suffix, `candidate-${ci}-part-${pi}`);
      }
    }
  }
}

saveResult(resp);
from openai import OpenAI
import os
from pathlib import Path

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

with client.chat.completions.stream(model='glm-5.2',messages=[{"role":"user","content":"Explain observations and hypotheses in three sentences."}]) as stream:
    with Path("stream-events.jsonl").open("w",encoding="utf-8") as log:
        for event in stream:
            payload=event.to_dict(mode="json")
            log.write(json.dumps(payload,ensure_ascii=False)+"\n"); log.flush()
            print(json.dumps(payload,ensure_ascii=False))
    final=stream.get_final_completion()
    save_result(final.to_dict(mode="json"),"stream-result")

Prijať a uložiť výsledky

Ailoot · OpenAI Chat

json alebo SSE

Uchovať všetky dokončené výsledky

Uložte každú úplnú vrátenú odpoveď, súbor a časť obsahu.

Zachovajte každý variant odpovede a jeho obsah, volania nástrojov a uvažovanie. V SSE zostavujte čiastkové zmeny podľa indexu variantu/nástroja a zachovajte konečný dôvod ukončenia aj údaje o spotrebe.

Ak treba overiť pôvodnú odpoveď

Zachovajte ID požiadaviek/odpovedí aj hlavičky. Všeobecná URL na načítanie textovej úlohy nie je poskytnutá.

Polia odpovede
PoleTyp
Polechoices[].indexTypinteger
Polechoices[].message.contentTypstring|null
Polechoices[].message.tool_callsTyptool_call[]
Polechoices[].message.reasoning_contentTypstring
Polechoices[].message.reasoning_detailsTypobject|array
Polechoices[].finish_reasonTypstring|null
PoleusageTypobject
Chyby a ďalšie kroky
OdpoveďPodmienkaĎalší krok
Odpoveď400 · invalid_request_errorPodmienkaNeplatné povinné polia, reprezentácia materiálu alebo hodnota parametraĎalší krokPred novou požiadavkou na vytvorenie opravte uvedené polia.

Aliasy

Aliasy modelov

Ailoot glm-5.3, glm, glm-5, glm-5.1, glm-5.2, glm-latest
Ailoot Ultra glm-5.3, z-ai/glm-5.3, ~z-ai/glm-latest

Aliasy ciest metód

/chat/completions

Súvisiace ID na volanie

z-ai/glm-5.3, glm, glm-5, glm-5.1, glm-5.2, glm-latest, ~z-ai/glm-latest, glm-5.3, glm-5.3

Ailoot · Anthropic Messages POST /v1/messages glm-latest

glm-latest

Z.ai /glm-latest
ID modelu
  • glm-5.3
  • glm
  • glm-5
  • glm-5.1
  • glm-5.2
  • glm-latest

Úvod

Z.ai GLM 5.3 je textový model na uvažovanie pre zložité softvérové inžinierstvo, prácu v termináli a agentov s dlhým horizontom úloh. Podporuje výrobcom zdokumentovaný kontext s rozsahom 1M tokenov, výstup až 128K tokenov, volanie funkcií a úsilie uvažovania low/high/max, pričom uvažovanie je zapnuté po celý čas.

Povolené vstupy
Text
Výsledky
Text

Dostupné v Ailoot · vstupy a metódy

Ailoot · Anthropic Messages POST /v1/messages
Vstup
text
Výstup
text
Kontext
1 000 000 tokens
Maximálny výstup
131 072 tokens
Výstupný formát
json alebo SSE
PoleTypPožiadavkaHodnoty a limityPredvolené
PolemodelTypstringPožiadavkaPovinnéHodnoty a limity
glm-latest
Predvolené—
PolemessagesTypmessage[]PožiadavkaPovinnéHodnoty a limity
Minimálny počet položiek: 1
Predvolené—
Polemessages[].roleTypstringPožiadavkaPovinnéHodnoty a limity
user, assistant
Predvolené—
Polemessages[].contentTypstring|content_block[]PožiadavkaPovinnéHodnoty a limityPredvolené—
PolesystemTypstring|content_block[]PožiadavkaVoliteľnéHodnoty a limityPredvolené—
Polemax_tokensTypintegerPožiadavkaPovinnéHodnoty a limity
Minimum: 1
Limit sa vzťahuje na: presná horná hranica zvoleného modelu/karty
Predvolené—
PolestreamTypbooleanPožiadavkaVoliteľnéHodnoty a limityPredvolenéfalse
PoletemperatureTypnumberPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poletop_pTypnumberPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Polestop_sequencesTypstring[]PožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
PoletoolsTyptool[]PožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poletools[].nameTypstringPožiadavkaVoliteľnéHodnoty a limity
Platí, keď: poskytnutý nástroj
Predvolené—
Poletools[].descriptionTypstringPožiadavkaVoliteľnéHodnoty a limityPredvolené—
Poletools[].input_schemaTypJSON_schemaPožiadavkaVoliteľnéHodnoty a limityPredvolené—
Poletool_choiceTypobjectPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Polethinking.typeTypstringPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Polethinking.budget_tokensTypintegerPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poleoutput_config.effortTypstringPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
PolemetadataTypobjectPožiadavkaVoliteľnéHodnoty a limityPredvolené—
Polecache_controlTypobjectPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Kombinácie vstupných podkladov

Text · Text UTF8

messages[].content alebo blok type=text

Parametre a životný cyklus metódy
ParameterŠpecifikácia
Parametermaterial_typesŠpecifikáciatext
ParameterrequiredŠpecifikáciamodel, messages, max_tokens
Parameteroptional_controlsŠpecifikácianull
Parametercontent_typeŠpecifikáciaapplication/json
Parametertext_file_materialŠpecifikáciaskutočný obsah UTF-8 vložený ako text; ID súborov a URLs potrebujú samostatnú presne určenú podporu

Životný cyklus: exact retained published method

Štruktúry metód a ID sú presné; možnosti dodávateľa sa posudzujú oddelene od prijatia požiadavky.

Cenník

Sadzby metód Ailoot

Ailoot Anthropic MessagesPOST /v1/messages
Vstup
0,0014 USD / 1K
Výstup
0,0044 USD / 1K
Čítanie cache
≈0,00026 USD / 1K

Ailoot pred požiadavkou rezervuje odhadovanú sumu. Po získaní výsledku vyúčtuje konečný poplatok podľa nameraného využitia. Pri streamovaní sa vyúčtovanie riadi konečným záznamom využitia. Ako funguje rezervácia a vyúčtovanie →

Podrobnosti referenčnej tarify

Referenčné sadzobníky modelu nemenia výber metódy, cenové odhady ani poplatky. Aktívne poplatky používajú sadzby vybranej metódy Ailoot.

Referenčné sadzobníky modelu

Ceny podľa konfigurácie

Každý poplatok priraďte k zobrazeným podmienkam. Pre každú skupinu alternatívnych konfigurácií použite jednu sadzbu.

KonfiguráciaSadzobníkPočet tokenov kontextu väčší nežTokeny kontextu, najviac (vrátane hranice)Poplatok
KonfiguráciaOpenAI Chat · Základné sadzby za tokenySadzobníkZákladná sadzbaPočet tokenov kontextu väčší než—Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranicePoplatok
Vstup · Vstupné tokeny $0.0028 / 1K tokenov
Výstup · Výstupné tokeny $0.0088 / 1K tokenov
Vstup · Čítanie cache $0.00052 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov
KonfiguráciaOpenAI Chat · Pásmo 1 podľa dĺžky požiadavkySadzobník—Počet tokenov kontextu väčší než0Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranicePoplatok
Vstup · Vstupné tokeny $0.0028 / 1K tokenov
Výstup · Výstupné tokeny $0.0088 / 1K tokenov
Vstup · Čítanie cache $0.00052 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov
KonfiguráciaAnthropic Messages · Základné sadzby za tokenySadzobníkZákladná sadzbaPočet tokenov kontextu väčší než—Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranicePoplatok
Vstup · Vstupné tokeny $0.0028 / 1K tokenov
Výstup · Výstupné tokeny $0.0088 / 1K tokenov
Vstup · Čítanie cache $0.00052 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov
KonfiguráciaAnthropic Messages · Pásmo 1 podľa dĺžky požiadavkySadzobník—Počet tokenov kontextu väčší než0Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranicePoplatok
Vstup · Vstupné tokeny $0.0028 / 1K tokenov
Výstup · Výstupné tokeny $0.0088 / 1K tokenov
Vstup · Čítanie cache $0.00052 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov

Príklady požiadaviek

Ailoot · Anthropic Messages

Príklad textuPython SDKNode.js SDKStreamovanie v jazyku Python
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 source-material file}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "glm-latest", "max_tokens": 1024, "messages": []}')
f=Path(os.environ["AILOOT_TEXT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 source material")
text=f.read_text(encoding="utf-8")
if not text.strip():raise SystemExit("Source material must contain text")
p["messages"]=[{"role":"user","content":"Summarize this material and quote supporting source passages.\n\n"+text}]
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/messages \
  -H "x-api-key: $AILOOT_API_KEY" -H 'anthropic-version: 2023-06-01' -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
print(json.dumps(json.loads(Path("result.json").read_text()),ensure_ascii=False,indent=2))
PY_RESULT
import anthropic
import os

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client = anthropic.Anthropic(base_url="https://api.ailoot.ai", api_key=os.environ["AILOOT_API_KEY"], max_retries=0)
msg = client.messages.create(
    model="glm-latest",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Explain the difference between an observation and a hypothesis in three sentences."}],
)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(msg.to_dict(mode="json"))
import Anthropic from "@anthropic-ai/sdk";

if (!process.env.AILOOT_API_KEY?.trim()) throw new Error("Set AILOOT_API_KEY before making a request");
const client = new Anthropic({ baseURL: "https://api.ailoot.ai", apiKey: process.env.AILOOT_API_KEY, maxRetries: 0 });
const msg = await client.messages.create({
  model: "glm-latest",
  max_tokens: 1024,
  messages: [{ role: "user", content: "Explain the difference between an observation and a hypothesis in three sentences." }],
});
import { writeFileSync } from "node:fs";

function saveResult(data, stem = "result") {
  writeFileSync(stem + ".json", JSON.stringify(data, null, 2));
  console.log(JSON.stringify(data, null, 2));
  const saveBlob = (encoded, suffix, label) => {
    const raw = Buffer.from(encoded, "base64");
    const ext = raw.subarray(0,8).equals(Buffer.from([137,80,78,71,13,10,26,10])) ? "png" : raw[0]===255 && raw[1]===216 ? "jpg" : raw.subarray(0,4).toString()==="RIFF" && raw.subarray(8,12).toString()==="WEBP" ? "webp" : suffix;
    const file = `${stem}-${label}.${ext}`;
    writeFileSync(file, raw); console.log("Saved", file);
  };
  for (const [i, block] of (data.content || []).entries()) console.log("Content", i, JSON.stringify(block));
  for (const choice of data.choices || []) console.log("Choice", choice.index, JSON.stringify(choice.message || choice.delta || {}));
  for (const [i, item] of (data.output || []).entries()) {
    console.log("Output", i, JSON.stringify(item));
    if (item.type === "image_generation_call" && item.result) saveBlob(item.result, item.output_format || "bin", `output-${i}`);
  }
  for (const [ci, candidate] of (data.candidates || []).entries()) {
    for (const [pi, part] of (candidate.content?.parts || []).entries()) {
      console.log("Candidate/part", ci, pi, JSON.stringify(part));
      const blob = part.inlineData || part.inline_data;
      if (blob?.data) {
        const mime = blob.mimeType || blob.mime_type;
        const suffix = ({"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"})[mime] || "bin";
        saveBlob(blob.data, suffix, `candidate-${ci}-part-${pi}`);
      }
    }
  }
}

saveResult(msg);
import anthropic,os
from pathlib import Path

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=anthropic.Anthropic(base_url="https://api.ailoot.ai",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

with client.messages.stream(model='glm-latest',max_tokens=1024,messages=[{"role":"user","content":"Explain observations and hypotheses in three sentences."}]) as stream:
    with Path("stream-events.jsonl").open("w",encoding="utf-8") as log:
        for event in stream:
            payload=event.to_dict(mode="json")
            log.write(json.dumps(payload,ensure_ascii=False)+"\n"); log.flush()
            print(json.dumps(payload,ensure_ascii=False))
    final=stream.get_final_message()
    save_result(final.to_dict(mode="json"),"stream-result")

Prijať a uložiť výsledky

Ailoot · Anthropic Messages

json alebo SSE

Uchovať všetky dokončené výsledky

Uložte každú úplnú vrátenú odpoveď, súbor a časť obsahu.

Zachovajte všetky bloky obsahu, podpisy uvažovania a skutočné ID volaní nástrojov. Zostavte všetky čiastkové zmeny blokov SSE; prvý textový blok nie je celý výstup.

Ak treba overiť pôvodnú odpoveď

Zachovajte ID požiadaviek/odpovedí aj hlavičky. Všeobecná URL na načítanie textovej úlohy nie je poskytnutá.

Polia odpovede
PoleTyp
PoleidTypstring
PolemodelTypstring
Polecontent[]Typtext|thinking|tool_use|other content block
Polestop_reasonTypstring|null
PoleusageTypobject
Chyby a ďalšie kroky
OdpoveďPodmienkaĎalší krok
Odpoveď400 · invalid_request_errorPodmienkaNeplatné povinné polia, reprezentácia materiálu alebo hodnota parametraĎalší krokPred novou požiadavkou na vytvorenie opravte uvedené polia.

Aliasy

Aliasy modelov

Ailoot glm-5.3, glm, glm-5, glm-5.1, glm-5.2, glm-latest
Ailoot Ultra glm-5.3, z-ai/glm-5.3, ~z-ai/glm-latest

Aliasy ciest metód

/chat/completions

Súvisiace ID na volanie

z-ai/glm-5.3, glm, glm-5, glm-5.1, glm-5.2, glm-latest, ~z-ai/glm-latest, glm-5.3, glm-5.3

Ailoot · OpenAI Responses POST /v1/responses glm-latest

glm-latest

Z.ai /glm-latest
ID modelu
  • glm-5.3
  • glm
  • glm-5
  • glm-5.1
  • glm-5.2
  • glm-latest

Úvod

Z.ai GLM 5.3 je textový model na uvažovanie pre zložité softvérové inžinierstvo, prácu v termináli a agentov s dlhým horizontom úloh. Podporuje výrobcom zdokumentovaný kontext s rozsahom 1M tokenov, výstup až 128K tokenov, volanie funkcií a úsilie uvažovania low/high/max, pričom uvažovanie je zapnuté po celý čas.

Povolené vstupy
Text
Výsledky
Text

Dostupné v Ailoot · vstupy a metódy

Ailoot · OpenAI Responses POST /v1/responses
Vstup
text
Výstup
text
Kontext
1 000 000 tokens
Maximálny výstup
131 072 tokens
Výstupný formát
json alebo SSE
PoleTypPožiadavkaHodnoty a limityPredvolené
PolemodelTypstringPožiadavkaPovinnéHodnoty a limity
glm-latest
Predvolené—
PoleinputTypstring|input_item[]PožiadavkaPovinnéHodnoty a limityPredvolené—
PoleinstructionsTypstringPožiadavkaVoliteľnéHodnoty a limityPredvolené—
Poleinput[].typeTypstringPožiadavkaVoliteľnéHodnoty a limity
message, reasoning, function_call, function_call_output
Predvolené—
Poleinput[].contentTypstring|content_part[]PožiadavkaVoliteľnéHodnoty a limityPredvolené—
Poleinput[].call_idTypstringPožiadavkaVoliteľnéHodnoty a limity
Platí, keď: function_call_output; zachovajte skutočne vrátený call_id
Predvolené—
Poleinput[].outputTypstring|content_part[]PožiadavkaVoliteľnéHodnoty a limity
Platí, keď: function_call_output
Predvolené—
Polemax_output_tokensTypintegerPožiadavkaVoliteľnéHodnoty a limity
Minimum: 1
Závisí od modelu
Predvolené—
PolestreamTypbooleanPožiadavkaVoliteľnéHodnoty a limityPredvolenéfalse
PoletemperatureTypnumberPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poletop_pTypnumberPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
PoletoolsTyptool[]PožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poletool_choiceTypstring|objectPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poleparallel_tool_callsTypbooleanPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Polereasoning.effortTypstringPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Polereasoning.summaryTypstringPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poletext.formatTypobjectPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poletext.verbosityTypstringPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
PoleincludeTypstring[]PožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
PolestoreTypbooleanPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poleprevious_response_idTypstringPožiadavkaVoliteľnéHodnoty a limity
Požiadavka na ID: Len skutočné ID odpovede z podporovaného pokračovania
Závisí od modelu
Predvolené—
Poleservice_tierTypstringPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poleprompt_cache_keyTypstringPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poleprompt_cache_optionsTypobjectPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Kombinácie vstupných podkladov

Text · Text UTF8

vstupný text alebo časť input_text

Parametre a životný cyklus metódy
ParameterŠpecifikácia
Parametermaterial_typesŠpecifikáciatext
ParameterrequiredŠpecifikáciamodel, input
Parameteroptional_controlsŠpecifikácianull
Parametercontent_typeŠpecifikáciaapplication/json
Parametertext_file_materialŠpecifikáciaskutočný obsah UTF-8 vložený ako text; ID súborov a URLs potrebujú samostatnú presne určenú podporu

Životný cyklus: exact retained published method

Štruktúry metód a ID sú presné; možnosti dodávateľa sa posudzujú oddelene od prijatia požiadavky.

Cenník

Sadzby metód Ailoot

Ailoot OpenAI ResponsesPOST /v1/responses
Vstup
0,0014 USD / 1K
Výstup
0,0044 USD / 1K
Čítanie cache
≈0,00026 USD / 1K

Ailoot pred požiadavkou rezervuje odhadovanú sumu. Po získaní výsledku vyúčtuje konečný poplatok podľa nameraného využitia. Pri streamovaní sa vyúčtovanie riadi konečným záznamom využitia. Ako funguje rezervácia a vyúčtovanie →

Podrobnosti referenčnej tarify

Referenčné sadzobníky modelu nemenia výber metódy, cenové odhady ani poplatky. Aktívne poplatky používajú sadzby vybranej metódy Ailoot.

Referenčné sadzobníky modelu

Ceny podľa konfigurácie

Každý poplatok priraďte k zobrazeným podmienkam. Pre každú skupinu alternatívnych konfigurácií použite jednu sadzbu.

KonfiguráciaSadzobníkPočet tokenov kontextu väčší nežTokeny kontextu, najviac (vrátane hranice)Poplatok
KonfiguráciaOpenAI Chat · Základné sadzby za tokenySadzobníkZákladná sadzbaPočet tokenov kontextu väčší než—Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranicePoplatok
Vstup · Vstupné tokeny $0.0028 / 1K tokenov
Výstup · Výstupné tokeny $0.0088 / 1K tokenov
Vstup · Čítanie cache $0.00052 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov
KonfiguráciaOpenAI Chat · Pásmo 1 podľa dĺžky požiadavkySadzobník—Počet tokenov kontextu väčší než0Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranicePoplatok
Vstup · Vstupné tokeny $0.0028 / 1K tokenov
Výstup · Výstupné tokeny $0.0088 / 1K tokenov
Vstup · Čítanie cache $0.00052 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov
KonfiguráciaAnthropic Messages · Základné sadzby za tokenySadzobníkZákladná sadzbaPočet tokenov kontextu väčší než—Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranicePoplatok
Vstup · Vstupné tokeny $0.0028 / 1K tokenov
Výstup · Výstupné tokeny $0.0088 / 1K tokenov
Vstup · Čítanie cache $0.00052 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov
KonfiguráciaAnthropic Messages · Pásmo 1 podľa dĺžky požiadavkySadzobník—Počet tokenov kontextu väčší než0Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranicePoplatok
Vstup · Vstupné tokeny $0.0028 / 1K tokenov
Výstup · Výstupné tokeny $0.0088 / 1K tokenov
Vstup · Čítanie cache $0.00052 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov

Príklady požiadaviek

Ailoot · OpenAI Responses

Príklad textuPython SDKNode.js SDKStreamovanie v jazyku Python
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 source-material file}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "glm-latest", "input": ""}')
f=Path(os.environ["AILOOT_TEXT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 source material")
text=f.read_text(encoding="utf-8")
if not text.strip():raise SystemExit("Source material must contain text")
p["input"]="Summarize this material and quote supporting source passages.\n\n"+text
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/responses \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(json.loads(Path("result.json").read_text(encoding="utf-8")))
PY_RESULT
from openai import OpenAI
import os

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client = OpenAI(base_url="https://api.ailoot.ai/v1", api_key=os.environ["AILOOT_API_KEY"], max_retries=0)
resp = client.responses.create(model="glm-latest", input="Explain the difference between an observation and a hypothesis in three sentences.")
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(resp.to_dict(mode="json"))
import OpenAI from "openai";

if (!process.env.AILOOT_API_KEY?.trim()) throw new Error("Set AILOOT_API_KEY before making a request");
const client = new OpenAI({ baseURL: "https://api.ailoot.ai/v1", apiKey: process.env.AILOOT_API_KEY, maxRetries: 0 });
const resp = await client.responses.create({ model: "glm-latest", input: "Explain the difference between an observation and a hypothesis in three sentences." });
import { writeFileSync } from "node:fs";

function saveResult(data, stem = "result") {
  writeFileSync(stem + ".json", JSON.stringify(data, null, 2));
  console.log(JSON.stringify(data, null, 2));
  const saveBlob = (encoded, suffix, label) => {
    const raw = Buffer.from(encoded, "base64");
    const ext = raw.subarray(0,8).equals(Buffer.from([137,80,78,71,13,10,26,10])) ? "png" : raw[0]===255 && raw[1]===216 ? "jpg" : raw.subarray(0,4).toString()==="RIFF" && raw.subarray(8,12).toString()==="WEBP" ? "webp" : suffix;
    const file = `${stem}-${label}.${ext}`;
    writeFileSync(file, raw); console.log("Saved", file);
  };
  for (const [i, block] of (data.content || []).entries()) console.log("Content", i, JSON.stringify(block));
  for (const choice of data.choices || []) console.log("Choice", choice.index, JSON.stringify(choice.message || choice.delta || {}));
  for (const [i, item] of (data.output || []).entries()) {
    console.log("Output", i, JSON.stringify(item));
    if (item.type === "image_generation_call" && item.result) saveBlob(item.result, item.output_format || "bin", `output-${i}`);
  }
  for (const [ci, candidate] of (data.candidates || []).entries()) {
    for (const [pi, part] of (candidate.content?.parts || []).entries()) {
      console.log("Candidate/part", ci, pi, JSON.stringify(part));
      const blob = part.inlineData || part.inline_data;
      if (blob?.data) {
        const mime = blob.mimeType || blob.mime_type;
        const suffix = ({"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"})[mime] || "bin";
        saveBlob(blob.data, suffix, `candidate-${ci}-part-${pi}`);
      }
    }
  }
}

saveResult(resp);
from openai import OpenAI
import os
from pathlib import Path
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
with client.responses.stream(model="glm-latest", input="Explain the difference between an observation and a hypothesis in three sentences.") as stream:
    with Path("stream-events.jsonl").open("w",encoding="utf-8") as log:
        for event in stream:
            payload=event.to_dict(mode="json")
            log.write(json.dumps(payload,ensure_ascii=False)+"\n"); log.flush()
            print(json.dumps(payload,ensure_ascii=False))
    final=stream.get_final_response()
    save_result(final.to_dict(mode="json"),"stream-result")

Prijať a uložiť výsledky

Ailoot · OpenAI Responses

json alebo SSE

Uchovať všetky dokončené výsledky

Uložte každú úplnú vrátenú odpoveď, súbor a časť obsahu.

Zachovajte každú výstupnú položku a časť obsahu, skutočný call_id funkcie, šifrované uvažovanie a údaje o spotrebe. Pri streamovaní zachovajte úplné identifikačné údaje udalostí a položiek.

Ak treba overiť pôvodnú odpoveď

Zachovajte ID požiadaviek/odpovedí aj hlavičky. Všeobecná URL na načítanie textovej úlohy nie je poskytnutá.

Polia odpovede
PoleTyp
PoleidTypstring
PolestatusTypstring
Poleoutput[]Typmessage|reasoning|function_call|other item
Poleoutput[].content[]Typcontent part
PoleusageTypobject
Chyby a ďalšie kroky
OdpoveďPodmienkaĎalší krok
Odpoveď400 · invalid_request_errorPodmienkaNeplatné povinné polia, reprezentácia materiálu alebo hodnota parametraĎalší krokPred novou požiadavkou na vytvorenie opravte uvedené polia.

Aliasy

Aliasy modelov

Ailoot glm-5.3, glm, glm-5, glm-5.1, glm-5.2, glm-latest
Ailoot Ultra glm-5.3, z-ai/glm-5.3, ~z-ai/glm-latest

Aliasy ciest metód

/chat/completions

Súvisiace ID na volanie

z-ai/glm-5.3, glm, glm-5, glm-5.1, glm-5.2, glm-latest, ~z-ai/glm-latest, glm-5.3, glm-5.3

Ailoot · OpenAI Chat POST /v1/chat/completions glm-latest

glm-latest

Z.ai /glm-latest
ID modelu
  • glm-5.3
  • glm
  • glm-5
  • glm-5.1
  • glm-5.2
  • glm-latest

Úvod

Z.ai GLM 5.3 je textový model na uvažovanie pre zložité softvérové inžinierstvo, prácu v termináli a agentov s dlhým horizontom úloh. Podporuje výrobcom zdokumentovaný kontext s rozsahom 1M tokenov, výstup až 128K tokenov, volanie funkcií a úsilie uvažovania low/high/max, pričom uvažovanie je zapnuté po celý čas.

Povolené vstupy
Text
Výsledky
Text

Dostupné v Ailoot · vstupy a metódy

Ailoot · OpenAI Chat POST /v1/chat/completions
Vstup
text
Výstup
text
Kontext
1 000 000 tokens
Maximálny výstup
131 072 tokens
Výstupný formát
json alebo SSE
PoleTypPožiadavkaHodnoty a limityPredvolené
PolemodelTypstringPožiadavkaPovinnéHodnoty a limity
glm-latest
Predvolené—
PolemessagesTypmessage[]PožiadavkaPovinnéHodnoty a limity
Minimálny počet položiek: 1
Predvolené—
Polemessages[].roleTypstringPožiadavkaPovinnéHodnoty a limity
Príklady: system, user, assistant, tool, function
Podmienky: Tieto roly sú výslovne zastúpené typmi kompatibility v zdrojovom kóde; presný súbor rolí zostáva závislý od modelu.
Závisí od modelu
Predvolené—
Polemessages[].contentTypstring|content_part[]|nullPožiadavkaVoliteľnéHodnoty a limityPredvolené—
Polemessages[].tool_callsTyptool_call[]PožiadavkaVoliteľnéHodnoty a limityPredvolené—
Polemessages[].tool_call_idTypstringPožiadavkaVoliteľnéHodnoty a limity
Platí, keď: role=tool; použite skutočne vrátené ID
Predvolené—
Polemessages[].nameTypstringPožiadavkaVoliteľnéHodnoty a limityPredvolené—
Polemessages[].reasoning_contentTypstringPožiadavkaVoliteľnéHodnoty a limity
Platí, keď: Posielajte späť skutočne vrátené uvažovanie, ak ho tento model používa
Predvolené—
Polemessages[].reasoning_detailsTypobject|arrayPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Polemax_tokensTypintegerPožiadavkaVoliteľnéHodnoty a limity
Minimum: 1
Závisí od modelu
Predvolené—
Polemax_completion_tokensTypintegerPožiadavkaVoliteľnéHodnoty a limity
Minimum: 1
Závisí od modelu
Predvolené—
PolestreamTypbooleanPožiadavkaVoliteľnéHodnoty a limityPredvolenéfalse
Polestream_options.include_usageTypbooleanPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
PoletemperatureTypnumberPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poletop_pTypnumberPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
PolestopTypstring|string[]PožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
PoletoolsTypfunction_tool[]PožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poletools[].typeTypstringPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poletools[].function.nameTypstringPožiadavkaPovinnéHodnoty a limity
Platí, keď: poskytnutý nástroj typu funkcia
Predvolené—
Poletools[].function.descriptionTypstringPožiadavkaVoliteľnéHodnoty a limityPredvolené—
Poletools[].function.parametersTypJSON_schemaPožiadavkaVoliteľnéHodnoty a limityPredvolené—
Poletool_choiceTypstring|objectPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poleparallel_tool_callsTypbooleanPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poleresponse_formatTypobjectPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Polereasoning_effortTypstringPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
PolereasoningTypobjectPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poleservice_tierTypstringPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
PoleinstructionsTypstringPožiadavkaVoliteľnéHodnoty a limity
Pole kompatibility
Predvolené—
PolefunctionsTypfunction[]PožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Polefunction_callTypstring|objectPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poleprompt_cache_optionsTypobjectPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Kombinácie vstupných podkladov

Text · Text UTF8

messages[].content

Parametre a životný cyklus metódy
ParameterŠpecifikácia
Parametermaterial_typesŠpecifikáciatext
ParameterrequiredŠpecifikáciamodel, messages
Parameteroptional_controlsŠpecifikácianull
Parametercontent_typeŠpecifikáciaapplication/json
Parametertext_file_materialŠpecifikáciaskutočný obsah UTF-8 vložený ako text; ID súborov a URLs potrebujú samostatnú presne určenú podporu

Životný cyklus: exact retained published method

Štruktúry metód a ID sú presné; možnosti dodávateľa sa posudzujú oddelene od prijatia požiadavky.

Cenník

Sadzby metód Ailoot

Ailoot OpenAI ChatPOST /v1/chat/completions
Vstup
0,0014 USD / 1K
Výstup
0,0044 USD / 1K
Čítanie cache
≈0,00026 USD / 1K

Ailoot pred požiadavkou rezervuje odhadovanú sumu. Po získaní výsledku vyúčtuje konečný poplatok podľa nameraného využitia. Pri streamovaní sa vyúčtovanie riadi konečným záznamom využitia. Ako funguje rezervácia a vyúčtovanie →

Podrobnosti referenčnej tarify

Referenčné sadzobníky modelu nemenia výber metódy, cenové odhady ani poplatky. Aktívne poplatky používajú sadzby vybranej metódy Ailoot.

Referenčné sadzobníky modelu

Ceny podľa konfigurácie

Každý poplatok priraďte k zobrazeným podmienkam. Pre každú skupinu alternatívnych konfigurácií použite jednu sadzbu.

KonfiguráciaSadzobníkPočet tokenov kontextu väčší nežTokeny kontextu, najviac (vrátane hranice)Poplatok
KonfiguráciaOpenAI Chat · Základné sadzby za tokenySadzobníkZákladná sadzbaPočet tokenov kontextu väčší než—Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranicePoplatok
Vstup · Vstupné tokeny $0.0028 / 1K tokenov
Výstup · Výstupné tokeny $0.0088 / 1K tokenov
Vstup · Čítanie cache $0.00052 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov
KonfiguráciaOpenAI Chat · Pásmo 1 podľa dĺžky požiadavkySadzobník—Počet tokenov kontextu väčší než0Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranicePoplatok
Vstup · Vstupné tokeny $0.0028 / 1K tokenov
Výstup · Výstupné tokeny $0.0088 / 1K tokenov
Vstup · Čítanie cache $0.00052 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov
KonfiguráciaAnthropic Messages · Základné sadzby za tokenySadzobníkZákladná sadzbaPočet tokenov kontextu väčší než—Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranicePoplatok
Vstup · Vstupné tokeny $0.0028 / 1K tokenov
Výstup · Výstupné tokeny $0.0088 / 1K tokenov
Vstup · Čítanie cache $0.00052 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov
KonfiguráciaAnthropic Messages · Pásmo 1 podľa dĺžky požiadavkySadzobník—Počet tokenov kontextu väčší než0Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranicePoplatok
Vstup · Vstupné tokeny $0.0028 / 1K tokenov
Výstup · Výstupné tokeny $0.0088 / 1K tokenov
Vstup · Čítanie cache $0.00052 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov

Príklady požiadaviek

Ailoot · OpenAI Chat

Príklad textuPython SDKNode.js SDKStreamovanie v jazyku Python
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 source-material file}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "glm-latest", "messages": []}')
f=Path(os.environ["AILOOT_TEXT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 source material")
text=f.read_text(encoding="utf-8")
if not text.strip():raise SystemExit("Source material must contain text")
p["messages"]=[{"role":"user","content":"Summarize this material and quote supporting source passages.\n\n"+text}]
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/chat/completions \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
print(json.dumps(json.loads(Path("result.json").read_text()),ensure_ascii=False,indent=2))
PY_RESULT
from openai import OpenAI
import os

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client = OpenAI(base_url="https://api.ailoot.ai/v1", api_key=os.environ["AILOOT_API_KEY"], max_retries=0)
resp = client.chat.completions.create(
    model="glm-latest",
    messages=[{"role": "user", "content": "Explain the difference between an observation and a hypothesis in three sentences."}],
)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(resp.to_dict(mode="json"))
import OpenAI from "openai";

if (!process.env.AILOOT_API_KEY?.trim()) throw new Error("Set AILOOT_API_KEY before making a request");
const client = new OpenAI({ baseURL: "https://api.ailoot.ai/v1", apiKey: process.env.AILOOT_API_KEY, maxRetries: 0 });
const resp = await client.chat.completions.create({
  model: "glm-latest",
  messages: [{ role: "user", content: "Explain the difference between an observation and a hypothesis in three sentences." }],
});
import { writeFileSync } from "node:fs";

function saveResult(data, stem = "result") {
  writeFileSync(stem + ".json", JSON.stringify(data, null, 2));
  console.log(JSON.stringify(data, null, 2));
  const saveBlob = (encoded, suffix, label) => {
    const raw = Buffer.from(encoded, "base64");
    const ext = raw.subarray(0,8).equals(Buffer.from([137,80,78,71,13,10,26,10])) ? "png" : raw[0]===255 && raw[1]===216 ? "jpg" : raw.subarray(0,4).toString()==="RIFF" && raw.subarray(8,12).toString()==="WEBP" ? "webp" : suffix;
    const file = `${stem}-${label}.${ext}`;
    writeFileSync(file, raw); console.log("Saved", file);
  };
  for (const [i, block] of (data.content || []).entries()) console.log("Content", i, JSON.stringify(block));
  for (const choice of data.choices || []) console.log("Choice", choice.index, JSON.stringify(choice.message || choice.delta || {}));
  for (const [i, item] of (data.output || []).entries()) {
    console.log("Output", i, JSON.stringify(item));
    if (item.type === "image_generation_call" && item.result) saveBlob(item.result, item.output_format || "bin", `output-${i}`);
  }
  for (const [ci, candidate] of (data.candidates || []).entries()) {
    for (const [pi, part] of (candidate.content?.parts || []).entries()) {
      console.log("Candidate/part", ci, pi, JSON.stringify(part));
      const blob = part.inlineData || part.inline_data;
      if (blob?.data) {
        const mime = blob.mimeType || blob.mime_type;
        const suffix = ({"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"})[mime] || "bin";
        saveBlob(blob.data, suffix, `candidate-${ci}-part-${pi}`);
      }
    }
  }
}

saveResult(resp);
from openai import OpenAI
import os
from pathlib import Path

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

with client.chat.completions.stream(model='glm-latest',messages=[{"role":"user","content":"Explain observations and hypotheses in three sentences."}]) as stream:
    with Path("stream-events.jsonl").open("w",encoding="utf-8") as log:
        for event in stream:
            payload=event.to_dict(mode="json")
            log.write(json.dumps(payload,ensure_ascii=False)+"\n"); log.flush()
            print(json.dumps(payload,ensure_ascii=False))
    final=stream.get_final_completion()
    save_result(final.to_dict(mode="json"),"stream-result")

Prijať a uložiť výsledky

Ailoot · OpenAI Chat

json alebo SSE

Uchovať všetky dokončené výsledky

Uložte každú úplnú vrátenú odpoveď, súbor a časť obsahu.

Zachovajte každý variant odpovede a jeho obsah, volania nástrojov a uvažovanie. V SSE zostavujte čiastkové zmeny podľa indexu variantu/nástroja a zachovajte konečný dôvod ukončenia aj údaje o spotrebe.

Ak treba overiť pôvodnú odpoveď

Zachovajte ID požiadaviek/odpovedí aj hlavičky. Všeobecná URL na načítanie textovej úlohy nie je poskytnutá.

Polia odpovede
PoleTyp
Polechoices[].indexTypinteger
Polechoices[].message.contentTypstring|null
Polechoices[].message.tool_callsTyptool_call[]
Polechoices[].message.reasoning_contentTypstring
Polechoices[].message.reasoning_detailsTypobject|array
Polechoices[].finish_reasonTypstring|null
PoleusageTypobject
Chyby a ďalšie kroky
OdpoveďPodmienkaĎalší krok
Odpoveď400 · invalid_request_errorPodmienkaNeplatné povinné polia, reprezentácia materiálu alebo hodnota parametraĎalší krokPred novou požiadavkou na vytvorenie opravte uvedené polia.

Aliasy

Aliasy modelov

Ailoot glm-5.3, glm, glm-5, glm-5.1, glm-5.2, glm-latest
Ailoot Ultra glm-5.3, z-ai/glm-5.3, ~z-ai/glm-latest

Aliasy ciest metód

/chat/completions

Súvisiace ID na volanie

z-ai/glm-5.3, glm, glm-5, glm-5.1, glm-5.2, glm-latest, ~z-ai/glm-latest, glm-5.3, glm-5.3

Ailoot Ultra · OpenAI Chat POST /v1/chat/completions z-ai/glm-5.3

z-ai/glm-5.3

Z.ai /z-ai/glm-5.3
ID modelu
  • glm-5.3
  • z-ai/glm-5.3
  • ~z-ai/glm-latest

Úvod

Z.ai GLM 5.3 je textový model na uvažovanie pre zložité softvérové inžinierstvo, prácu v termináli a agentov s dlhým horizontom úloh. Podporuje výrobcom zdokumentovaný kontext s rozsahom 1M tokenov, výstup až 128K tokenov, volanie funkcií a úsilie uvažovania low/high/max, pričom uvažovanie je zapnuté po celý čas.

Povolené vstupy
Text
Výsledky
Text

Dostupné v Ailoot · vstupy a metódy

Ailoot Ultra · OpenAI Chat POST /v1/chat/completions
Vstup
text
Výstup
text
Výstupný formát
json alebo SSE
PoleTypPožiadavkaHodnoty a limityPredvolené
PolemodelTypstringPožiadavkaPovinnéHodnoty a limity
z-ai/glm-5.3
Predvolené—
PolemessagesTypmessage[]PožiadavkaPovinnéHodnoty a limity
Minimálny počet položiek: 1
Predvolené—
Polemessages[].roleTypstringPožiadavkaPovinnéHodnoty a limity
Príklady: system, user, assistant, tool, function
Podmienky: Tieto roly sú výslovne zastúpené typmi kompatibility v zdrojovom kóde; presný súbor rolí zostáva závislý od modelu.
Závisí od modelu
Predvolené—
Polemessages[].contentTypstring|content_part[]|nullPožiadavkaVoliteľnéHodnoty a limityPredvolené—
Polemessages[].tool_callsTyptool_call[]PožiadavkaVoliteľnéHodnoty a limityPredvolené—
Polemessages[].tool_call_idTypstringPožiadavkaVoliteľnéHodnoty a limity
Platí, keď: role=tool; použite skutočne vrátené ID
Predvolené—
Polemessages[].nameTypstringPožiadavkaVoliteľnéHodnoty a limityPredvolené—
Polemessages[].reasoning_contentTypstringPožiadavkaVoliteľnéHodnoty a limity
Platí, keď: Posielajte späť skutočne vrátené uvažovanie, ak ho tento model používa
Predvolené—
Polemessages[].reasoning_detailsTypobject|arrayPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Polemax_tokensTypintegerPožiadavkaVoliteľnéHodnoty a limity
Minimum: 1
Závisí od modelu
Predvolené—
Polemax_completion_tokensTypintegerPožiadavkaVoliteľnéHodnoty a limity
Minimum: 1
Závisí od modelu
Predvolené—
PolestreamTypbooleanPožiadavkaVoliteľnéHodnoty a limityPredvolenéfalse
Polestream_options.include_usageTypbooleanPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
PoletemperatureTypnumberPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poletop_pTypnumberPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
PolestopTypstring|string[]PožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
PoletoolsTypfunction_tool[]PožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poletools[].typeTypstringPožiadavkaVoliteľnéHodnoty a limity
function
Závisí od modelu
Predvolené—
Poletools[].function.nameTypstringPožiadavkaPovinnéHodnoty a limity
Platí, keď: poskytnutý nástroj typu funkcia
Predvolené—
Poletools[].function.descriptionTypstringPožiadavkaVoliteľnéHodnoty a limityPredvolené—
Poletools[].function.parametersTypJSON_schemaPožiadavkaVoliteľnéHodnoty a limityPredvolené—
Poletool_choiceTypstring|objectPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poleparallel_tool_callsTypbooleanPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poleresponse_formatTypobjectPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Polereasoning_effortTypstringPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
PolereasoningTypobjectPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poleservice_tierTypstringPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
PoleinstructionsTypstringPožiadavkaVoliteľnéHodnoty a limity
Pole kompatibility
Predvolené—
PolefunctionsTypfunction[]PožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Polefunction_callTypstring|objectPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poleprompt_cache_optionsTypobjectPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
PolemodalitiesTypstring[]PožiadavkaVoliteľnéHodnoty a limity
text
Predvolené—
PoleproviderTypobjectPožiadavkaVoliteľnéHodnoty a limity
Podmienky: provider.options sa na tejto textovej trase Ultra odmieta
Predvolené—
Polecache_control.ttlTypstringPožiadavkaVoliteľnéHodnoty a limity
Podmienky: Hodnota 1h sa v skutočne používaných poliach cache promptov odmieta
Predvolené—
Kombinácie vstupných podkladov

Text · Text UTF8

messages[].content

Parametre a životný cyklus metódy
ParameterŠpecifikácia
Parametercontent_typeŠpecifikáciaapplication/json
ParameterrequiredŠpecifikáciamodel, messages
Parametermaterial_typesŠpecifikáciatext
ParametermessagesŠpecifikáciapole správ so štruktúrou role/content
Parameterfile_materialŠpecifikáciaskutočný dokument UTF-8 vložený ako doslovný text; ID súboru sa neodvodzuje
Parameteroptional_controlsŠpecifikáciastream, temperature, top_p, stop, max_tokens, max_completion_tokens, reasoning, response_format, tools, tool_choice
Parametercontrol_scopeŠpecifikáciazávisí od modelu; používateľské nástroje typu funkcia sa líšia od nástrojov prevádzkovaných službou
Parameteroutput_modalitiesŠpecifikáciatext
Parameterhosted_operationsŠpecifikáciafalse
Parametermultimodal_input_bindingŠpecifikácianull

Životný cyklus: synchronous_or_streamed

Pošlite presné ID modelu spolu s messages.

Dĺžka kontextu nie je horná hranica výstupu.

Textový súbor môže poskytnúť doslovný text; obrazové a zvukové vstupy a vstupy so súborovými objektmi potrebujú presné naviazanie.

Cenník

Tarifné údaje nepridávajú možnosti požiadavky. Podporované parametre sú uvedené pri vybranej metóde.

Rýchly režim
Štandardná sadzba Keď je zvolený rýchly režim
Režim Flex
Štandardná sadzba Keď je zvolený režim flex
Maximálna úroveň uvažovania
Štandardná sadzba Keď sa pri maximálnej úrovni uvažovania používa predvolená úprava (default)
Úroveň uvažovania · vysoká
Štandardná sadzba Keď je úroveň uvažovania vysoká
Úroveň uvažovania · nízka
Štandardná sadzba Keď je úroveň uvažovania nízka
Úroveň uvažovania · maximálna
Štandardná sadzba Keď je úroveň uvažovania maximálna

Sadzby Ailoot

Ceny podľa konfigurácie

Každý poplatok priraďte k zobrazeným podmienkam. Pre každú skupinu alternatívnych konfigurácií použite jednu sadzbu.

KonfiguráciaSadzobníkPočet tokenov kontextu väčší nežTokeny kontextu, najviac (vrátane hranice)Poplatok
KonfiguráciaZákladné sadzby za tokenySadzobníkZákladná sadzbaPočet tokenov kontextu väčší než—Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranicePoplatok
Vstup · Vstupné tokeny $0.0028 / 1K tokenov
Výstup · Výstupné tokeny $0.0088 / 1K tokenov
Vstup · Čítanie cache $0.00052 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov
KonfiguráciaPásmo dĺžky požiadavky 1Sadzobník—Počet tokenov kontextu väčší než0Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranicePoplatok
Vstup · Vstupné tokeny $0.0028 / 1K tokenov
Výstup · Výstupné tokeny $0.0088 / 1K tokenov
Vstup · Čítanie cache $0.00052 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov

Ailoot pred požiadavkou rezervuje odhadovanú sumu. Po získaní výsledku vyúčtuje konečný poplatok podľa nameraného využitia. Pri streamovaní sa vyúčtovanie riadi konečným záznamom využitia. Ako funguje rezervácia a vyúčtovanie →

Príklady požiadaviek

Ailoot Ultra · OpenAI Chat

curlPython SDKStreamovanie v jazyku Python
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "z-ai/glm-5.3", "messages": [{"role": "user", "content": "Explain the difference between an observation and a hypothesis in three sentences."}]}')

Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/chat/completions \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
r=json.loads(Path("result.json").read_text())
for x in r.get("choices",[]):
    if x.get("message",{}).get("content"): print(x["message"]["content"])
PY_RESULT
from openai import OpenAI
import os

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
result=client.chat.completions.create(model='z-ai/glm-5.3',messages=[{"role":"user","content":"Explain observations and hypotheses in three sentences."}])
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(result.to_dict(mode="json"))
from openai import OpenAI
import os
from pathlib import Path

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

with client.chat.completions.stream(model='z-ai/glm-5.3',messages=[{"role":"user","content":"Explain observations and hypotheses in three sentences."}]) as stream:
    with Path("stream-events.jsonl").open("w",encoding="utf-8") as log:
        for event in stream:
            payload=event.to_dict(mode="json")
            log.write(json.dumps(payload,ensure_ascii=False)+"\n"); log.flush()
            print(json.dumps(payload,ensure_ascii=False))
    final=stream.get_final_completion()
    save_result(final.to_dict(mode="json"),"stream-result")

Prijať a uložiť výsledky

Ailoot Ultra · OpenAI Chat

json alebo SSE

Uchovať všetky dokončené výsledky

Uložte každú úplnú vrátenú odpoveď, súbor a časť obsahu.

Zachovajte každý variant odpovede a jeho obsah, volania nástrojov a uvažovanie. V SSE zostavujte čiastkové zmeny podľa indexu variantu/nástroja a zachovajte konečný dôvod ukončenia aj údaje o spotrebe.

Ak treba overiť pôvodnú odpoveď

Zachovajte ID požiadaviek/odpovedí aj hlavičky. Všeobecná URL na načítanie textovej úlohy nie je poskytnutá.

Polia odpovede
PoleTyp
Polechoices[].indexTypinteger
Polechoices[].message.contentTypstring|null
Polechoices[].message.tool_callsTyptool_call[]
Polechoices[].message.reasoning_contentTypstring
Polechoices[].message.reasoning_detailsTypobject|array
Polechoices[].finish_reasonTypstring|null
PoleusageTypobject
Chyby a ďalšie kroky
OdpoveďPodmienkaĎalší krok
Odpoveď400 · invalid_request_errorPodmienkaNeplatné povinné polia, reprezentácia materiálu alebo hodnota parametraĎalší krokPred novou požiadavkou na vytvorenie opravte uvedené polia.

Aliasy

Aliasy modelov

Ailoot glm-5.3, glm, glm-5, glm-5.1, glm-5.2, glm-latest
Ailoot Ultra glm-5.3, z-ai/glm-5.3, ~z-ai/glm-latest

Aliasy ciest metód

/chat/completions

Súvisiace ID na volanie

z-ai/glm-5.3, glm, glm-5, glm-5.1, glm-5.2, glm-latest, ~z-ai/glm-latest, glm-5.3, glm-5.3

Ailoot Ultra · Anthropic Messages POST /v1/messages z-ai/glm-5.3

z-ai/glm-5.3

Z.ai /z-ai/glm-5.3
ID modelu
  • glm-5.3
  • z-ai/glm-5.3
  • ~z-ai/glm-latest

Úvod

Z.ai GLM 5.3 je textový model na uvažovanie pre zložité softvérové inžinierstvo, prácu v termináli a agentov s dlhým horizontom úloh. Podporuje výrobcom zdokumentovaný kontext s rozsahom 1M tokenov, výstup až 128K tokenov, volanie funkcií a úsilie uvažovania low/high/max, pričom uvažovanie je zapnuté po celý čas.

Povolené vstupy
Text
Výsledky
json · sse

Dostupné v Ailoot · vstupy a metódy

Ailoot Ultra · Anthropic Messages POST /v1/messages
Vstup
text
Výstup
json, sse
Výstupný formát
JSON alebo SSE
PoleTypPožiadavkaHodnoty a limityPredvolené
PolemodelTypstringPožiadavkaPovinnéHodnoty a limity
z-ai/glm-5.3
Predvolené—
PolemessagesTypmessage[]PožiadavkaPovinnéHodnoty a limityPredvolené—
Polemessages[].roleTypstringPožiadavkaPovinnéHodnoty a limity
user, assistant
Predvolené—
Polemessages[].contentTypstringPožiadavkaPovinnéHodnoty a limityPredvolené—
Polemax_tokensTypintegerPožiadavkaPovinnéHodnoty a limityPredvolené—
PolestreamTypbooleanPožiadavkaVoliteľnéHodnoty a limityPredvolenéfalse
Kombinácie vstupných podkladov

Text · Text UTF-8

reťazec messages[].content

Parametre a životný cyklus metódy
ParameterŠpecifikácia
Parametercontent_typeŠpecifikáciaapplication/json
ParameterrequiredŠpecifikáciamodel, messages, max_tokens
Parameteroptional_controlsŠpecifikáciastream
Parametermaterial_typesŠpecifikáciatext
Parametertext_file_materialŠpecifikáciaPrečítajte skutočný dokument UTF-8 a vložte jeho text do uvedeného vstupného reťazca alebo reťazca obsahu správy.

Životný cyklus: synchronous_or_streamed

Cenník

Tarifné údaje nepridávajú možnosti požiadavky. Podporované parametre sú uvedené pri vybranej metóde.

Rýchly režim
Štandardná sadzba Keď je zvolený rýchly režim
Režim Flex
Štandardná sadzba Keď je zvolený režim flex
Maximálna úroveň uvažovania
Štandardná sadzba Keď sa pri maximálnej úrovni uvažovania používa predvolená úprava (default)
Úroveň uvažovania · vysoká
Štandardná sadzba Keď je úroveň uvažovania vysoká
Úroveň uvažovania · nízka
Štandardná sadzba Keď je úroveň uvažovania nízka
Úroveň uvažovania · maximálna
Štandardná sadzba Keď je úroveň uvažovania maximálna

Sadzby Ailoot

Ceny podľa konfigurácie

Každý poplatok priraďte k zobrazeným podmienkam. Pre každú skupinu alternatívnych konfigurácií použite jednu sadzbu.

KonfiguráciaSadzobníkPočet tokenov kontextu väčší nežTokeny kontextu, najviac (vrátane hranice)Poplatok
KonfiguráciaZákladné sadzby za tokenySadzobníkZákladná sadzbaPočet tokenov kontextu väčší než—Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranicePoplatok
Vstup · Vstupné tokeny $0.0028 / 1K tokenov
Výstup · Výstupné tokeny $0.0088 / 1K tokenov
Vstup · Čítanie cache $0.00052 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov
KonfiguráciaPásmo dĺžky požiadavky 1Sadzobník—Počet tokenov kontextu väčší než0Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranicePoplatok
Vstup · Vstupné tokeny $0.0028 / 1K tokenov
Výstup · Výstupné tokeny $0.0088 / 1K tokenov
Vstup · Čítanie cache $0.00052 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov

Ailoot pred požiadavkou rezervuje odhadovanú sumu. Po získaní výsledku vyúčtuje konečný poplatok podľa nameraného využitia. Pri streamovaní sa vyúčtovanie riadi konečným záznamom využitia. Ako funguje rezervácia a vyúčtovanie →

Príklady požiadaviek

Ailoot Ultra · Anthropic Messages

Úplné minimálne telo požiadavky vo formáte JSONcurl · použite svoj dokument UTF-8Python · uložte úplný výsledok
{
  "model": "z-ai/glm-5.3",
  "max_tokens": 128,
  "messages": [
    {
      "role": "user",
      "content": "Summarize the incident report."
    }
  ],
  "stream": false
}
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 document}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json, os
from pathlib import Path

source_file = Path(os.environ['AILOOT_TEXT_FILE'])
if not source_file.is_file():
    raise SystemExit('Set AILOOT_TEXT_FILE to your actual UTF-8 document')
text = source_file.read_text(encoding='utf-8')
if not text.strip():
    raise SystemExit('Choose a document containing text')
payload = {'model': 'z-ai/glm-5.3', 'max_tokens': 128, 'messages': [{'role': 'user', 'content': 'Summarize the incident report.'}]}
payload['messages'][0]['content'] = 'Summarize this material and quote supporting source passages.\n\n' + text
Path('request.json').write_text(json.dumps(payload, ensure_ascii=False), encoding='utf-8')
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/messages \
  -H "x-api-key: $AILOOT_API_KEY" -H 'anthropic-version: 2023-06-01' -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path

result = json.loads(Path('result.json').read_text(encoding='utf-8'))
print(json.dumps(result, ensure_ascii=False, indent=2))
PY_RESULT
import json, os
from pathlib import Path

source_file = Path(os.environ['AILOOT_TEXT_FILE'])
if not source_file.is_file():
    raise SystemExit('Set AILOOT_TEXT_FILE to your actual UTF-8 document')
text = source_file.read_text(encoding='utf-8')
if not text.strip():
    raise SystemExit('Choose a document containing text')
payload = {'model': 'z-ai/glm-5.3', 'max_tokens': 128, 'messages': [{'role': 'user', 'content': 'Summarize the incident report.'}]}
payload['messages'][0]['content'] = 'Summarize this material and quote supporting source passages.\n\n' + text
from urllib.request import Request, urlopen
from urllib.error import HTTPError

api_key = os.environ['AILOOT_API_KEY']
if not api_key.strip():
    raise SystemExit('Set AILOOT_API_KEY before making a request')
headers = {'x-api-key': 'PLACEHOLDER_KEY', 'anthropic-version': '2023-06-01', 'Content-Type': 'application/json'}
headers['x-api-key'] = api_key
request = Request('https://api.ailoot.ai/v1/messages', data=json.dumps(payload, ensure_ascii=False).encode('utf-8'), headers=headers, method='POST')
try:
    with urlopen(request, timeout=120) as response:
        raw = response.read()
        Path('response-headers.txt').write_text(str(response.headers), encoding='utf-8')
except HTTPError as error:
    Path('result.json').write_bytes(error.read())
    Path('response-headers.txt').write_text(str(error.headers), encoding='utf-8')
    raise
Path('result.json').write_bytes(raw)
import json
from pathlib import Path

result = json.loads(Path('result.json').read_text(encoding='utf-8'))
print(json.dumps(result, ensure_ascii=False, indent=2))

Prijať a uložiť výsledky

Ailoot Ultra · Anthropic Messages

JSON alebo SSE

Uchovať všetky dokončené výsledky

Uložte každú úplnú vrátenú odpoveď, súbor a časť obsahu.

Zachovajte všetky bloky obsahu, podpisy uvažovania a skutočné ID volaní nástrojov. Zostavte všetky čiastkové zmeny blokov SSE; prvý textový blok nie je celý výstup.

Ak treba overiť pôvodnú odpoveď

Zachovajte ID požiadaviek/odpovedí aj hlavičky. Všeobecná URL na načítanie textovej úlohy nie je poskytnutá.

Polia odpovede
PoleTyp
PoleidTypstring
PolemodelTypstring
Polecontent[]Typtext|thinking|tool_use|other content block
Polestop_reasonTypstring|null
PoleusageTypobject
Chyby a ďalšie kroky
OdpoveďPodmienkaĎalší krok
Odpoveď400 · invalid_request_errorPodmienkaNeplatné povinné polia, reprezentácia materiálu alebo hodnota parametraĎalší krokPred novou požiadavkou na vytvorenie opravte uvedené polia.

Aliasy

Aliasy modelov

Ailoot glm-5.3, glm, glm-5, glm-5.1, glm-5.2, glm-latest
Ailoot Ultra glm-5.3, z-ai/glm-5.3, ~z-ai/glm-latest

Aliasy ciest metód

/chat/completions

Súvisiace ID na volanie

z-ai/glm-5.3, glm, glm-5, glm-5.1, glm-5.2, glm-latest, ~z-ai/glm-latest, glm-5.3, glm-5.3

Ailoot Ultra · OpenAI Chat POST /v1/chat/completions ~z-ai/glm-latest

~z-ai/glm-latest

Z.ai /~z-ai/glm-latest
ID modelu
  • glm-5.3
  • z-ai/glm-5.3
  • ~z-ai/glm-latest

Úvod

Z.ai GLM 5.3 je textový model na uvažovanie pre zložité softvérové inžinierstvo, prácu v termináli a agentov s dlhým horizontom úloh. Podporuje výrobcom zdokumentovaný kontext s rozsahom 1M tokenov, výstup až 128K tokenov, volanie funkcií a úsilie uvažovania low/high/max, pričom uvažovanie je zapnuté po celý čas.

Povolené vstupy
Text
Výsledky
Text

Dostupné v Ailoot · vstupy a metódy

Ailoot Ultra · OpenAI Chat POST /v1/chat/completions
Vstup
text
Výstup
text
Výstupný formát
json alebo SSE
PoleTypPožiadavkaHodnoty a limityPredvolené
PolemodelTypstringPožiadavkaPovinnéHodnoty a limity
~z-ai/glm-latest
Predvolené—
PolemessagesTypmessage[]PožiadavkaPovinnéHodnoty a limity
Minimálny počet položiek: 1
Predvolené—
Polemessages[].roleTypstringPožiadavkaPovinnéHodnoty a limity
Príklady: system, user, assistant, tool, function
Podmienky: Tieto roly sú výslovne zastúpené typmi kompatibility v zdrojovom kóde; presný súbor rolí zostáva závislý od modelu.
Závisí od modelu
Predvolené—
Polemessages[].contentTypstring|content_part[]|nullPožiadavkaVoliteľnéHodnoty a limityPredvolené—
Polemessages[].tool_callsTyptool_call[]PožiadavkaVoliteľnéHodnoty a limityPredvolené—
Polemessages[].tool_call_idTypstringPožiadavkaVoliteľnéHodnoty a limity
Platí, keď: role=tool; použite skutočne vrátené ID
Predvolené—
Polemessages[].nameTypstringPožiadavkaVoliteľnéHodnoty a limityPredvolené—
Polemessages[].reasoning_contentTypstringPožiadavkaVoliteľnéHodnoty a limity
Platí, keď: Posielajte späť skutočne vrátené uvažovanie, ak ho tento model používa
Predvolené—
Polemessages[].reasoning_detailsTypobject|arrayPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Polemax_tokensTypintegerPožiadavkaVoliteľnéHodnoty a limity
Minimum: 1
Závisí od modelu
Predvolené—
Polemax_completion_tokensTypintegerPožiadavkaVoliteľnéHodnoty a limity
Minimum: 1
Závisí od modelu
Predvolené—
PolestreamTypbooleanPožiadavkaVoliteľnéHodnoty a limityPredvolenéfalse
Polestream_options.include_usageTypbooleanPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
PoletemperatureTypnumberPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poletop_pTypnumberPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
PolestopTypstring|string[]PožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
PoletoolsTypfunction_tool[]PožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poletools[].typeTypstringPožiadavkaVoliteľnéHodnoty a limity
function
Závisí od modelu
Predvolené—
Poletools[].function.nameTypstringPožiadavkaPovinnéHodnoty a limity
Platí, keď: poskytnutý nástroj typu funkcia
Predvolené—
Poletools[].function.descriptionTypstringPožiadavkaVoliteľnéHodnoty a limityPredvolené—
Poletools[].function.parametersTypJSON_schemaPožiadavkaVoliteľnéHodnoty a limityPredvolené—
Poletool_choiceTypstring|objectPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poleparallel_tool_callsTypbooleanPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poleresponse_formatTypobjectPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Polereasoning_effortTypstringPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
PolereasoningTypobjectPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poleservice_tierTypstringPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
PoleinstructionsTypstringPožiadavkaVoliteľnéHodnoty a limity
Pole kompatibility
Predvolené—
PolefunctionsTypfunction[]PožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Polefunction_callTypstring|objectPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
Poleprompt_cache_optionsTypobjectPožiadavkaVoliteľnéHodnoty a limity
Závisí od modelu
Predvolené—
PolemodalitiesTypstring[]PožiadavkaVoliteľnéHodnoty a limity
text
Predvolené—
PoleproviderTypobjectPožiadavkaVoliteľnéHodnoty a limity
Podmienky: provider.options sa na tejto textovej trase Ultra odmieta
Predvolené—
Polecache_control.ttlTypstringPožiadavkaVoliteľnéHodnoty a limity
Podmienky: Hodnota 1h sa v skutočne používaných poliach cache promptov odmieta
Predvolené—
Kombinácie vstupných podkladov

Text · Text UTF8

messages[].content

Parametre a životný cyklus metódy
ParameterŠpecifikácia
Parametercontent_typeŠpecifikáciaapplication/json
ParameterrequiredŠpecifikáciamodel, messages
Parametermaterial_typesŠpecifikáciatext
ParametermessagesŠpecifikáciapole správ so štruktúrou role/content
Parameterfile_materialŠpecifikáciaskutočný dokument UTF-8 vložený ako doslovný text; ID súboru sa neodvodzuje
Parameteroptional_controlsŠpecifikáciastream, temperature, top_p, stop, max_tokens, max_completion_tokens, reasoning, response_format, tools, tool_choice
Parametercontrol_scopeŠpecifikáciazávisí od modelu; používateľské nástroje typu funkcia sa líšia od nástrojov prevádzkovaných službou
Parameteroutput_modalitiesŠpecifikáciatext
Parameterhosted_operationsŠpecifikáciafalse
Parametermultimodal_input_bindingŠpecifikácianull

Životný cyklus: synchronous_or_streamed

Pošlite presné ID modelu spolu s messages.

Dĺžka kontextu nie je horná hranica výstupu.

Textový súbor môže poskytnúť doslovný text; obrazové a zvukové vstupy a vstupy so súborovými objektmi potrebujú presné naviazanie.

Cenník

Tarifné údaje nepridávajú možnosti požiadavky. Podporované parametre sú uvedené pri vybranej metóde.

Rýchly režim
Štandardná sadzba Keď je zvolený rýchly režim
Režim Flex
Štandardná sadzba Keď je zvolený režim flex
Maximálna úroveň uvažovania
Štandardná sadzba Keď sa pri maximálnej úrovni uvažovania používa predvolená úprava (default)
Úroveň uvažovania · vysoká
Štandardná sadzba Keď je úroveň uvažovania vysoká
Úroveň uvažovania · nízka
Štandardná sadzba Keď je úroveň uvažovania nízka
Úroveň uvažovania · maximálna
Štandardná sadzba Keď je úroveň uvažovania maximálna

Sadzby Ailoot

Ceny podľa konfigurácie

Každý poplatok priraďte k zobrazeným podmienkam. Pre každú skupinu alternatívnych konfigurácií použite jednu sadzbu.

KonfiguráciaSadzobníkPočet tokenov kontextu väčší nežTokeny kontextu, najviac (vrátane hranice)Poplatok
KonfiguráciaZákladné sadzby za tokenySadzobníkZákladná sadzbaPočet tokenov kontextu väčší než—Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranicePoplatok
Vstup · Vstupné tokeny $0.0028 / 1K tokenov
Výstup · Výstupné tokeny $0.0088 / 1K tokenov
Vstup · Čítanie cache $0.00052 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov
KonfiguráciaPásmo dĺžky požiadavky 1Sadzobník—Počet tokenov kontextu väčší než0Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranicePoplatok
Vstup · Vstupné tokeny $0.0028 / 1K tokenov
Výstup · Výstupné tokeny $0.0088 / 1K tokenov
Vstup · Čítanie cache $0.00052 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov

Ailoot pred požiadavkou rezervuje odhadovanú sumu. Po získaní výsledku vyúčtuje konečný poplatok podľa nameraného využitia. Pri streamovaní sa vyúčtovanie riadi konečným záznamom využitia. Ako funguje rezervácia a vyúčtovanie →

Príklady požiadaviek

Ailoot Ultra · OpenAI Chat

curlPython SDKStreamovanie v jazyku Python
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "~z-ai/glm-latest", "messages": [{"role": "user", "content": "Explain the difference between an observation and a hypothesis in three sentences."}]}')

Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/chat/completions \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
r=json.loads(Path("result.json").read_text())
for x in r.get("choices",[]):
    if x.get("message",{}).get("content"): print(x["message"]["content"])
PY_RESULT
from openai import OpenAI
import os

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
result=client.chat.completions.create(model='~z-ai/glm-latest',messages=[{"role":"user","content":"Explain observations and hypotheses in three sentences."}])
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(result.to_dict(mode="json"))
from openai import OpenAI
import os
from pathlib import Path

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

with client.chat.completions.stream(model='~z-ai/glm-latest',messages=[{"role":"user","content":"Explain observations and hypotheses in three sentences."}]) as stream:
    with Path("stream-events.jsonl").open("w",encoding="utf-8") as log:
        for event in stream:
            payload=event.to_dict(mode="json")
            log.write(json.dumps(payload,ensure_ascii=False)+"\n"); log.flush()
            print(json.dumps(payload,ensure_ascii=False))
    final=stream.get_final_completion()
    save_result(final.to_dict(mode="json"),"stream-result")

Prijať a uložiť výsledky

Ailoot Ultra · OpenAI Chat

json alebo SSE

Uchovať všetky dokončené výsledky

Uložte každú úplnú vrátenú odpoveď, súbor a časť obsahu.

Zachovajte každý variant odpovede a jeho obsah, volania nástrojov a uvažovanie. V SSE zostavujte čiastkové zmeny podľa indexu variantu/nástroja a zachovajte konečný dôvod ukončenia aj údaje o spotrebe.

Ak treba overiť pôvodnú odpoveď

Zachovajte ID požiadaviek/odpovedí aj hlavičky. Všeobecná URL na načítanie textovej úlohy nie je poskytnutá.

Polia odpovede
PoleTyp
Polechoices[].indexTypinteger
Polechoices[].message.contentTypstring|null
Polechoices[].message.tool_callsTyptool_call[]
Polechoices[].message.reasoning_contentTypstring
Polechoices[].message.reasoning_detailsTypobject|array
Polechoices[].finish_reasonTypstring|null
PoleusageTypobject
Chyby a ďalšie kroky
OdpoveďPodmienkaĎalší krok
Odpoveď400 · invalid_request_errorPodmienkaNeplatné povinné polia, reprezentácia materiálu alebo hodnota parametraĎalší krokPred novou požiadavkou na vytvorenie opravte uvedené polia.

Aliasy

Aliasy modelov

Ailoot glm-5.3, glm, glm-5, glm-5.1, glm-5.2, glm-latest
Ailoot Ultra glm-5.3, z-ai/glm-5.3, ~z-ai/glm-latest

Aliasy ciest metód

/chat/completions

Súvisiace ID na volanie

z-ai/glm-5.3, glm, glm-5, glm-5.1, glm-5.2, glm-latest, ~z-ai/glm-latest, glm-5.3, glm-5.3

Ailoot Ultra · Anthropic Messages POST /v1/messages ~z-ai/glm-latest

~z-ai/glm-latest

Z.ai /~z-ai/glm-latest
ID modelu
  • glm-5.3
  • z-ai/glm-5.3
  • ~z-ai/glm-latest

Úvod

Z.ai GLM 5.3 je textový model na uvažovanie pre zložité softvérové inžinierstvo, prácu v termináli a agentov s dlhým horizontom úloh. Podporuje výrobcom zdokumentovaný kontext s rozsahom 1M tokenov, výstup až 128K tokenov, volanie funkcií a úsilie uvažovania low/high/max, pričom uvažovanie je zapnuté po celý čas.

Povolené vstupy
Text
Výsledky
json · sse

Dostupné v Ailoot · vstupy a metódy

Ailoot Ultra · Anthropic Messages POST /v1/messages
Vstup
text
Výstup
json, sse
Výstupný formát
JSON alebo SSE
PoleTypPožiadavkaHodnoty a limityPredvolené
PolemodelTypstringPožiadavkaPovinnéHodnoty a limity
~z-ai/glm-latest
Predvolené—
PolemessagesTypmessage[]PožiadavkaPovinnéHodnoty a limityPredvolené—
Polemessages[].roleTypstringPožiadavkaPovinnéHodnoty a limity
user, assistant
Predvolené—
Polemessages[].contentTypstringPožiadavkaPovinnéHodnoty a limityPredvolené—
Polemax_tokensTypintegerPožiadavkaPovinnéHodnoty a limityPredvolené—
PolestreamTypbooleanPožiadavkaVoliteľnéHodnoty a limityPredvolenéfalse
Kombinácie vstupných podkladov

Text · Text UTF-8

reťazec messages[].content

Parametre a životný cyklus metódy
ParameterŠpecifikácia
Parametercontent_typeŠpecifikáciaapplication/json
ParameterrequiredŠpecifikáciamodel, messages, max_tokens
Parameteroptional_controlsŠpecifikáciastream
Parametermaterial_typesŠpecifikáciatext
Parametertext_file_materialŠpecifikáciaPrečítajte skutočný dokument UTF-8 a vložte jeho text do uvedeného vstupného reťazca alebo reťazca obsahu správy.

Životný cyklus: synchronous_or_streamed

Cenník

Tarifné údaje nepridávajú možnosti požiadavky. Podporované parametre sú uvedené pri vybranej metóde.

Rýchly režim
Štandardná sadzba Keď je zvolený rýchly režim
Režim Flex
Štandardná sadzba Keď je zvolený režim flex
Maximálna úroveň uvažovania
Štandardná sadzba Keď sa pri maximálnej úrovni uvažovania používa predvolená úprava (default)
Úroveň uvažovania · vysoká
Štandardná sadzba Keď je úroveň uvažovania vysoká
Úroveň uvažovania · nízka
Štandardná sadzba Keď je úroveň uvažovania nízka
Úroveň uvažovania · maximálna
Štandardná sadzba Keď je úroveň uvažovania maximálna

Sadzby Ailoot

Ceny podľa konfigurácie

Každý poplatok priraďte k zobrazeným podmienkam. Pre každú skupinu alternatívnych konfigurácií použite jednu sadzbu.

KonfiguráciaSadzobníkPočet tokenov kontextu väčší nežTokeny kontextu, najviac (vrátane hranice)Poplatok
KonfiguráciaZákladné sadzby za tokenySadzobníkZákladná sadzbaPočet tokenov kontextu väčší než—Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranicePoplatok
Vstup · Vstupné tokeny $0.0028 / 1K tokenov
Výstup · Výstupné tokeny $0.0088 / 1K tokenov
Vstup · Čítanie cache $0.00052 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov
KonfiguráciaPásmo dĺžky požiadavky 1Sadzobník—Počet tokenov kontextu väčší než0Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranicePoplatok
Vstup · Vstupné tokeny $0.0028 / 1K tokenov
Výstup · Výstupné tokeny $0.0088 / 1K tokenov
Vstup · Čítanie cache $0.00052 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov

Ailoot pred požiadavkou rezervuje odhadovanú sumu. Po získaní výsledku vyúčtuje konečný poplatok podľa nameraného využitia. Pri streamovaní sa vyúčtovanie riadi konečným záznamom využitia. Ako funguje rezervácia a vyúčtovanie →

Príklady požiadaviek

Ailoot Ultra · Anthropic Messages

Úplné minimálne telo požiadavky vo formáte JSONcurl · použite svoj dokument UTF-8Python · uložte úplný výsledok
{
  "model": "~z-ai/glm-latest",
  "max_tokens": 128,
  "messages": [
    {
      "role": "user",
      "content": "Summarize the incident report."
    }
  ],
  "stream": false
}
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 document}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json, os
from pathlib import Path

source_file = Path(os.environ['AILOOT_TEXT_FILE'])
if not source_file.is_file():
    raise SystemExit('Set AILOOT_TEXT_FILE to your actual UTF-8 document')
text = source_file.read_text(encoding='utf-8')
if not text.strip():
    raise SystemExit('Choose a document containing text')
payload = {'model': '~z-ai/glm-latest', 'max_tokens': 128, 'messages': [{'role': 'user', 'content': 'Summarize the incident report.'}]}
payload['messages'][0]['content'] = 'Summarize this material and quote supporting source passages.\n\n' + text
Path('request.json').write_text(json.dumps(payload, ensure_ascii=False), encoding='utf-8')
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/messages \
  -H "x-api-key: $AILOOT_API_KEY" -H 'anthropic-version: 2023-06-01' -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path

result = json.loads(Path('result.json').read_text(encoding='utf-8'))
print(json.dumps(result, ensure_ascii=False, indent=2))
PY_RESULT
import json, os
from pathlib import Path

source_file = Path(os.environ['AILOOT_TEXT_FILE'])
if not source_file.is_file():
    raise SystemExit('Set AILOOT_TEXT_FILE to your actual UTF-8 document')
text = source_file.read_text(encoding='utf-8')
if not text.strip():
    raise SystemExit('Choose a document containing text')
payload = {'model': '~z-ai/glm-latest', 'max_tokens': 128, 'messages': [{'role': 'user', 'content': 'Summarize the incident report.'}]}
payload['messages'][0]['content'] = 'Summarize this material and quote supporting source passages.\n\n' + text
from urllib.request import Request, urlopen
from urllib.error import HTTPError

api_key = os.environ['AILOOT_API_KEY']
if not api_key.strip():
    raise SystemExit('Set AILOOT_API_KEY before making a request')
headers = {'x-api-key': 'PLACEHOLDER_KEY', 'anthropic-version': '2023-06-01', 'Content-Type': 'application/json'}
headers['x-api-key'] = api_key
request = Request('https://api.ailoot.ai/v1/messages', data=json.dumps(payload, ensure_ascii=False).encode('utf-8'), headers=headers, method='POST')
try:
    with urlopen(request, timeout=120) as response:
        raw = response.read()
        Path('response-headers.txt').write_text(str(response.headers), encoding='utf-8')
except HTTPError as error:
    Path('result.json').write_bytes(error.read())
    Path('response-headers.txt').write_text(str(error.headers), encoding='utf-8')
    raise
Path('result.json').write_bytes(raw)
import json
from pathlib import Path

result = json.loads(Path('result.json').read_text(encoding='utf-8'))
print(json.dumps(result, ensure_ascii=False, indent=2))

Prijať a uložiť výsledky

Ailoot Ultra · Anthropic Messages

JSON alebo SSE

Uchovať všetky dokončené výsledky

Uložte každú úplnú vrátenú odpoveď, súbor a časť obsahu.

Zachovajte všetky bloky obsahu, podpisy uvažovania a skutočné ID volaní nástrojov. Zostavte všetky čiastkové zmeny blokov SSE; prvý textový blok nie je celý výstup.

Ak treba overiť pôvodnú odpoveď

Zachovajte ID požiadaviek/odpovedí aj hlavičky. Všeobecná URL na načítanie textovej úlohy nie je poskytnutá.

Polia odpovede
PoleTyp
PoleidTypstring
PolemodelTypstring
Polecontent[]Typtext|thinking|tool_use|other content block
Polestop_reasonTypstring|null
PoleusageTypobject
Chyby a ďalšie kroky
OdpoveďPodmienkaĎalší krok
Odpoveď400 · invalid_request_errorPodmienkaNeplatné povinné polia, reprezentácia materiálu alebo hodnota parametraĎalší krokPred novou požiadavkou na vytvorenie opravte uvedené polia.

Aliasy

Aliasy modelov

Ailoot glm-5.3, glm, glm-5, glm-5.1, glm-5.2, glm-latest
Ailoot Ultra glm-5.3, z-ai/glm-5.3, ~z-ai/glm-latest

Aliasy ciest metód

/chat/completions

Súvisiace ID na volanie

z-ai/glm-5.3, glm, glm-5, glm-5.1, glm-5.2, glm-latest, ~z-ai/glm-latest, glm-5.3, glm-5.3

FAQ · Z.ai: GLM 5.3
Aké vstupy a výsledky sú dostupné?

POST /v1/messages · glm-5.3: text → text

POST /v1/responses · glm-5.3: text → text

POST /v1/chat/completions · glm-5.3: text → text

POST /v1/chat/completions · glm-5.3: text → text

POST /v1/messages · glm-5.3: text → json, sse

POST /v1/messages · glm: text → text

POST /v1/responses · glm: text → text

POST /v1/chat/completions · glm: text → text

POST /v1/messages · glm-5: text → text

POST /v1/responses · glm-5: text → text

POST /v1/chat/completions · glm-5: text → text

POST /v1/messages · glm-5.1: text → text

POST /v1/responses · glm-5.1: text → text

POST /v1/chat/completions · glm-5.1: text → text

POST /v1/messages · glm-5.2: text → text

POST /v1/responses · glm-5.2: text → text

POST /v1/chat/completions · glm-5.2: text → text

POST /v1/messages · glm-latest: text → text

POST /v1/responses · glm-latest: text → text

POST /v1/chat/completions · glm-latest: text → text

POST /v1/chat/completions · z-ai/glm-5.3: text → text

POST /v1/messages · z-ai/glm-5.3: text → json, sse

POST /v1/chat/completions · ~z-ai/glm-latest: text → text

POST /v1/messages · ~z-ai/glm-latest: text → json, sse

Aké polia používa požiadavka?

POST /v1/messages · glm-5.3: model, messages, system, max_tokens, stream, metadata

POST /v1/responses · glm-5.3: model, input, instructions, stream

POST /v1/chat/completions · glm-5.3: model, messages, stream

POST /v1/chat/completions · glm-5.3: model, messages, stream

POST /v1/messages · glm-5.3: model, messages, max_tokens, stream

POST /v1/messages · glm: model, messages, system, max_tokens, stream, metadata

POST /v1/responses · glm: model, input, instructions, stream

POST /v1/chat/completions · glm: model, messages, stream

POST /v1/messages · glm-5: model, messages, system, max_tokens, stream, metadata

POST /v1/responses · glm-5: model, input, instructions, stream

POST /v1/chat/completions · glm-5: model, messages, stream

POST /v1/messages · glm-5.1: model, messages, system, max_tokens, stream, metadata

POST /v1/responses · glm-5.1: model, input, instructions, stream

POST /v1/chat/completions · glm-5.1: model, messages, stream

POST /v1/messages · glm-5.2: model, messages, system, max_tokens, stream, metadata

POST /v1/responses · glm-5.2: model, input, instructions, stream

POST /v1/chat/completions · glm-5.2: model, messages, stream

POST /v1/messages · glm-latest: model, messages, system, max_tokens, stream, metadata

POST /v1/responses · glm-latest: model, input, instructions, stream

POST /v1/chat/completions · glm-latest: model, messages, stream

POST /v1/chat/completions · z-ai/glm-5.3: model, messages, stream, modalities, provider

POST /v1/messages · z-ai/glm-5.3: model, messages, max_tokens, stream

POST /v1/chat/completions · ~z-ai/glm-latest: model, messages, stream, modalities, provider

POST /v1/messages · ~z-ai/glm-latest: model, messages, max_tokens, stream

Aké limity platia?

POST /v1/messages · glm-5.3: ctx: 1000000; max_out: 131072; messages.min_items: 1; max_tokens.minimum: 1

POST /v1/responses · glm-5.3: ctx: 1000000; max_out: 131072

POST /v1/chat/completions · glm-5.3: ctx: 1000000; max_out: 131072; messages.min_items: 1

POST /v1/chat/completions · glm-5.3: messages.min_items: 1

POST /v1/messages · glm: ctx: 1000000; max_out: 131072; messages.min_items: 1; max_tokens.minimum: 1

POST /v1/responses · glm: ctx: 1000000; max_out: 131072

POST /v1/chat/completions · glm: ctx: 1000000; max_out: 131072; messages.min_items: 1

POST /v1/messages · glm-5: ctx: 1000000; max_out: 131072; messages.min_items: 1; max_tokens.minimum: 1

POST /v1/responses · glm-5: ctx: 1000000; max_out: 131072

POST /v1/chat/completions · glm-5: ctx: 1000000; max_out: 131072; messages.min_items: 1

POST /v1/messages · glm-5.1: ctx: 1000000; max_out: 131072; messages.min_items: 1; max_tokens.minimum: 1

POST /v1/responses · glm-5.1: ctx: 1000000; max_out: 131072

POST /v1/chat/completions · glm-5.1: ctx: 1000000; max_out: 131072; messages.min_items: 1

POST /v1/messages · glm-5.2: ctx: 1000000; max_out: 131072; messages.min_items: 1; max_tokens.minimum: 1

POST /v1/responses · glm-5.2: ctx: 1000000; max_out: 131072

POST /v1/chat/completions · glm-5.2: ctx: 1000000; max_out: 131072; messages.min_items: 1

POST /v1/messages · glm-latest: ctx: 1000000; max_out: 131072; messages.min_items: 1; max_tokens.minimum: 1

POST /v1/responses · glm-latest: ctx: 1000000; max_out: 131072

POST /v1/chat/completions · glm-latest: ctx: 1000000; max_out: 131072; messages.min_items: 1

POST /v1/chat/completions · z-ai/glm-5.3: messages.min_items: 1

POST /v1/chat/completions · ~z-ai/glm-latest: messages.min_items: 1

Viac podrobností

Pripojte Ailoot k Claude Code, OpenCode, Hermes alebo vlastnej aplikácii.

Spoločnosť a jej portfólio projektov

Spoločnosť a jej portfólio projektov: milióny zákazníkov; mesačné tržby v miliardách.

Nakupujte tokeny so zľavou.

Zľava predplatného na pravidelnú prácu. Promo kódy až 50% na nákup tokenov.

Predplatné
Na pravidelné požiadavky vyberte tarifu so zľavou.
Promo kód až 50%
Pri nákupe zadajte kód. Cena sa prepočíta podľa prebiehajúcej akcie.
Výdavky v histórii
Pri každej požiadavke sa uloží model, tokeny a suma.

Vybrať predplatné · Zobraziť ceny modelov

Pripojte API k produktu, ktorý predávate.

SaaS, aplikácie a boti podľa ponuky a licenčnej zmluvy Ailoot. Na ďalší predaj požiadajte o licenciu predajcu.

Komerčná aplikácia
Začleňte generovanie textu, obrázkov, videa a zvuku do platených funkcií svojej služby.
Licencia pre predajcu
Pošlite popis projektu a spôsob poskytovania prístupu. Vyžiadajte písomné podmienky použitia a ďalšieho predaja.
Dokumenty na webe
Ponuka, licenčná zmluva a zásady spracovania dát sú dostupné pred pripojením.

Požiadať o licenciu predajcu · Ponuka a licenčná zmluva