Z.ai: GLM 5.3 Flash
GLM 5.3 Flash — визуалды әзірлеуге, құжат талдауға және мәтіндік нәтиже беретін агенттік жұмысқа арналған Z.ai мультимодальды моделі.
- Ailoot · Anthropic хабарламалары
POST /v1/messagesglm-5.3-flash - Ailoot · OpenAI Responses
POST /v1/responsesglm-5.3-flash - Ailoot · OpenAI чаты
POST /v1/chat/completionsglm-5.3-flash - Ailoot Ultra · OpenAI чаты
POST /v1/chat/completionsglm-5.3-flash - Ailoot Ultra · Anthropic хабарламалары
POST /v1/messagesglm-5.3-flash - Ailoot · Anthropic хабарламалары
POST /v1/messagesglm-4.5 - Ailoot · OpenAI Responses
POST /v1/responsesglm-4.5 - Ailoot · OpenAI чаты
POST /v1/chat/completionsglm-4.5 - Ailoot · Anthropic хабарламалары
POST /v1/messagesglm-4.5-air - Ailoot · OpenAI Responses
POST /v1/responsesglm-4.5-air - Ailoot · OpenAI чаты
POST /v1/chat/completionsglm-4.5-air - Ailoot · Anthropic хабарламалары
POST /v1/messagesglm-4.6 - Ailoot · OpenAI Responses
POST /v1/responsesglm-4.6 - Ailoot · OpenAI чаты
POST /v1/chat/completionsglm-4.6 - Ailoot · Anthropic хабарламалары
POST /v1/messagesglm-4.7 - Ailoot · OpenAI Responses
POST /v1/responsesglm-4.7 - Ailoot · OpenAI чаты
POST /v1/chat/completionsglm-4.7 - Ailoot · Anthropic хабарламалары
POST /v1/messagesglm-5-turbo - Ailoot · OpenAI Responses
POST /v1/responsesglm-5-turbo - Ailoot · OpenAI чаты
POST /v1/chat/completionsglm-5-turbo - Ailoot · Anthropic хабарламалары
POST /v1/messagesglm-flash - Ailoot · OpenAI Responses
POST /v1/responsesglm-flash - Ailoot · OpenAI чаты
POST /v1/chat/completionsglm-flash - Ailoot · Anthropic хабарламалары
POST /v1/messagesglm-flash-latest - Ailoot · OpenAI Responses
POST /v1/responsesglm-flash-latest - Ailoot · OpenAI чаты
POST /v1/chat/completionsglm-flash-latest - Ailoot · Anthropic хабарламалары
POST /v1/messagesz-ai/glm-5.3-flash - Ailoot · OpenAI чаты
POST /v1/chat/completionsz-ai/glm-5.3-flash - Ailoot Ultra · OpenAI чаты
POST /v1/chat/completionsz-ai/glm-5.3-flash - Ailoot Ultra · Anthropic хабарламалары
POST /v1/messagesz-ai/glm-5.3-flash - Ailoot Ultra · OpenAI чаты
POST /v1/chat/completions~z-ai/glm-flash-latest - Ailoot Ultra · Anthropic хабарламалары
POST /v1/messages~z-ai/glm-flash-latest
Модель туралы
Бұл сипаттама модель мүмкіндіктерін қамтиды. Ailoot жүйесінде таңдалған әдіс үшін қолжетімді кіріс, шығыс және параметрлер төменде берілген.
Жұмысқа арналған мультимодальды модель
GLM 5.3 Flash мәтінді, суреттерді, видеоны және файлдарды түсінуді біріктіреді. Ол мәтіндік жауап қалыптастырады және визуалды кері байланыспен бағдарламалауға, құжат өңдеуге және кәсіби тапсырмаларға арналған. Миллион токенге дейінгі контекст және 128 мың токендік ең көп шығыс мәлімделген.
Ұзақ контекст архитектурасы
Модельде 320 млрд параметр бар, оның 18 млрд-ы белсенді. Гибридті назар сирек және сызықтық өңдеуді біріктіреді, ал қабаттар арасындағы арнайы байланыстар көлем ұлғайғанда тұрақтылықты сақтауға көмектеседі. Мультимодальды материалдар алдын ала үйретуге енгізілген.
Визуалды ақпарат жұмыс цикліне қатысады: көмекші интерфейсті немесе рендерленген нәтижені қарап, оны тапсырмамен салыстырады және түзетулер ұсынады. Өндірушінің код жазғаннан кейін нақты визуалды нәтижені тексеруге көңіл бөлуі осымен түсіндіріледі.
Пайымдау, құралдар және деректер
Пайымдау үнемі қосулы. Оның тереңдігі low, high және max деңгейлерімен таңдалады; өшірілген режим қарастырылмаған. Ұзақ жұмыста қадамдар арасындағы пайымдау тарихы сақталуы мүмкін.
Құрал үшін модель функция атауы мен аргументтерін қалыптастырады, қолданба әрекетті орындап, нәтижені қайта береді. JSON жауапты бағдарламамен өңдеуге сай келеді: күтілетін өрістер нұсқауда беріледі, ал синтаксис пен мәндердің мағынасы бөлек тексеріледі. Ағындық формат мәтінді біртіндеп алуға мүмкіндік береді.
Қайталанатын нұсқауды немесе тарихты кэштеу өңделген контекстті қайта қолдануға көмектеседі. Z.ai дерегіне сәйкес, ол тиісті тапсырмаларда қайта өңдеуді азайтады; қайта қолдану фактісі нақты сұрау нәтижесімен анықталады.
Визуалды тапсырма бойынша әзірлеу
Модель бір өнімнің бірнеше скриншотын, беттер арасындағы байланыстарды, ортақ компоненттерді, интерфейс күйлерін және анимацияларды талдай алады. Құралдары бар агенттік ортада ол код жазады, қолданбаны іске қосады, нәтиже скриншоттарын қарап, сәйкессіздіктерді нақтылайды. Ойын әзірлеуде мұндай цикл ережелерді, қозғалысты, өзара әрекеттерді, ұпайды және ойын сессиясының аяқталуын қамтиды.
Құжаттар және кәсіби талдау
Презентациялар, есептер және кестелер тапсырмаларында модель мазмұнды компоновкамен бірге ескереді: мәтін, суреттер, диаграммалар және элементтердің орналасуы. Құралдар арқылы ол PPTX, PDF, DOCX және XLSX материалдарын жасап, тексере алады. Бұл файлдар — қолданба жұмысының нәтижелері; модельдің тікелей жауабы мәтін болып қалады.
Қаржылық талдау есептілікпен жұмысты, формулалардың үйлесімділігін тексеруді және ашылған деректерді, жорамалдарды, тұжырымдарды бөлек қарастыруды қамтиды. Өндіруші сипаттаған процесте деректер тапсырма материалдарынан алынады.
Видео, үш өлшемді көріністер және интерфейстер
Агенттік ортада модель видеоматериалды, оқиғалардың уақыттық ретін, қатысушылардың визуалды белгілерін және субтитрлерді талдай алады. Құралдар монтажды және нәтижені сақтауды қамтамасыз етеді.
Үш өлшемді көрініспен немесе сызбамен жұмыста ол кеңістіктік сипаттаманы, пропорцияларды және көрінетін нәтижені байланыстырады. Құралдармен цикл құруды, белгілі ракурстан рендерлеуді, визуалды салыстыруды және түзетуді қамтиды. Сол сияқты модель қолданба экранын талдап, интерфейспен рет-ретімен жұмыс істеуге көмектесе алады.
Бұл сценарийлер қажетті құралдары бар ортадағы модель қасиеттерін сипаттайды. Қабылданатын материалдар құрамы таңдалған әдіспен анықталады; визуалды түсіну әр сұрауда видео, файл өңдеудің немесе аталған артефактілерді жасаудың автоматты қолжетімділігін білдірмейді.
Практикалық тапсырма
Практикалық тапсырма
Ағылшын тіліндегі техникалық мысал
Audit a report calculation
Review these report rows supplied as text: revenue 12,000; cost of goods 7,000; delivery expense 800; reported gross profit 4,200. The report defines gross profit as revenue minus cost of goods, excluding delivery. Identify the formula mismatch, show the defined calculation and suggest a separate label for the delivery-adjusted figure.Күтілетін нәтиже
A formula check, arithmetic using the given definition and a suggested label distinguishing the two measures.Нәтижені тексеру
Check that the report's stated definition, rather than an invented accounting rule, determines the correction.Ailoot · Anthropic хабарламалары POST /v1/messages glm-5.3-flash
glm-5.3-flashglm-5.3-flashglm-4.5glm-4.5-airglm-4.6glm-4.7glm-5-turboglm-flashglm-flash-latestz-ai/glm-5.3-flash
Бастау
GLM 5.3 Flash — визуалды әзірлеуге, құжат талдауға және мәтіндік нәтиже беретін агенттік жұмысқа арналған Z.ai мультимодальды моделі.
- Қабылданатын кіріс деректері
- Мәтін · Суреттер
- Нәтижелер
- Мәтін
Ailoot жүйесінде қолжетімді · кіріс деректері мен әдістер
Ailoot · Anthropic хабарламалары POST /v1/messages
- Кіріс
text,image- Шығыс
text- Контекст
- 1 000 000 tokens
- Ең үлкен шығыс
- 131 072 tokens
- Шығыс пішімі
- json немесе SSE
| Өріс | Түрі | Талап | Мәндер мен шектеулер | Әдепкі |
|---|---|---|---|---|
Өрісmodel | Түріstring | ТалапМіндетті | Мәндер мен шектеулер glm-5.3-flash | Әдепкі— |
Өрісmessages | Түріmessage[] | ТалапМіндетті | Мәндер мен шектеулер Элементтердің ең аз саны: 1 | Әдепкі— |
Өрісmessages[].role | Түріstring | ТалапМіндетті | Мәндер мен шектеулер user, assistant | Әдепкі— |
Өрісmessages[].content | Түріstring|content_block[] | ТалапМіндетті | Мәндер мен шектеулер | Әдепкі— |
Өрісsystem | Түріstring|content_block[] | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісmax_tokens | Түріinteger | ТалапМіндетті | Мәндер мен шектеулер Ең азы: 1 Шектеу қолданылатын нысан: таңдалған модельдің/карточканың нақты жоғарғы шегі | Әдепкі— |
Өрісstream | Түріboolean | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкіfalse |
Өрісtemperature | Түріnumber | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtop_p | Түріnumber | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісstop_sequences | Түріstring[] | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtools | Түріtool[] | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtools[].name | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Мына жағдайда қолданылады: құрал берілген | Әдепкі— |
Өрісtools[].description | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісtools[].input_schema | ТүріJSON_schema | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісtool_choice | Түріobject | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісthinking.type | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісthinking.budget_tokens | Түріinteger | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісoutput_config.effort | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісmetadata | Түріobject | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісcache_control | Түріobject | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Кіріс материалдарының үйлесімдері
Мәтін · UTF8 мәтіні
messages[].content немесе type=text блогы
Мәтін + сурет
{type:image,source:{type:base64,media_type,data}} немесе type=url дереккөзі
Әдіс параметрлері мен өмірлік циклі
| Параметр | Параметр талаптары |
|---|---|
Параметрmaterial_types | Параметр талаптарыtext, image |
Параметрrequired | Параметр талаптарыmodel, messages, max_tokens |
Параметрoptional_controls | Параметр талаптарыnull |
Параметрcontent_type | Параметр талаптарыapplication/json |
Параметрtext_file_material | Параметр талаптарынақты UTF-8 мазмұны мәтін ретінде енгізіледі; файл ID мәндері мен URLs үшін бөлек нақты қолдау қажет |
Өмірлік цикл: exact retained published method
Әдіс құрылымдары мен ID мәндері дәл берілген; жеткізушінің мүмкіндігі сұрауды қабылдаудан бөлек қаралады.
Тарифтер
Ailoot әдістерінің мөлшерлемелері
POST /v1/messages- Кіріс
- 0,00015 $ / 1K
- Шығыс
- 0,0005 $ / 1K
- Кэшті оқу
- ≈0,00003 $ / 1K
Ailoot сұрау алдында болжамды соманы резервтейді. Нәтижеден кейін өлшенген пайдалану көлемі бойынша қорытынды төлемді шегереді. Ағындық жауап үшін төлем соңғы пайдалану жазбасы негізінде шегеріледі. Резервтеу мен төлемді есептеу тәртібі →
Анықтамалық тариф мәліметтері
Модельдің анықтамалық кестелері әдіс таңдауын, баға есебін не төлемді өзгертпейді. Қолданыстағы төлемдер таңдалған Ailoot әдісінің мөлшерлемелерімен есептеледі.
Модельдің анықтамалық кестелері
Баптаулар бойынша бағалар
Әр төлемді көрсетілген шарттармен салыстырыңыз. Балама баптаулардың әр жиыны үшін бір мөлшерлемені қолданыңыз.
| Баптау | Мөлшерлемелер кестесі | Контекст токендерінің саны мынадан көп | Контекст токендерінің саны мынадан аспайды, шегі кіреді | Төлем |
|---|---|---|---|---|
| БаптауOpenAI Chat · Токендердің базалық тарифтері | Мөлшерлемелер кестесіНегізгі мөлшерлеме | Контекст токендерінің саны мынадан көп— | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
| БаптауOpenAI Chat · Сұрау ұзындығы бойынша 1-деңгей | Мөлшерлемелер кестесі— | Контекст токендерінің саны мынадан көп0 | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
| БаптауAnthropic Messages · Токендердің базалық тарифтері | Мөлшерлемелер кестесіНегізгі мөлшерлеме | Контекст токендерінің саны мынадан көп— | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
| БаптауAnthropic Messages · Сұрау ұзындығы бойынша 1-деңгей | Мөлшерлемелер кестесі— | Контекст токендерінің саны мынадан көп0 | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
Сұрау мысалдары
Ailoot · Anthropic хабарламалары
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-flash", "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
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_IMAGE_FILE:?Set your actual PNG JPEG or WebP image}"
export AILOOT_IMAGE_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "glm-5.3-flash", "max_tokens": 1024, "messages": [{"role": "user", "content": [{"type": "text", "text": "Read labels and numbers in this image; flag unreadable text."}]}]}')
import base64
f=Path(os.environ["AILOOT_IMAGE_FILE"])
if not f.is_file():raise SystemExit("Choose an actual PNG JPEG or WebP image")
raw=f.read_bytes()
mime="image/png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "image/jpeg" if raw.startswith(b"\xff\xd8") else "image/webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else None
if not mime:raise SystemExit("Use PNG JPEG or WebP")
b64=base64.b64encode(raw).decode()
p["messages"][0]["content"].append({"type":"image","source":{"type":"base64","media_type":mime,"data":b64}})
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-flash",
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-flash",
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-flash',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")
Нәтижелерді алу және сақтау
Ailoot · Anthropic хабарламалары
json немесе SSE
Барлық дайын нәтижені сақтау
Қайтарылған әр толық жауапты, файлды және мазмұн бөлігін сақтаңыз.
Барлық мазмұн блоктарын, пайымдау қолтаңбаларын және құрал қолданудың нақты ID мәндерін сақтаңыз. SSE блоктарының барлық өзгерістерін жинаңыз; алғашқы мәтіндік блок толық шығыс емес.
Бастапқы жауапты тексеру қажет болса
Сұрау мен жауаптың ID мәндерін және тақырыптарын сақтаңыз. Мәтіндік тапсырманы алуға арналған ортақ URL берілмеген.
Жауап өрістері
| Өріс | Түрі |
|---|---|
Өрісid | Түріstring |
Өрісmodel | Түріstring |
Өрісcontent[] | Түріtext|thinking|tool_use|other content block |
Өрісstop_reason | Түріstring|null |
Өрісusage | Түріobject |
Қателер және келесі қадамдар
| Жауап | Шарт | Келесі қадам |
|---|---|---|
Жауап400 · invalid_request_error | ШартМіндетті өрістер, материалды ұсыну тәсілі немесе параметр мәні қате | Келесі қадамЖаңадан жасау сұрауын жібермес бұрын көрсетілген өрістерді түзетіңіз. |
Балама атаулар
Модельдердің балама атаулары
Ailoot glm-5.3-flash, glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5-turbo, glm-flash, glm-flash-latest, z-ai/glm-5.3-flash
Ailoot Ultra glm-5.3-flash, z-ai/glm-5.3-flash, ~z-ai/glm-flash-latest
Әдіс жолдарының балама атаулары
/chat/completions
Шақыруға арналған байланысты ID
z-ai/glm-5.3-flash, z-ai/glm-5.3-flash, glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5-turbo, glm-flash, glm-flash-latest, ~z-ai/glm-flash-latest, glm-5.3-flash, glm-5.3-flash
Ailoot · OpenAI Responses POST /v1/responses glm-5.3-flash
glm-5.3-flashglm-5.3-flashglm-4.5glm-4.5-airglm-4.6glm-4.7glm-5-turboglm-flashglm-flash-latest
Бастау
GLM 5.3 Flash — визуалды әзірлеуге, құжат талдауға және мәтіндік нәтиже беретін агенттік жұмысқа арналған Z.ai мультимодальды моделі.
- Қабылданатын кіріс деректері
- Мәтін · Суреттер
- Нәтижелер
- Мәтін
Ailoot жүйесінде қолжетімді · кіріс деректері мен әдістер
Ailoot · OpenAI Responses POST /v1/responses
- Кіріс
text,image- Шығыс
text- Контекст
- 1 000 000 tokens
- Ең үлкен шығыс
- 131 072 tokens
- Шығыс пішімі
- json немесе SSE
| Өріс | Түрі | Талап | Мәндер мен шектеулер | Әдепкі |
|---|---|---|---|---|
Өрісmodel | Түріstring | ТалапМіндетті | Мәндер мен шектеулер glm-5.3-flash | Әдепкі— |
Өрісinput | Түріstring|input_item[] | ТалапМіндетті | Мәндер мен шектеулер | Әдепкі— |
Өрісinstructions | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісinput[].type | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер message, reasoning, function_call, function_call_output | Әдепкі— |
Өрісinput[].content | Түріstring|content_part[] | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісinput[].call_id | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Мына жағдайда қолданылады: function_call_output; нақты қайтарылған call_id мәнін сақтаңыз | Әдепкі— |
Өрісinput[].output | Түріstring|content_part[] | ТалапМіндетті емес | Мәндер мен шектеулер Мына жағдайда қолданылады: function_call_output | Әдепкі— |
Өрісmax_output_tokens | Түріinteger | ТалапМіндетті емес | Мәндер мен шектеулер Ең азы: 1 Модельге байланысты | Әдепкі— |
Өрісstream | Түріboolean | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкіfalse |
Өрісtemperature | Түріnumber | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtop_p | Түріnumber | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtools | Түріtool[] | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtool_choice | Түріstring|object | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісparallel_tool_calls | Түріboolean | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісreasoning.effort | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісreasoning.summary | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtext.format | Түріobject | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtext.verbosity | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісinclude | Түріstring[] | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісstore | Түріboolean | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісprevious_response_id | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер ID талабы: Қолдау көрсетілетін жалғастырудан алынған нақты жауап ID-і ғана Модельге байланысты | Әдепкі— |
Өрісservice_tier | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісprompt_cache_key | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісprompt_cache_options | Түріobject | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Кіріс материалдарының үйлесімдері
Мәтін · UTF8 мәтіні
кіріс мәтіні немесе input_text бөлігі
Мәтін + сурет
{type:input_image,image_url}
Әдіс параметрлері мен өмірлік циклі
| Параметр | Параметр талаптары |
|---|---|
Параметрmaterial_types | Параметр талаптарыtext, image |
Параметрrequired | Параметр талаптарыmodel, input |
Параметрoptional_controls | Параметр талаптарыnull |
Параметрcontent_type | Параметр талаптарыapplication/json |
Параметрtext_file_material | Параметр талаптарынақты UTF-8 мазмұны мәтін ретінде енгізіледі; файл ID мәндері мен URLs үшін бөлек нақты қолдау қажет |
Өмірлік цикл: exact retained published method
Әдіс құрылымдары мен ID мәндері дәл берілген; жеткізушінің мүмкіндігі сұрауды қабылдаудан бөлек қаралады.
Тарифтер
Ailoot әдістерінің мөлшерлемелері
POST /v1/responses- Кіріс
- 0,00015 $ / 1K
- Шығыс
- 0,0005 $ / 1K
- Кэшті оқу
- ≈0,00003 $ / 1K
Ailoot сұрау алдында болжамды соманы резервтейді. Нәтижеден кейін өлшенген пайдалану көлемі бойынша қорытынды төлемді шегереді. Ағындық жауап үшін төлем соңғы пайдалану жазбасы негізінде шегеріледі. Резервтеу мен төлемді есептеу тәртібі →
Анықтамалық тариф мәліметтері
Модельдің анықтамалық кестелері әдіс таңдауын, баға есебін не төлемді өзгертпейді. Қолданыстағы төлемдер таңдалған Ailoot әдісінің мөлшерлемелерімен есептеледі.
Модельдің анықтамалық кестелері
Баптаулар бойынша бағалар
Әр төлемді көрсетілген шарттармен салыстырыңыз. Балама баптаулардың әр жиыны үшін бір мөлшерлемені қолданыңыз.
| Баптау | Мөлшерлемелер кестесі | Контекст токендерінің саны мынадан көп | Контекст токендерінің саны мынадан аспайды, шегі кіреді | Төлем |
|---|---|---|---|---|
| БаптауOpenAI Chat · Токендердің базалық тарифтері | Мөлшерлемелер кестесіНегізгі мөлшерлеме | Контекст токендерінің саны мынадан көп— | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
| БаптауOpenAI Chat · Сұрау ұзындығы бойынша 1-деңгей | Мөлшерлемелер кестесі— | Контекст токендерінің саны мынадан көп0 | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
| БаптауAnthropic Messages · Токендердің базалық тарифтері | Мөлшерлемелер кестесіНегізгі мөлшерлеме | Контекст токендерінің саны мынадан көп— | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
| БаптауAnthropic Messages · Сұрау ұзындығы бойынша 1-деңгей | Мөлшерлемелер кестесі— | Контекст токендерінің саны мынадан көп0 | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
Сұрау мысалдары
Ailoot · OpenAI Responses
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-flash", "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
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_IMAGE_FILE:?Set your actual PNG JPEG or WebP image}"
export AILOOT_IMAGE_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "glm-5.3-flash", "input": [{"role": "user", "content": [{"type": "input_text", "text": "Read labels and numbers in this image; flag unreadable text."}]}]}')
import base64
f=Path(os.environ["AILOOT_IMAGE_FILE"])
if not f.is_file():raise SystemExit("Choose an actual PNG JPEG or WebP image")
raw=f.read_bytes()
mime="image/png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "image/jpeg" if raw.startswith(b"\xff\xd8") else "image/webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else None
if not mime:raise SystemExit("Use PNG JPEG or WebP")
b64=base64.b64encode(raw).decode()
p["input"][0]["content"].append({"type":"input_image","image_url":"data:"+mime+";base64,"+b64})
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-flash", 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-flash", 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-flash", 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")
Нәтижелерді алу және сақтау
Ailoot · OpenAI Responses
json немесе SSE
Барлық дайын нәтижені сақтау
Қайтарылған әр толық жауапты, файлды және мазмұн бөлігін сақтаңыз.
Әр шығыс элементін және мазмұн бөлігін, функцияның нақты call_id мәнін, шифрланған пайымдауды және пайдалану деректерін сақтаңыз. Ағында оқиғалар мен элементтердің барлық сәйкестендіру деректерін сақтаңыз.
Бастапқы жауапты тексеру қажет болса
Сұрау мен жауаптың ID мәндерін және тақырыптарын сақтаңыз. Мәтіндік тапсырманы алуға арналған ортақ URL берілмеген.
Жауап өрістері
| Өріс | Түрі |
|---|---|
Өрісid | Түріstring |
Өрісstatus | Түріstring |
Өрісoutput[] | Түріmessage|reasoning|function_call|other item |
Өрісoutput[].content[] | Түріcontent part |
Өрісusage | Түріobject |
Қателер және келесі қадамдар
| Жауап | Шарт | Келесі қадам |
|---|---|---|
Жауап400 · invalid_request_error | ШартМіндетті өрістер, материалды ұсыну тәсілі немесе параметр мәні қате | Келесі қадамЖаңадан жасау сұрауын жібермес бұрын көрсетілген өрістерді түзетіңіз. |
Балама атаулар
Модельдердің балама атаулары
Ailoot glm-5.3-flash, glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5-turbo, glm-flash, glm-flash-latest, z-ai/glm-5.3-flash
Ailoot Ultra glm-5.3-flash, z-ai/glm-5.3-flash, ~z-ai/glm-flash-latest
Әдіс жолдарының балама атаулары
/chat/completions
Шақыруға арналған байланысты ID
z-ai/glm-5.3-flash, z-ai/glm-5.3-flash, glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5-turbo, glm-flash, glm-flash-latest, ~z-ai/glm-flash-latest, glm-5.3-flash, glm-5.3-flash
Ailoot · OpenAI чаты POST /v1/chat/completions glm-5.3-flash
glm-5.3-flashglm-5.3-flashglm-4.5glm-4.5-airglm-4.6glm-4.7glm-5-turboglm-flashglm-flash-latestz-ai/glm-5.3-flash
Бастау
GLM 5.3 Flash — визуалды әзірлеуге, құжат талдауға және мәтіндік нәтиже беретін агенттік жұмысқа арналған Z.ai мультимодальды моделі.
- Қабылданатын кіріс деректері
- Мәтін · Суреттер
- Нәтижелер
- Мәтін
Ailoot жүйесінде қолжетімді · кіріс деректері мен әдістер
Ailoot · OpenAI чаты POST /v1/chat/completions
- Кіріс
text,image- Шығыс
text- Контекст
- 1 000 000 tokens
- Ең үлкен шығыс
- 131 072 tokens
- Шығыс пішімі
- json немесе SSE
| Өріс | Түрі | Талап | Мәндер мен шектеулер | Әдепкі |
|---|---|---|---|---|
Өрісmodel | Түріstring | ТалапМіндетті | Мәндер мен шектеулер glm-5.3-flash | Әдепкі— |
Өрісmessages | Түріmessage[] | ТалапМіндетті | Мәндер мен шектеулер Элементтердің ең аз саны: 1 | Әдепкі— |
Өрісmessages[].role | Түріstring | ТалапМіндетті | Мәндер мен шектеулер Мысалдар: system, user, assistant, tool, function Шарттар: Бұл рөлдер бастапқы кодтағы үйлесімділік түрлерінде айқын көрсетілген; рөлдердің нақты жиыны әр модельге байланысты. Модельге байланысты | Әдепкі— |
Өрісmessages[].content | Түріstring|content_part[]|null | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісmessages[].tool_calls | Түріtool_call[] | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісmessages[].tool_call_id | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Мына жағдайда қолданылады: role=tool; нақты қайтарылған ID мәнін пайдаланыңыз | Әдепкі— |
Өрісmessages[].name | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісmessages[].reasoning_content | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Мына жағдайда қолданылады: Модель пайымдауды пайдаланса, нақты қайтарылған пайымдауды қайта жіберіңіз | Әдепкі— |
Өрісmessages[].reasoning_details | Түріobject|array | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісmax_tokens | Түріinteger | ТалапМіндетті емес | Мәндер мен шектеулер Ең азы: 1 Модельге байланысты | Әдепкі— |
Өрісmax_completion_tokens | Түріinteger | ТалапМіндетті емес | Мәндер мен шектеулер Ең азы: 1 Модельге байланысты | Әдепкі— |
Өрісstream | Түріboolean | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкіfalse |
Өрісstream_options.include_usage | Түріboolean | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtemperature | Түріnumber | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtop_p | Түріnumber | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісstop | Түріstring|string[] | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtools | Түріfunction_tool[] | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtools[].type | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtools[].function.name | Түріstring | ТалапМіндетті | Мәндер мен шектеулер Мына жағдайда қолданылады: функция құралы берілген | Әдепкі— |
Өрісtools[].function.description | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісtools[].function.parameters | ТүріJSON_schema | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісtool_choice | Түріstring|object | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісparallel_tool_calls | Түріboolean | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісresponse_format | Түріobject | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісreasoning_effort | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісreasoning | Түріobject | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісservice_tier | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісinstructions | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Үйлесімділік өрісі | Әдепкі— |
Өрісfunctions | Түріfunction[] | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісfunction_call | Түріstring|object | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісprompt_cache_options | Түріobject | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Кіріс материалдарының үйлесімдері
Мәтін · UTF8 мәтіні
messages[].content
Мәтін + сурет
{type:image_url,image_url:{url,detail}}
Әдіс параметрлері мен өмірлік циклі
| Параметр | Параметр талаптары |
|---|---|
Параметрmaterial_types | Параметр талаптарыtext, image |
Параметрrequired | Параметр талаптарыmodel, messages |
Параметрoptional_controls | Параметр талаптарыnull |
Параметрcontent_type | Параметр талаптарыapplication/json |
Параметрtext_file_material | Параметр талаптарынақты UTF-8 мазмұны мәтін ретінде енгізіледі; файл ID мәндері мен URLs үшін бөлек нақты қолдау қажет |
Өмірлік цикл: exact retained published method
Әдіс құрылымдары мен ID мәндері дәл берілген; жеткізушінің мүмкіндігі сұрауды қабылдаудан бөлек қаралады.
Тарифтер
Ailoot әдістерінің мөлшерлемелері
POST /v1/chat/completions- Кіріс
- 0,00015 $ / 1K
- Шығыс
- 0,0005 $ / 1K
- Кэшті оқу
- ≈0,00003 $ / 1K
Ailoot сұрау алдында болжамды соманы резервтейді. Нәтижеден кейін өлшенген пайдалану көлемі бойынша қорытынды төлемді шегереді. Ағындық жауап үшін төлем соңғы пайдалану жазбасы негізінде шегеріледі. Резервтеу мен төлемді есептеу тәртібі →
Анықтамалық тариф мәліметтері
Модельдің анықтамалық кестелері әдіс таңдауын, баға есебін не төлемді өзгертпейді. Қолданыстағы төлемдер таңдалған Ailoot әдісінің мөлшерлемелерімен есептеледі.
Модельдің анықтамалық кестелері
Баптаулар бойынша бағалар
Әр төлемді көрсетілген шарттармен салыстырыңыз. Балама баптаулардың әр жиыны үшін бір мөлшерлемені қолданыңыз.
| Баптау | Мөлшерлемелер кестесі | Контекст токендерінің саны мынадан көп | Контекст токендерінің саны мынадан аспайды, шегі кіреді | Төлем |
|---|---|---|---|---|
| БаптауOpenAI Chat · Токендердің базалық тарифтері | Мөлшерлемелер кестесіНегізгі мөлшерлеме | Контекст токендерінің саны мынадан көп— | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
| БаптауOpenAI Chat · Сұрау ұзындығы бойынша 1-деңгей | Мөлшерлемелер кестесі— | Контекст токендерінің саны мынадан көп0 | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
| БаптауAnthropic Messages · Токендердің базалық тарифтері | Мөлшерлемелер кестесіНегізгі мөлшерлеме | Контекст токендерінің саны мынадан көп— | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
| БаптауAnthropic Messages · Сұрау ұзындығы бойынша 1-деңгей | Мөлшерлемелер кестесі— | Контекст токендерінің саны мынадан көп0 | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
Сұрау мысалдары
Ailoot · OpenAI чаты
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-flash", "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
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_IMAGE_FILE:?Set your actual PNG JPEG or WebP image}"
export AILOOT_IMAGE_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "glm-5.3-flash", "messages": [{"role": "user", "content": [{"type": "text", "text": "Read labels and numbers in this image; flag unreadable text."}]}]}')
import base64
f=Path(os.environ["AILOOT_IMAGE_FILE"])
if not f.is_file():raise SystemExit("Choose an actual PNG JPEG or WebP image")
raw=f.read_bytes()
mime="image/png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "image/jpeg" if raw.startswith(b"\xff\xd8") else "image/webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else None
if not mime:raise SystemExit("Use PNG JPEG or WebP")
b64=base64.b64encode(raw).decode()
p["messages"][0]["content"].append({"type":"image_url","image_url":{"url":"data:"+mime+";base64,"+b64}})
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-flash",
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-flash",
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-flash',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")
Нәтижелерді алу және сақтау
Ailoot · OpenAI чаты
json немесе SSE
Барлық дайын нәтижені сақтау
Қайтарылған әр толық жауапты, файлды және мазмұн бөлігін сақтаңыз.
Әр жауап нұсқасын оның мазмұнымен, құрал шақыруларымен және пайымдауымен бірге сақтаңыз. SSE өзгерістерін жауап нұсқасы мен құрал индексі бойынша жинап, соңғы аяқталу себебі мен пайдалану деректерін сақтаңыз.
Бастапқы жауапты тексеру қажет болса
Сұрау мен жауаптың ID мәндерін және тақырыптарын сақтаңыз. Мәтіндік тапсырманы алуға арналған ортақ URL берілмеген.
Жауап өрістері
| Өріс | Түрі |
|---|---|
Өрісchoices[].index | Түріinteger |
Өрісchoices[].message.content | Түріstring|null |
Өрісchoices[].message.tool_calls | Түріtool_call[] |
Өрісchoices[].message.reasoning_content | Түріstring |
Өрісchoices[].message.reasoning_details | Түріobject|array |
Өрісchoices[].finish_reason | Түріstring|null |
Өрісusage | Түріobject |
Қателер және келесі қадамдар
| Жауап | Шарт | Келесі қадам |
|---|---|---|
Жауап400 · invalid_request_error | ШартМіндетті өрістер, материалды ұсыну тәсілі немесе параметр мәні қате | Келесі қадамЖаңадан жасау сұрауын жібермес бұрын көрсетілген өрістерді түзетіңіз. |
Балама атаулар
Модельдердің балама атаулары
Ailoot glm-5.3-flash, glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5-turbo, glm-flash, glm-flash-latest, z-ai/glm-5.3-flash
Ailoot Ultra glm-5.3-flash, z-ai/glm-5.3-flash, ~z-ai/glm-flash-latest
Әдіс жолдарының балама атаулары
/chat/completions
Шақыруға арналған байланысты ID
z-ai/glm-5.3-flash, z-ai/glm-5.3-flash, glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5-turbo, glm-flash, glm-flash-latest, ~z-ai/glm-flash-latest, glm-5.3-flash, glm-5.3-flash
Ailoot Ultra · OpenAI чаты POST /v1/chat/completions glm-5.3-flash
glm-5.3-flashglm-5.3-flashz-ai/glm-5.3-flash~z-ai/glm-flash-latest
Бастау
GLM 5.3 Flash — визуалды әзірлеуге, құжат талдауға және мәтіндік нәтиже беретін агенттік жұмысқа арналған Z.ai мультимодальды моделі.
- Қабылданатын кіріс деректері
- Мәтін
- Нәтижелер
- Мәтін
Ailoot жүйесінде қолжетімді · кіріс деректері мен әдістер
Ailoot Ultra · OpenAI чаты POST /v1/chat/completions
- Кіріс
text- Шығыс
text- Шығыс пішімі
- json немесе SSE
| Өріс | Түрі | Талап | Мәндер мен шектеулер | Әдепкі |
|---|---|---|---|---|
Өрісmodel | Түріstring | ТалапМіндетті | Мәндер мен шектеулер glm-5.3-flash | Әдепкі— |
Өрісmessages | Түріmessage[] | ТалапМіндетті | Мәндер мен шектеулер Элементтердің ең аз саны: 1 | Әдепкі— |
Өрісmessages[].role | Түріstring | ТалапМіндетті | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісmessages[].content | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Мына жағдайда қолданылады: Мәтіндік әңгіме | Әдепкі— |
Өрісstream | Түріboolean | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкіfalse |
Кіріс материалдарының үйлесімдері
Мәтін · UTF8 мәтіні
messages[].content
Әдіс параметрлері мен өмірлік циклі
| Параметр | Параметр талаптары |
|---|---|
Параметрcontent_type | Параметр талаптарыapplication/json |
Параметрrequired | Параметр талаптарыmodel, messages |
Параметрmaterial_types | Параметр талаптарыtext |
Параметрmessages | Параметр талаптарыrole/content құрылымы бар хабарламалар жиымы |
Параметрfile_material | Параметр талаптарынақты UTF-8 құжаты сөзбе-сөз мәтін ретінде енгізіледі; файл ID-і болжанбайды |
Параметрoptional_controls | Параметр талаптарыstream |
Параметрcontrol_scope | Параметр талаптарыМәтіндік әңгіме; stream — логикалық мән, әдепкісі false. |
Параметрoutput_modalities | Параметр талаптарыtext |
Параметрhosted_operations | Параметр талаптарыfalse |
Параметрmultimodal_input_binding | Параметр талаптарыnull |
Әдістің балама атаулары: /chat/completions
Өмірлік цикл: synchronous_or_streamed
Модельдің дәл ID мәнін messages деректерімен бірге жіберіңіз.
Контекст ұзындығы шығыстың жоғарғы шегі емес.
Мәтіндік файл сөзбе-сөз мәтінді бере алады; кіріс суреттері, аудио және файл нысандары дәл байланыстыруды қажет етеді.
Тарифтер
Тариф анықтамасы сұрау мүмкіндіктерін қоспайды. Қолдау көрсетілетін параметрлер таңдалған әдісте берілген.
- Жылдам режим
- Стандартты тариф Жылдам режим таңдалғанда
- Икемді режим
- Стандартты тариф flex режимі таңдалғанда
- Ой қорытудың ең жоғары деңгейі
- Стандартты тариф Ой қорыту деңгейі ең жоғары болып, default түзетуі қолданылғанда
- Ой қорыту деңгейі · high
- Стандартты тариф Ой қорыту деңгейі high болғанда
- Ой қорыту деңгейі · low
- Стандартты тариф Ой қорыту деңгейі low болғанда
- Ой қорыту деңгейі · max
- Стандартты тариф Ой қорыту деңгейі max болғанда
Ailoot мөлшерлемелері
Баптаулар бойынша бағалар
Әр төлемді көрсетілген шарттармен салыстырыңыз. Балама баптаулардың әр жиыны үшін бір мөлшерлемені қолданыңыз.
| Баптау | Мөлшерлемелер кестесі | Контекст токендерінің саны мынадан көп | Контекст токендерінің саны мынадан аспайды, шегі кіреді | Төлем |
|---|---|---|---|---|
| БаптауТокендердің базалық тарифтері | Мөлшерлемелер кестесіНегізгі мөлшерлеме | Контекст токендерінің саны мынадан көп— | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
| БаптауСұрау ұзындығының 1-деңгейі | Мөлшерлемелер кестесі— | Контекст токендерінің саны мынадан көп0 | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
Ailoot сұрау алдында болжамды соманы резервтейді. Нәтижеден кейін өлшенген пайдалану көлемі бойынша қорытынды төлемді шегереді. Ағындық жауап үшін төлем соңғы пайдалану жазбасы негізінде шегеріледі. Резервтеу мен төлемді есептеу тәртібі →
Сұрау мысалдары
Ailoot Ultra · OpenAI чаты
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-flash","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-flash", 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"))
Нәтижелерді алу және сақтау
Ailoot Ultra · OpenAI чаты
json немесе SSE
Барлық дайын нәтижені сақтау
Қайтарылған әр толық жауапты, файлды және мазмұн бөлігін сақтаңыз.
Әр жауап нұсқасын оның мазмұнымен, құрал шақыруларымен және пайымдауымен бірге сақтаңыз. SSE өзгерістерін жауап нұсқасы мен құрал индексі бойынша жинап, соңғы аяқталу себебі мен пайдалану деректерін сақтаңыз.
Бастапқы жауапты тексеру қажет болса
Сұрау мен жауаптың ID мәндерін және тақырыптарын сақтаңыз. Мәтіндік тапсырманы алуға арналған ортақ URL берілмеген.
Жауап өрістері
| Өріс | Түрі |
|---|---|
Өрісchoices[].index | Түріinteger |
Өрісchoices[].message.content | Түріstring|null |
Өрісchoices[].message.tool_calls | Түріtool_call[] |
Өрісchoices[].message.reasoning_content | Түріstring |
Өрісchoices[].message.reasoning_details | Түріobject|array |
Өрісchoices[].finish_reason | Түріstring|null |
Өрісusage | Түріobject |
Қателер және келесі қадамдар
| Жауап | Шарт | Келесі қадам |
|---|---|---|
Жауап400 · invalid_request_error | ШартМіндетті өрістер, материалды ұсыну тәсілі немесе параметр мәні қате | Келесі қадамЖаңадан жасау сұрауын жібермес бұрын көрсетілген өрістерді түзетіңіз. |
Балама атаулар
Модельдердің балама атаулары
Ailoot glm-5.3-flash, glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5-turbo, glm-flash, glm-flash-latest, z-ai/glm-5.3-flash
Ailoot Ultra glm-5.3-flash, z-ai/glm-5.3-flash, ~z-ai/glm-flash-latest
Әдіс жолдарының балама атаулары
/chat/completions
Шақыруға арналған байланысты ID
z-ai/glm-5.3-flash, z-ai/glm-5.3-flash, glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5-turbo, glm-flash, glm-flash-latest, ~z-ai/glm-flash-latest, glm-5.3-flash, glm-5.3-flash
Ailoot Ultra · Anthropic хабарламалары POST /v1/messages glm-5.3-flash
glm-5.3-flashglm-5.3-flashz-ai/glm-5.3-flash~z-ai/glm-flash-latest
Бастау
GLM 5.3 Flash — визуалды әзірлеуге, құжат талдауға және мәтіндік нәтиже беретін агенттік жұмысқа арналған Z.ai мультимодальды моделі.
- Қабылданатын кіріс деректері
- Мәтін
- Нәтижелер
- json · sse
Ailoot жүйесінде қолжетімді · кіріс деректері мен әдістер
Ailoot Ultra · Anthropic хабарламалары POST /v1/messages
- Кіріс
text- Шығыс
json,sse- Шығыс пішімі
- JSON немесе SSE
| Өріс | Түрі | Талап | Мәндер мен шектеулер | Әдепкі |
|---|---|---|---|---|
Өрісmodel | Түріstring | ТалапМіндетті | Мәндер мен шектеулер glm-5.3-flash | Әдепкі— |
Өрісmessages | Түріmessage[] | ТалапМіндетті | Мәндер мен шектеулер | Әдепкі— |
Өрісmessages[].role | Түріstring | ТалапМіндетті | Мәндер мен шектеулер user, assistant | Әдепкі— |
Өрісmessages[].content | Түріstring | ТалапМіндетті | Мәндер мен шектеулер | Әдепкі— |
Өрісmax_tokens | Түріinteger | ТалапМіндетті | Мәндер мен шектеулер | Әдепкі— |
Өрісstream | Түріboolean | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкіfalse |
Кіріс материалдарының үйлесімдері
Мәтін · UTF-8 мәтіні
messages[].content жолы
Әдіс параметрлері мен өмірлік циклі
| Параметр | Параметр талаптары |
|---|---|
Параметрcontent_type | Параметр талаптарыapplication/json |
Параметрrequired | Параметр талаптарыmodel, messages, max_tokens |
Параметрoptional_controls | Параметр талаптарыstream |
Параметрmaterial_types | Параметр талаптарыtext |
Параметрtext_file_material | Параметр талаптарыНақты UTF-8 құжатын оқып, оның мәтінін көрсетілген кіріс жолына немесе хабарлама мазмұнының жолына қойыңыз. |
Өмірлік цикл: synchronous_or_streamed
Тарифтер
Тариф анықтамасы сұрау мүмкіндіктерін қоспайды. Қолдау көрсетілетін параметрлер таңдалған әдісте берілген.
- Жылдам режим
- Стандартты тариф Жылдам режим таңдалғанда
- Икемді режим
- Стандартты тариф flex режимі таңдалғанда
- Ой қорытудың ең жоғары деңгейі
- Стандартты тариф Ой қорыту деңгейі ең жоғары болып, default түзетуі қолданылғанда
- Ой қорыту деңгейі · high
- Стандартты тариф Ой қорыту деңгейі high болғанда
- Ой қорыту деңгейі · low
- Стандартты тариф Ой қорыту деңгейі low болғанда
- Ой қорыту деңгейі · max
- Стандартты тариф Ой қорыту деңгейі max болғанда
Ailoot мөлшерлемелері
Баптаулар бойынша бағалар
Әр төлемді көрсетілген шарттармен салыстырыңыз. Балама баптаулардың әр жиыны үшін бір мөлшерлемені қолданыңыз.
| Баптау | Мөлшерлемелер кестесі | Контекст токендерінің саны мынадан көп | Контекст токендерінің саны мынадан аспайды, шегі кіреді | Төлем |
|---|---|---|---|---|
| БаптауТокендердің базалық тарифтері | Мөлшерлемелер кестесіНегізгі мөлшерлеме | Контекст токендерінің саны мынадан көп— | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
| БаптауСұрау ұзындығының 1-деңгейі | Мөлшерлемелер кестесі— | Контекст токендерінің саны мынадан көп0 | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
Ailoot сұрау алдында болжамды соманы резервтейді. Нәтижеден кейін өлшенген пайдалану көлемі бойынша қорытынды төлемді шегереді. Ағындық жауап үшін төлем соңғы пайдалану жазбасы негізінде шегеріледі. Резервтеу мен төлемді есептеу тәртібі →
Сұрау мысалдары
Ailoot Ultra · Anthropic хабарламалары
{
"model": "glm-5.3-flash",
"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-flash', '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-flash', '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))
Нәтижелерді алу және сақтау
Ailoot Ultra · Anthropic хабарламалары
JSON немесе SSE
Барлық дайын нәтижені сақтау
Қайтарылған әр толық жауапты, файлды және мазмұн бөлігін сақтаңыз.
Барлық мазмұн блоктарын, пайымдау қолтаңбаларын және құрал қолданудың нақты ID мәндерін сақтаңыз. SSE блоктарының барлық өзгерістерін жинаңыз; алғашқы мәтіндік блок толық шығыс емес.
Бастапқы жауапты тексеру қажет болса
Сұрау мен жауаптың ID мәндерін және тақырыптарын сақтаңыз. Мәтіндік тапсырманы алуға арналған ортақ URL берілмеген.
Жауап өрістері
| Өріс | Түрі |
|---|---|
Өрісid | Түріstring |
Өрісmodel | Түріstring |
Өрісcontent[] | Түріtext|thinking|tool_use|other content block |
Өрісstop_reason | Түріstring|null |
Өрісusage | Түріobject |
Қателер және келесі қадамдар
| Жауап | Шарт | Келесі қадам |
|---|---|---|
Жауап400 · invalid_request_error | ШартМіндетті өрістер, материалды ұсыну тәсілі немесе параметр мәні қате | Келесі қадамЖаңадан жасау сұрауын жібермес бұрын көрсетілген өрістерді түзетіңіз. |
Балама атаулар
Модельдердің балама атаулары
Ailoot glm-5.3-flash, glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5-turbo, glm-flash, glm-flash-latest, z-ai/glm-5.3-flash
Ailoot Ultra glm-5.3-flash, z-ai/glm-5.3-flash, ~z-ai/glm-flash-latest
Әдіс жолдарының балама атаулары
/chat/completions
Шақыруға арналған байланысты ID
z-ai/glm-5.3-flash, z-ai/glm-5.3-flash, glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5-turbo, glm-flash, glm-flash-latest, ~z-ai/glm-flash-latest, glm-5.3-flash, glm-5.3-flash
Ailoot · Anthropic хабарламалары POST /v1/messages glm-4.5
glm-4.5glm-5.3-flashglm-4.5glm-4.5-airglm-4.6glm-4.7glm-5-turboglm-flashglm-flash-latestz-ai/glm-5.3-flash
Бастау
GLM 5.3 Flash — визуалды әзірлеуге, құжат талдауға және мәтіндік нәтиже беретін агенттік жұмысқа арналған Z.ai мультимодальды моделі.
- Қабылданатын кіріс деректері
- Мәтін · Суреттер
- Нәтижелер
- Мәтін
Ailoot жүйесінде қолжетімді · кіріс деректері мен әдістер
Ailoot · Anthropic хабарламалары POST /v1/messages
- Кіріс
text,image- Шығыс
text- Контекст
- 1 000 000 tokens
- Ең үлкен шығыс
- 131 072 tokens
- Шығыс пішімі
- json немесе SSE
| Өріс | Түрі | Талап | Мәндер мен шектеулер | Әдепкі |
|---|---|---|---|---|
Өрісmodel | Түріstring | ТалапМіндетті | Мәндер мен шектеулер glm-4.5 | Әдепкі— |
Өрісmessages | Түріmessage[] | ТалапМіндетті | Мәндер мен шектеулер Элементтердің ең аз саны: 1 | Әдепкі— |
Өрісmessages[].role | Түріstring | ТалапМіндетті | Мәндер мен шектеулер user, assistant | Әдепкі— |
Өрісmessages[].content | Түріstring|content_block[] | ТалапМіндетті | Мәндер мен шектеулер | Әдепкі— |
Өрісsystem | Түріstring|content_block[] | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісmax_tokens | Түріinteger | ТалапМіндетті | Мәндер мен шектеулер Ең азы: 1 Шектеу қолданылатын нысан: таңдалған модельдің/карточканың нақты жоғарғы шегі | Әдепкі— |
Өрісstream | Түріboolean | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкіfalse |
Өрісtemperature | Түріnumber | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtop_p | Түріnumber | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісstop_sequences | Түріstring[] | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtools | Түріtool[] | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtools[].name | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Мына жағдайда қолданылады: құрал берілген | Әдепкі— |
Өрісtools[].description | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісtools[].input_schema | ТүріJSON_schema | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісtool_choice | Түріobject | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісthinking.type | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісthinking.budget_tokens | Түріinteger | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісoutput_config.effort | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісmetadata | Түріobject | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісcache_control | Түріobject | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Кіріс материалдарының үйлесімдері
Мәтін · UTF8 мәтіні
messages[].content немесе type=text блогы
Мәтін + сурет
{type:image,source:{type:base64,media_type,data}} немесе type=url дереккөзі
Әдіс параметрлері мен өмірлік циклі
| Параметр | Параметр талаптары |
|---|---|
Параметрmaterial_types | Параметр талаптарыtext, image |
Параметрrequired | Параметр талаптарыmodel, messages, max_tokens |
Параметрoptional_controls | Параметр талаптарыnull |
Параметрcontent_type | Параметр талаптарыapplication/json |
Параметрtext_file_material | Параметр талаптарынақты UTF-8 мазмұны мәтін ретінде енгізіледі; файл ID мәндері мен URLs үшін бөлек нақты қолдау қажет |
Өмірлік цикл: exact retained published method
Әдіс құрылымдары мен ID мәндері дәл берілген; жеткізушінің мүмкіндігі сұрауды қабылдаудан бөлек қаралады.
Тарифтер
Ailoot әдістерінің мөлшерлемелері
POST /v1/messages- Кіріс
- 0,00015 $ / 1K
- Шығыс
- 0,0005 $ / 1K
- Кэшті оқу
- ≈0,00003 $ / 1K
Ailoot сұрау алдында болжамды соманы резервтейді. Нәтижеден кейін өлшенген пайдалану көлемі бойынша қорытынды төлемді шегереді. Ағындық жауап үшін төлем соңғы пайдалану жазбасы негізінде шегеріледі. Резервтеу мен төлемді есептеу тәртібі →
Анықтамалық тариф мәліметтері
Модельдің анықтамалық кестелері әдіс таңдауын, баға есебін не төлемді өзгертпейді. Қолданыстағы төлемдер таңдалған Ailoot әдісінің мөлшерлемелерімен есептеледі.
Модельдің анықтамалық кестелері
Баптаулар бойынша бағалар
Әр төлемді көрсетілген шарттармен салыстырыңыз. Балама баптаулардың әр жиыны үшін бір мөлшерлемені қолданыңыз.
| Баптау | Мөлшерлемелер кестесі | Контекст токендерінің саны мынадан көп | Контекст токендерінің саны мынадан аспайды, шегі кіреді | Төлем |
|---|---|---|---|---|
| БаптауOpenAI Chat · Токендердің базалық тарифтері | Мөлшерлемелер кестесіНегізгі мөлшерлеме | Контекст токендерінің саны мынадан көп— | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
| БаптауOpenAI Chat · Сұрау ұзындығы бойынша 1-деңгей | Мөлшерлемелер кестесі— | Контекст токендерінің саны мынадан көп0 | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
| БаптауAnthropic Messages · Токендердің базалық тарифтері | Мөлшерлемелер кестесіНегізгі мөлшерлеме | Контекст токендерінің саны мынадан көп— | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
| БаптауAnthropic Messages · Сұрау ұзындығы бойынша 1-деңгей | Мөлшерлемелер кестесі— | Контекст токендерінің саны мынадан көп0 | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
Сұрау мысалдары
Ailoot · Anthropic хабарламалары
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-4.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
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_IMAGE_FILE:?Set your actual PNG JPEG or WebP image}"
export AILOOT_IMAGE_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "glm-4.5", "max_tokens": 1024, "messages": [{"role": "user", "content": [{"type": "text", "text": "Read labels and numbers in this image; flag unreadable text."}]}]}')
import base64
f=Path(os.environ["AILOOT_IMAGE_FILE"])
if not f.is_file():raise SystemExit("Choose an actual PNG JPEG or WebP image")
raw=f.read_bytes()
mime="image/png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "image/jpeg" if raw.startswith(b"\xff\xd8") else "image/webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else None
if not mime:raise SystemExit("Use PNG JPEG or WebP")
b64=base64.b64encode(raw).decode()
p["messages"][0]["content"].append({"type":"image","source":{"type":"base64","media_type":mime,"data":b64}})
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-4.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-4.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-4.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")
Нәтижелерді алу және сақтау
Ailoot · Anthropic хабарламалары
json немесе SSE
Барлық дайын нәтижені сақтау
Қайтарылған әр толық жауапты, файлды және мазмұн бөлігін сақтаңыз.
Барлық мазмұн блоктарын, пайымдау қолтаңбаларын және құрал қолданудың нақты ID мәндерін сақтаңыз. SSE блоктарының барлық өзгерістерін жинаңыз; алғашқы мәтіндік блок толық шығыс емес.
Бастапқы жауапты тексеру қажет болса
Сұрау мен жауаптың ID мәндерін және тақырыптарын сақтаңыз. Мәтіндік тапсырманы алуға арналған ортақ URL берілмеген.
Жауап өрістері
| Өріс | Түрі |
|---|---|
Өрісid | Түріstring |
Өрісmodel | Түріstring |
Өрісcontent[] | Түріtext|thinking|tool_use|other content block |
Өрісstop_reason | Түріstring|null |
Өрісusage | Түріobject |
Қателер және келесі қадамдар
| Жауап | Шарт | Келесі қадам |
|---|---|---|
Жауап400 · invalid_request_error | ШартМіндетті өрістер, материалды ұсыну тәсілі немесе параметр мәні қате | Келесі қадамЖаңадан жасау сұрауын жібермес бұрын көрсетілген өрістерді түзетіңіз. |
Балама атаулар
Модельдердің балама атаулары
Ailoot glm-5.3-flash, glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5-turbo, glm-flash, glm-flash-latest, z-ai/glm-5.3-flash
Ailoot Ultra glm-5.3-flash, z-ai/glm-5.3-flash, ~z-ai/glm-flash-latest
Әдіс жолдарының балама атаулары
/chat/completions
Шақыруға арналған байланысты ID
z-ai/glm-5.3-flash, z-ai/glm-5.3-flash, glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5-turbo, glm-flash, glm-flash-latest, ~z-ai/glm-flash-latest, glm-5.3-flash, glm-5.3-flash
Ailoot · OpenAI Responses POST /v1/responses glm-4.5
glm-4.5glm-5.3-flashglm-4.5glm-4.5-airglm-4.6glm-4.7glm-5-turboglm-flashglm-flash-latest
Бастау
GLM 5.3 Flash — визуалды әзірлеуге, құжат талдауға және мәтіндік нәтиже беретін агенттік жұмысқа арналған Z.ai мультимодальды моделі.
- Қабылданатын кіріс деректері
- Мәтін · Суреттер
- Нәтижелер
- Мәтін
Ailoot жүйесінде қолжетімді · кіріс деректері мен әдістер
Ailoot · OpenAI Responses POST /v1/responses
- Кіріс
text,image- Шығыс
text- Контекст
- 1 000 000 tokens
- Ең үлкен шығыс
- 131 072 tokens
- Шығыс пішімі
- json немесе SSE
| Өріс | Түрі | Талап | Мәндер мен шектеулер | Әдепкі |
|---|---|---|---|---|
Өрісmodel | Түріstring | ТалапМіндетті | Мәндер мен шектеулер glm-4.5 | Әдепкі— |
Өрісinput | Түріstring|input_item[] | ТалапМіндетті | Мәндер мен шектеулер | Әдепкі— |
Өрісinstructions | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісinput[].type | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер message, reasoning, function_call, function_call_output | Әдепкі— |
Өрісinput[].content | Түріstring|content_part[] | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісinput[].call_id | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Мына жағдайда қолданылады: function_call_output; нақты қайтарылған call_id мәнін сақтаңыз | Әдепкі— |
Өрісinput[].output | Түріstring|content_part[] | ТалапМіндетті емес | Мәндер мен шектеулер Мына жағдайда қолданылады: function_call_output | Әдепкі— |
Өрісmax_output_tokens | Түріinteger | ТалапМіндетті емес | Мәндер мен шектеулер Ең азы: 1 Модельге байланысты | Әдепкі— |
Өрісstream | Түріboolean | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкіfalse |
Өрісtemperature | Түріnumber | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtop_p | Түріnumber | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtools | Түріtool[] | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtool_choice | Түріstring|object | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісparallel_tool_calls | Түріboolean | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісreasoning.effort | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісreasoning.summary | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtext.format | Түріobject | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtext.verbosity | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісinclude | Түріstring[] | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісstore | Түріboolean | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісprevious_response_id | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер ID талабы: Қолдау көрсетілетін жалғастырудан алынған нақты жауап ID-і ғана Модельге байланысты | Әдепкі— |
Өрісservice_tier | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісprompt_cache_key | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісprompt_cache_options | Түріobject | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Кіріс материалдарының үйлесімдері
Мәтін · UTF8 мәтіні
кіріс мәтіні немесе input_text бөлігі
Мәтін + сурет
{type:input_image,image_url}
Әдіс параметрлері мен өмірлік циклі
| Параметр | Параметр талаптары |
|---|---|
Параметрmaterial_types | Параметр талаптарыtext, image |
Параметрrequired | Параметр талаптарыmodel, input |
Параметрoptional_controls | Параметр талаптарыnull |
Параметрcontent_type | Параметр талаптарыapplication/json |
Параметрtext_file_material | Параметр талаптарынақты UTF-8 мазмұны мәтін ретінде енгізіледі; файл ID мәндері мен URLs үшін бөлек нақты қолдау қажет |
Өмірлік цикл: exact retained published method
Әдіс құрылымдары мен ID мәндері дәл берілген; жеткізушінің мүмкіндігі сұрауды қабылдаудан бөлек қаралады.
Тарифтер
Ailoot әдістерінің мөлшерлемелері
POST /v1/responses- Кіріс
- 0,00015 $ / 1K
- Шығыс
- 0,0005 $ / 1K
- Кэшті оқу
- ≈0,00003 $ / 1K
Ailoot сұрау алдында болжамды соманы резервтейді. Нәтижеден кейін өлшенген пайдалану көлемі бойынша қорытынды төлемді шегереді. Ағындық жауап үшін төлем соңғы пайдалану жазбасы негізінде шегеріледі. Резервтеу мен төлемді есептеу тәртібі →
Анықтамалық тариф мәліметтері
Модельдің анықтамалық кестелері әдіс таңдауын, баға есебін не төлемді өзгертпейді. Қолданыстағы төлемдер таңдалған Ailoot әдісінің мөлшерлемелерімен есептеледі.
Модельдің анықтамалық кестелері
Баптаулар бойынша бағалар
Әр төлемді көрсетілген шарттармен салыстырыңыз. Балама баптаулардың әр жиыны үшін бір мөлшерлемені қолданыңыз.
| Баптау | Мөлшерлемелер кестесі | Контекст токендерінің саны мынадан көп | Контекст токендерінің саны мынадан аспайды, шегі кіреді | Төлем |
|---|---|---|---|---|
| БаптауOpenAI Chat · Токендердің базалық тарифтері | Мөлшерлемелер кестесіНегізгі мөлшерлеме | Контекст токендерінің саны мынадан көп— | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
| БаптауOpenAI Chat · Сұрау ұзындығы бойынша 1-деңгей | Мөлшерлемелер кестесі— | Контекст токендерінің саны мынадан көп0 | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
| БаптауAnthropic Messages · Токендердің базалық тарифтері | Мөлшерлемелер кестесіНегізгі мөлшерлеме | Контекст токендерінің саны мынадан көп— | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
| БаптауAnthropic Messages · Сұрау ұзындығы бойынша 1-деңгей | Мөлшерлемелер кестесі— | Контекст токендерінің саны мынадан көп0 | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
Сұрау мысалдары
Ailoot · OpenAI Responses
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-4.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
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_IMAGE_FILE:?Set your actual PNG JPEG or WebP image}"
export AILOOT_IMAGE_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "glm-4.5", "input": [{"role": "user", "content": [{"type": "input_text", "text": "Read labels and numbers in this image; flag unreadable text."}]}]}')
import base64
f=Path(os.environ["AILOOT_IMAGE_FILE"])
if not f.is_file():raise SystemExit("Choose an actual PNG JPEG or WebP image")
raw=f.read_bytes()
mime="image/png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "image/jpeg" if raw.startswith(b"\xff\xd8") else "image/webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else None
if not mime:raise SystemExit("Use PNG JPEG or WebP")
b64=base64.b64encode(raw).decode()
p["input"][0]["content"].append({"type":"input_image","image_url":"data:"+mime+";base64,"+b64})
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-4.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-4.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-4.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")
Нәтижелерді алу және сақтау
Ailoot · OpenAI Responses
json немесе SSE
Барлық дайын нәтижені сақтау
Қайтарылған әр толық жауапты, файлды және мазмұн бөлігін сақтаңыз.
Әр шығыс элементін және мазмұн бөлігін, функцияның нақты call_id мәнін, шифрланған пайымдауды және пайдалану деректерін сақтаңыз. Ағында оқиғалар мен элементтердің барлық сәйкестендіру деректерін сақтаңыз.
Бастапқы жауапты тексеру қажет болса
Сұрау мен жауаптың ID мәндерін және тақырыптарын сақтаңыз. Мәтіндік тапсырманы алуға арналған ортақ URL берілмеген.
Жауап өрістері
| Өріс | Түрі |
|---|---|
Өрісid | Түріstring |
Өрісstatus | Түріstring |
Өрісoutput[] | Түріmessage|reasoning|function_call|other item |
Өрісoutput[].content[] | Түріcontent part |
Өрісusage | Түріobject |
Қателер және келесі қадамдар
| Жауап | Шарт | Келесі қадам |
|---|---|---|
Жауап400 · invalid_request_error | ШартМіндетті өрістер, материалды ұсыну тәсілі немесе параметр мәні қате | Келесі қадамЖаңадан жасау сұрауын жібермес бұрын көрсетілген өрістерді түзетіңіз. |
Балама атаулар
Модельдердің балама атаулары
Ailoot glm-5.3-flash, glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5-turbo, glm-flash, glm-flash-latest, z-ai/glm-5.3-flash
Ailoot Ultra glm-5.3-flash, z-ai/glm-5.3-flash, ~z-ai/glm-flash-latest
Әдіс жолдарының балама атаулары
/chat/completions
Шақыруға арналған байланысты ID
z-ai/glm-5.3-flash, z-ai/glm-5.3-flash, glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5-turbo, glm-flash, glm-flash-latest, ~z-ai/glm-flash-latest, glm-5.3-flash, glm-5.3-flash
Ailoot · OpenAI чаты POST /v1/chat/completions glm-4.5
glm-4.5glm-5.3-flashglm-4.5glm-4.5-airglm-4.6glm-4.7glm-5-turboglm-flashglm-flash-latestz-ai/glm-5.3-flash
Бастау
GLM 5.3 Flash — визуалды әзірлеуге, құжат талдауға және мәтіндік нәтиже беретін агенттік жұмысқа арналған Z.ai мультимодальды моделі.
- Қабылданатын кіріс деректері
- Мәтін · Суреттер
- Нәтижелер
- Мәтін
Ailoot жүйесінде қолжетімді · кіріс деректері мен әдістер
Ailoot · OpenAI чаты POST /v1/chat/completions
- Кіріс
text,image- Шығыс
text- Контекст
- 1 000 000 tokens
- Ең үлкен шығыс
- 131 072 tokens
- Шығыс пішімі
- json немесе SSE
| Өріс | Түрі | Талап | Мәндер мен шектеулер | Әдепкі |
|---|---|---|---|---|
Өрісmodel | Түріstring | ТалапМіндетті | Мәндер мен шектеулер glm-4.5 | Әдепкі— |
Өрісmessages | Түріmessage[] | ТалапМіндетті | Мәндер мен шектеулер Элементтердің ең аз саны: 1 | Әдепкі— |
Өрісmessages[].role | Түріstring | ТалапМіндетті | Мәндер мен шектеулер Мысалдар: system, user, assistant, tool, function Шарттар: Бұл рөлдер бастапқы кодтағы үйлесімділік түрлерінде айқын көрсетілген; рөлдердің нақты жиыны әр модельге байланысты. Модельге байланысты | Әдепкі— |
Өрісmessages[].content | Түріstring|content_part[]|null | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісmessages[].tool_calls | Түріtool_call[] | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісmessages[].tool_call_id | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Мына жағдайда қолданылады: role=tool; нақты қайтарылған ID мәнін пайдаланыңыз | Әдепкі— |
Өрісmessages[].name | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісmessages[].reasoning_content | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Мына жағдайда қолданылады: Модель пайымдауды пайдаланса, нақты қайтарылған пайымдауды қайта жіберіңіз | Әдепкі— |
Өрісmessages[].reasoning_details | Түріobject|array | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісmax_tokens | Түріinteger | ТалапМіндетті емес | Мәндер мен шектеулер Ең азы: 1 Модельге байланысты | Әдепкі— |
Өрісmax_completion_tokens | Түріinteger | ТалапМіндетті емес | Мәндер мен шектеулер Ең азы: 1 Модельге байланысты | Әдепкі— |
Өрісstream | Түріboolean | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкіfalse |
Өрісstream_options.include_usage | Түріboolean | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtemperature | Түріnumber | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtop_p | Түріnumber | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісstop | Түріstring|string[] | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtools | Түріfunction_tool[] | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtools[].type | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtools[].function.name | Түріstring | ТалапМіндетті | Мәндер мен шектеулер Мына жағдайда қолданылады: функция құралы берілген | Әдепкі— |
Өрісtools[].function.description | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісtools[].function.parameters | ТүріJSON_schema | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісtool_choice | Түріstring|object | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісparallel_tool_calls | Түріboolean | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісresponse_format | Түріobject | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісreasoning_effort | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісreasoning | Түріobject | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісservice_tier | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісinstructions | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Үйлесімділік өрісі | Әдепкі— |
Өрісfunctions | Түріfunction[] | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісfunction_call | Түріstring|object | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісprompt_cache_options | Түріobject | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Кіріс материалдарының үйлесімдері
Мәтін · UTF8 мәтіні
messages[].content
Мәтін + сурет
{type:image_url,image_url:{url,detail}}
Әдіс параметрлері мен өмірлік циклі
| Параметр | Параметр талаптары |
|---|---|
Параметрmaterial_types | Параметр талаптарыtext, image |
Параметрrequired | Параметр талаптарыmodel, messages |
Параметрoptional_controls | Параметр талаптарыnull |
Параметрcontent_type | Параметр талаптарыapplication/json |
Параметрtext_file_material | Параметр талаптарынақты UTF-8 мазмұны мәтін ретінде енгізіледі; файл ID мәндері мен URLs үшін бөлек нақты қолдау қажет |
Өмірлік цикл: exact retained published method
Әдіс құрылымдары мен ID мәндері дәл берілген; жеткізушінің мүмкіндігі сұрауды қабылдаудан бөлек қаралады.
Тарифтер
Ailoot әдістерінің мөлшерлемелері
POST /v1/chat/completions- Кіріс
- 0,00015 $ / 1K
- Шығыс
- 0,0005 $ / 1K
- Кэшті оқу
- ≈0,00003 $ / 1K
Ailoot сұрау алдында болжамды соманы резервтейді. Нәтижеден кейін өлшенген пайдалану көлемі бойынша қорытынды төлемді шегереді. Ағындық жауап үшін төлем соңғы пайдалану жазбасы негізінде шегеріледі. Резервтеу мен төлемді есептеу тәртібі →
Анықтамалық тариф мәліметтері
Модельдің анықтамалық кестелері әдіс таңдауын, баға есебін не төлемді өзгертпейді. Қолданыстағы төлемдер таңдалған Ailoot әдісінің мөлшерлемелерімен есептеледі.
Модельдің анықтамалық кестелері
Баптаулар бойынша бағалар
Әр төлемді көрсетілген шарттармен салыстырыңыз. Балама баптаулардың әр жиыны үшін бір мөлшерлемені қолданыңыз.
| Баптау | Мөлшерлемелер кестесі | Контекст токендерінің саны мынадан көп | Контекст токендерінің саны мынадан аспайды, шегі кіреді | Төлем |
|---|---|---|---|---|
| БаптауOpenAI Chat · Токендердің базалық тарифтері | Мөлшерлемелер кестесіНегізгі мөлшерлеме | Контекст токендерінің саны мынадан көп— | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
| БаптауOpenAI Chat · Сұрау ұзындығы бойынша 1-деңгей | Мөлшерлемелер кестесі— | Контекст токендерінің саны мынадан көп0 | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
| БаптауAnthropic Messages · Токендердің базалық тарифтері | Мөлшерлемелер кестесіНегізгі мөлшерлеме | Контекст токендерінің саны мынадан көп— | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
| БаптауAnthropic Messages · Сұрау ұзындығы бойынша 1-деңгей | Мөлшерлемелер кестесі— | Контекст токендерінің саны мынадан көп0 | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
Сұрау мысалдары
Ailoot · OpenAI чаты
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-4.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
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_IMAGE_FILE:?Set your actual PNG JPEG or WebP image}"
export AILOOT_IMAGE_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "glm-4.5", "messages": [{"role": "user", "content": [{"type": "text", "text": "Read labels and numbers in this image; flag unreadable text."}]}]}')
import base64
f=Path(os.environ["AILOOT_IMAGE_FILE"])
if not f.is_file():raise SystemExit("Choose an actual PNG JPEG or WebP image")
raw=f.read_bytes()
mime="image/png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "image/jpeg" if raw.startswith(b"\xff\xd8") else "image/webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else None
if not mime:raise SystemExit("Use PNG JPEG or WebP")
b64=base64.b64encode(raw).decode()
p["messages"][0]["content"].append({"type":"image_url","image_url":{"url":"data:"+mime+";base64,"+b64}})
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-4.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-4.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-4.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")
Нәтижелерді алу және сақтау
Ailoot · OpenAI чаты
json немесе SSE
Барлық дайын нәтижені сақтау
Қайтарылған әр толық жауапты, файлды және мазмұн бөлігін сақтаңыз.
Әр жауап нұсқасын оның мазмұнымен, құрал шақыруларымен және пайымдауымен бірге сақтаңыз. SSE өзгерістерін жауап нұсқасы мен құрал индексі бойынша жинап, соңғы аяқталу себебі мен пайдалану деректерін сақтаңыз.
Бастапқы жауапты тексеру қажет болса
Сұрау мен жауаптың ID мәндерін және тақырыптарын сақтаңыз. Мәтіндік тапсырманы алуға арналған ортақ URL берілмеген.
Жауап өрістері
| Өріс | Түрі |
|---|---|
Өрісchoices[].index | Түріinteger |
Өрісchoices[].message.content | Түріstring|null |
Өрісchoices[].message.tool_calls | Түріtool_call[] |
Өрісchoices[].message.reasoning_content | Түріstring |
Өрісchoices[].message.reasoning_details | Түріobject|array |
Өрісchoices[].finish_reason | Түріstring|null |
Өрісusage | Түріobject |
Қателер және келесі қадамдар
| Жауап | Шарт | Келесі қадам |
|---|---|---|
Жауап400 · invalid_request_error | ШартМіндетті өрістер, материалды ұсыну тәсілі немесе параметр мәні қате | Келесі қадамЖаңадан жасау сұрауын жібермес бұрын көрсетілген өрістерді түзетіңіз. |
Балама атаулар
Модельдердің балама атаулары
Ailoot glm-5.3-flash, glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5-turbo, glm-flash, glm-flash-latest, z-ai/glm-5.3-flash
Ailoot Ultra glm-5.3-flash, z-ai/glm-5.3-flash, ~z-ai/glm-flash-latest
Әдіс жолдарының балама атаулары
/chat/completions
Шақыруға арналған байланысты ID
z-ai/glm-5.3-flash, z-ai/glm-5.3-flash, glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5-turbo, glm-flash, glm-flash-latest, ~z-ai/glm-flash-latest, glm-5.3-flash, glm-5.3-flash
Ailoot · Anthropic хабарламалары POST /v1/messages glm-4.5-air
glm-4.5-airglm-5.3-flashglm-4.5glm-4.5-airglm-4.6glm-4.7glm-5-turboglm-flashglm-flash-latestz-ai/glm-5.3-flash
Бастау
GLM 5.3 Flash — визуалды әзірлеуге, құжат талдауға және мәтіндік нәтиже беретін агенттік жұмысқа арналған Z.ai мультимодальды моделі.
- Қабылданатын кіріс деректері
- Мәтін · Суреттер
- Нәтижелер
- Мәтін
Ailoot жүйесінде қолжетімді · кіріс деректері мен әдістер
Ailoot · Anthropic хабарламалары POST /v1/messages
- Кіріс
text,image- Шығыс
text- Контекст
- 1 000 000 tokens
- Ең үлкен шығыс
- 131 072 tokens
- Шығыс пішімі
- json немесе SSE
| Өріс | Түрі | Талап | Мәндер мен шектеулер | Әдепкі |
|---|---|---|---|---|
Өрісmodel | Түріstring | ТалапМіндетті | Мәндер мен шектеулер glm-4.5-air | Әдепкі— |
Өрісmessages | Түріmessage[] | ТалапМіндетті | Мәндер мен шектеулер Элементтердің ең аз саны: 1 | Әдепкі— |
Өрісmessages[].role | Түріstring | ТалапМіндетті | Мәндер мен шектеулер user, assistant | Әдепкі— |
Өрісmessages[].content | Түріstring|content_block[] | ТалапМіндетті | Мәндер мен шектеулер | Әдепкі— |
Өрісsystem | Түріstring|content_block[] | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісmax_tokens | Түріinteger | ТалапМіндетті | Мәндер мен шектеулер Ең азы: 1 Шектеу қолданылатын нысан: таңдалған модельдің/карточканың нақты жоғарғы шегі | Әдепкі— |
Өрісstream | Түріboolean | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкіfalse |
Өрісtemperature | Түріnumber | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtop_p | Түріnumber | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісstop_sequences | Түріstring[] | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtools | Түріtool[] | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtools[].name | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Мына жағдайда қолданылады: құрал берілген | Әдепкі— |
Өрісtools[].description | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісtools[].input_schema | ТүріJSON_schema | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісtool_choice | Түріobject | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісthinking.type | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісthinking.budget_tokens | Түріinteger | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісoutput_config.effort | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісmetadata | Түріobject | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісcache_control | Түріobject | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Кіріс материалдарының үйлесімдері
Мәтін · UTF8 мәтіні
messages[].content немесе type=text блогы
Мәтін + сурет
{type:image,source:{type:base64,media_type,data}} немесе type=url дереккөзі
Әдіс параметрлері мен өмірлік циклі
| Параметр | Параметр талаптары |
|---|---|
Параметрmaterial_types | Параметр талаптарыtext, image |
Параметрrequired | Параметр талаптарыmodel, messages, max_tokens |
Параметрoptional_controls | Параметр талаптарыnull |
Параметрcontent_type | Параметр талаптарыapplication/json |
Параметрtext_file_material | Параметр талаптарынақты UTF-8 мазмұны мәтін ретінде енгізіледі; файл ID мәндері мен URLs үшін бөлек нақты қолдау қажет |
Өмірлік цикл: exact retained published method
Әдіс құрылымдары мен ID мәндері дәл берілген; жеткізушінің мүмкіндігі сұрауды қабылдаудан бөлек қаралады.
Тарифтер
Ailoot әдістерінің мөлшерлемелері
POST /v1/messages- Кіріс
- 0,00015 $ / 1K
- Шығыс
- 0,0005 $ / 1K
- Кэшті оқу
- ≈0,00003 $ / 1K
Ailoot сұрау алдында болжамды соманы резервтейді. Нәтижеден кейін өлшенген пайдалану көлемі бойынша қорытынды төлемді шегереді. Ағындық жауап үшін төлем соңғы пайдалану жазбасы негізінде шегеріледі. Резервтеу мен төлемді есептеу тәртібі →
Анықтамалық тариф мәліметтері
Модельдің анықтамалық кестелері әдіс таңдауын, баға есебін не төлемді өзгертпейді. Қолданыстағы төлемдер таңдалған Ailoot әдісінің мөлшерлемелерімен есептеледі.
Модельдің анықтамалық кестелері
Баптаулар бойынша бағалар
Әр төлемді көрсетілген шарттармен салыстырыңыз. Балама баптаулардың әр жиыны үшін бір мөлшерлемені қолданыңыз.
| Баптау | Мөлшерлемелер кестесі | Контекст токендерінің саны мынадан көп | Контекст токендерінің саны мынадан аспайды, шегі кіреді | Төлем |
|---|---|---|---|---|
| БаптауOpenAI Chat · Токендердің базалық тарифтері | Мөлшерлемелер кестесіНегізгі мөлшерлеме | Контекст токендерінің саны мынадан көп— | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
| БаптауOpenAI Chat · Сұрау ұзындығы бойынша 1-деңгей | Мөлшерлемелер кестесі— | Контекст токендерінің саны мынадан көп0 | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
| БаптауAnthropic Messages · Токендердің базалық тарифтері | Мөлшерлемелер кестесіНегізгі мөлшерлеме | Контекст токендерінің саны мынадан көп— | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
| БаптауAnthropic Messages · Сұрау ұзындығы бойынша 1-деңгей | Мөлшерлемелер кестесі— | Контекст токендерінің саны мынадан көп0 | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
Сұрау мысалдары
Ailoot · Anthropic хабарламалары
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-4.5-air", "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
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_IMAGE_FILE:?Set your actual PNG JPEG or WebP image}"
export AILOOT_IMAGE_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "glm-4.5-air", "max_tokens": 1024, "messages": [{"role": "user", "content": [{"type": "text", "text": "Read labels and numbers in this image; flag unreadable text."}]}]}')
import base64
f=Path(os.environ["AILOOT_IMAGE_FILE"])
if not f.is_file():raise SystemExit("Choose an actual PNG JPEG or WebP image")
raw=f.read_bytes()
mime="image/png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "image/jpeg" if raw.startswith(b"\xff\xd8") else "image/webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else None
if not mime:raise SystemExit("Use PNG JPEG or WebP")
b64=base64.b64encode(raw).decode()
p["messages"][0]["content"].append({"type":"image","source":{"type":"base64","media_type":mime,"data":b64}})
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-4.5-air",
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-4.5-air",
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-4.5-air',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")
Нәтижелерді алу және сақтау
Ailoot · Anthropic хабарламалары
json немесе SSE
Барлық дайын нәтижені сақтау
Қайтарылған әр толық жауапты, файлды және мазмұн бөлігін сақтаңыз.
Барлық мазмұн блоктарын, пайымдау қолтаңбаларын және құрал қолданудың нақты ID мәндерін сақтаңыз. SSE блоктарының барлық өзгерістерін жинаңыз; алғашқы мәтіндік блок толық шығыс емес.
Бастапқы жауапты тексеру қажет болса
Сұрау мен жауаптың ID мәндерін және тақырыптарын сақтаңыз. Мәтіндік тапсырманы алуға арналған ортақ URL берілмеген.
Жауап өрістері
| Өріс | Түрі |
|---|---|
Өрісid | Түріstring |
Өрісmodel | Түріstring |
Өрісcontent[] | Түріtext|thinking|tool_use|other content block |
Өрісstop_reason | Түріstring|null |
Өрісusage | Түріobject |
Қателер және келесі қадамдар
| Жауап | Шарт | Келесі қадам |
|---|---|---|
Жауап400 · invalid_request_error | ШартМіндетті өрістер, материалды ұсыну тәсілі немесе параметр мәні қате | Келесі қадамЖаңадан жасау сұрауын жібермес бұрын көрсетілген өрістерді түзетіңіз. |
Балама атаулар
Модельдердің балама атаулары
Ailoot glm-5.3-flash, glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5-turbo, glm-flash, glm-flash-latest, z-ai/glm-5.3-flash
Ailoot Ultra glm-5.3-flash, z-ai/glm-5.3-flash, ~z-ai/glm-flash-latest
Әдіс жолдарының балама атаулары
/chat/completions
Шақыруға арналған байланысты ID
z-ai/glm-5.3-flash, z-ai/glm-5.3-flash, glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5-turbo, glm-flash, glm-flash-latest, ~z-ai/glm-flash-latest, glm-5.3-flash, glm-5.3-flash
Ailoot · OpenAI Responses POST /v1/responses glm-4.5-air
glm-4.5-airglm-5.3-flashglm-4.5glm-4.5-airglm-4.6glm-4.7glm-5-turboglm-flashglm-flash-latest
Бастау
GLM 5.3 Flash — визуалды әзірлеуге, құжат талдауға және мәтіндік нәтиже беретін агенттік жұмысқа арналған Z.ai мультимодальды моделі.
- Қабылданатын кіріс деректері
- Мәтін · Суреттер
- Нәтижелер
- Мәтін
Ailoot жүйесінде қолжетімді · кіріс деректері мен әдістер
Ailoot · OpenAI Responses POST /v1/responses
- Кіріс
text,image- Шығыс
text- Контекст
- 1 000 000 tokens
- Ең үлкен шығыс
- 131 072 tokens
- Шығыс пішімі
- json немесе SSE
| Өріс | Түрі | Талап | Мәндер мен шектеулер | Әдепкі |
|---|---|---|---|---|
Өрісmodel | Түріstring | ТалапМіндетті | Мәндер мен шектеулер glm-4.5-air | Әдепкі— |
Өрісinput | Түріstring|input_item[] | ТалапМіндетті | Мәндер мен шектеулер | Әдепкі— |
Өрісinstructions | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісinput[].type | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер message, reasoning, function_call, function_call_output | Әдепкі— |
Өрісinput[].content | Түріstring|content_part[] | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісinput[].call_id | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Мына жағдайда қолданылады: function_call_output; нақты қайтарылған call_id мәнін сақтаңыз | Әдепкі— |
Өрісinput[].output | Түріstring|content_part[] | ТалапМіндетті емес | Мәндер мен шектеулер Мына жағдайда қолданылады: function_call_output | Әдепкі— |
Өрісmax_output_tokens | Түріinteger | ТалапМіндетті емес | Мәндер мен шектеулер Ең азы: 1 Модельге байланысты | Әдепкі— |
Өрісstream | Түріboolean | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкіfalse |
Өрісtemperature | Түріnumber | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtop_p | Түріnumber | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtools | Түріtool[] | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtool_choice | Түріstring|object | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісparallel_tool_calls | Түріboolean | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісreasoning.effort | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісreasoning.summary | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtext.format | Түріobject | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtext.verbosity | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісinclude | Түріstring[] | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісstore | Түріboolean | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісprevious_response_id | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер ID талабы: Қолдау көрсетілетін жалғастырудан алынған нақты жауап ID-і ғана Модельге байланысты | Әдепкі— |
Өрісservice_tier | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісprompt_cache_key | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісprompt_cache_options | Түріobject | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Кіріс материалдарының үйлесімдері
Мәтін · UTF8 мәтіні
кіріс мәтіні немесе input_text бөлігі
Мәтін + сурет
{type:input_image,image_url}
Әдіс параметрлері мен өмірлік циклі
| Параметр | Параметр талаптары |
|---|---|
Параметрmaterial_types | Параметр талаптарыtext, image |
Параметрrequired | Параметр талаптарыmodel, input |
Параметрoptional_controls | Параметр талаптарыnull |
Параметрcontent_type | Параметр талаптарыapplication/json |
Параметрtext_file_material | Параметр талаптарынақты UTF-8 мазмұны мәтін ретінде енгізіледі; файл ID мәндері мен URLs үшін бөлек нақты қолдау қажет |
Өмірлік цикл: exact retained published method
Әдіс құрылымдары мен ID мәндері дәл берілген; жеткізушінің мүмкіндігі сұрауды қабылдаудан бөлек қаралады.
Тарифтер
Ailoot әдістерінің мөлшерлемелері
POST /v1/responses- Кіріс
- 0,00015 $ / 1K
- Шығыс
- 0,0005 $ / 1K
- Кэшті оқу
- ≈0,00003 $ / 1K
Ailoot сұрау алдында болжамды соманы резервтейді. Нәтижеден кейін өлшенген пайдалану көлемі бойынша қорытынды төлемді шегереді. Ағындық жауап үшін төлем соңғы пайдалану жазбасы негізінде шегеріледі. Резервтеу мен төлемді есептеу тәртібі →
Анықтамалық тариф мәліметтері
Модельдің анықтамалық кестелері әдіс таңдауын, баға есебін не төлемді өзгертпейді. Қолданыстағы төлемдер таңдалған Ailoot әдісінің мөлшерлемелерімен есептеледі.
Модельдің анықтамалық кестелері
Баптаулар бойынша бағалар
Әр төлемді көрсетілген шарттармен салыстырыңыз. Балама баптаулардың әр жиыны үшін бір мөлшерлемені қолданыңыз.
| Баптау | Мөлшерлемелер кестесі | Контекст токендерінің саны мынадан көп | Контекст токендерінің саны мынадан аспайды, шегі кіреді | Төлем |
|---|---|---|---|---|
| БаптауOpenAI Chat · Токендердің базалық тарифтері | Мөлшерлемелер кестесіНегізгі мөлшерлеме | Контекст токендерінің саны мынадан көп— | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
| БаптауOpenAI Chat · Сұрау ұзындығы бойынша 1-деңгей | Мөлшерлемелер кестесі— | Контекст токендерінің саны мынадан көп0 | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
| БаптауAnthropic Messages · Токендердің базалық тарифтері | Мөлшерлемелер кестесіНегізгі мөлшерлеме | Контекст токендерінің саны мынадан көп— | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
| БаптауAnthropic Messages · Сұрау ұзындығы бойынша 1-деңгей | Мөлшерлемелер кестесі— | Контекст токендерінің саны мынадан көп0 | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
Сұрау мысалдары
Ailoot · OpenAI Responses
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-4.5-air", "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
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_IMAGE_FILE:?Set your actual PNG JPEG or WebP image}"
export AILOOT_IMAGE_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "glm-4.5-air", "input": [{"role": "user", "content": [{"type": "input_text", "text": "Read labels and numbers in this image; flag unreadable text."}]}]}')
import base64
f=Path(os.environ["AILOOT_IMAGE_FILE"])
if not f.is_file():raise SystemExit("Choose an actual PNG JPEG or WebP image")
raw=f.read_bytes()
mime="image/png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "image/jpeg" if raw.startswith(b"\xff\xd8") else "image/webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else None
if not mime:raise SystemExit("Use PNG JPEG or WebP")
b64=base64.b64encode(raw).decode()
p["input"][0]["content"].append({"type":"input_image","image_url":"data:"+mime+";base64,"+b64})
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-4.5-air", 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-4.5-air", 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-4.5-air", 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")
Нәтижелерді алу және сақтау
Ailoot · OpenAI Responses
json немесе SSE
Барлық дайын нәтижені сақтау
Қайтарылған әр толық жауапты, файлды және мазмұн бөлігін сақтаңыз.
Әр шығыс элементін және мазмұн бөлігін, функцияның нақты call_id мәнін, шифрланған пайымдауды және пайдалану деректерін сақтаңыз. Ағында оқиғалар мен элементтердің барлық сәйкестендіру деректерін сақтаңыз.
Бастапқы жауапты тексеру қажет болса
Сұрау мен жауаптың ID мәндерін және тақырыптарын сақтаңыз. Мәтіндік тапсырманы алуға арналған ортақ URL берілмеген.
Жауап өрістері
| Өріс | Түрі |
|---|---|
Өрісid | Түріstring |
Өрісstatus | Түріstring |
Өрісoutput[] | Түріmessage|reasoning|function_call|other item |
Өрісoutput[].content[] | Түріcontent part |
Өрісusage | Түріobject |
Қателер және келесі қадамдар
| Жауап | Шарт | Келесі қадам |
|---|---|---|
Жауап400 · invalid_request_error | ШартМіндетті өрістер, материалды ұсыну тәсілі немесе параметр мәні қате | Келесі қадамЖаңадан жасау сұрауын жібермес бұрын көрсетілген өрістерді түзетіңіз. |
Балама атаулар
Модельдердің балама атаулары
Ailoot glm-5.3-flash, glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5-turbo, glm-flash, glm-flash-latest, z-ai/glm-5.3-flash
Ailoot Ultra glm-5.3-flash, z-ai/glm-5.3-flash, ~z-ai/glm-flash-latest
Әдіс жолдарының балама атаулары
/chat/completions
Шақыруға арналған байланысты ID
z-ai/glm-5.3-flash, z-ai/glm-5.3-flash, glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5-turbo, glm-flash, glm-flash-latest, ~z-ai/glm-flash-latest, glm-5.3-flash, glm-5.3-flash
Ailoot · OpenAI чаты POST /v1/chat/completions glm-4.5-air
glm-4.5-airglm-5.3-flashglm-4.5glm-4.5-airglm-4.6glm-4.7glm-5-turboglm-flashglm-flash-latestz-ai/glm-5.3-flash
Бастау
GLM 5.3 Flash — визуалды әзірлеуге, құжат талдауға және мәтіндік нәтиже беретін агенттік жұмысқа арналған Z.ai мультимодальды моделі.
- Қабылданатын кіріс деректері
- Мәтін · Суреттер
- Нәтижелер
- Мәтін
Ailoot жүйесінде қолжетімді · кіріс деректері мен әдістер
Ailoot · OpenAI чаты POST /v1/chat/completions
- Кіріс
text,image- Шығыс
text- Контекст
- 1 000 000 tokens
- Ең үлкен шығыс
- 131 072 tokens
- Шығыс пішімі
- json немесе SSE
| Өріс | Түрі | Талап | Мәндер мен шектеулер | Әдепкі |
|---|---|---|---|---|
Өрісmodel | Түріstring | ТалапМіндетті | Мәндер мен шектеулер glm-4.5-air | Әдепкі— |
Өрісmessages | Түріmessage[] | ТалапМіндетті | Мәндер мен шектеулер Элементтердің ең аз саны: 1 | Әдепкі— |
Өрісmessages[].role | Түріstring | ТалапМіндетті | Мәндер мен шектеулер Мысалдар: system, user, assistant, tool, function Шарттар: Бұл рөлдер бастапқы кодтағы үйлесімділік түрлерінде айқын көрсетілген; рөлдердің нақты жиыны әр модельге байланысты. Модельге байланысты | Әдепкі— |
Өрісmessages[].content | Түріstring|content_part[]|null | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісmessages[].tool_calls | Түріtool_call[] | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісmessages[].tool_call_id | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Мына жағдайда қолданылады: role=tool; нақты қайтарылған ID мәнін пайдаланыңыз | Әдепкі— |
Өрісmessages[].name | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісmessages[].reasoning_content | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Мына жағдайда қолданылады: Модель пайымдауды пайдаланса, нақты қайтарылған пайымдауды қайта жіберіңіз | Әдепкі— |
Өрісmessages[].reasoning_details | Түріobject|array | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісmax_tokens | Түріinteger | ТалапМіндетті емес | Мәндер мен шектеулер Ең азы: 1 Модельге байланысты | Әдепкі— |
Өрісmax_completion_tokens | Түріinteger | ТалапМіндетті емес | Мәндер мен шектеулер Ең азы: 1 Модельге байланысты | Әдепкі— |
Өрісstream | Түріboolean | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкіfalse |
Өрісstream_options.include_usage | Түріboolean | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtemperature | Түріnumber | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtop_p | Түріnumber | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісstop | Түріstring|string[] | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtools | Түріfunction_tool[] | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtools[].type | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtools[].function.name | Түріstring | ТалапМіндетті | Мәндер мен шектеулер Мына жағдайда қолданылады: функция құралы берілген | Әдепкі— |
Өрісtools[].function.description | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісtools[].function.parameters | ТүріJSON_schema | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісtool_choice | Түріstring|object | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісparallel_tool_calls | Түріboolean | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісresponse_format | Түріobject | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісreasoning_effort | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісreasoning | Түріobject | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісservice_tier | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісinstructions | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Үйлесімділік өрісі | Әдепкі— |
Өрісfunctions | Түріfunction[] | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісfunction_call | Түріstring|object | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісprompt_cache_options | Түріobject | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Кіріс материалдарының үйлесімдері
Мәтін · UTF8 мәтіні
messages[].content
Мәтін + сурет
{type:image_url,image_url:{url,detail}}
Әдіс параметрлері мен өмірлік циклі
| Параметр | Параметр талаптары |
|---|---|
Параметрmaterial_types | Параметр талаптарыtext, image |
Параметрrequired | Параметр талаптарыmodel, messages |
Параметрoptional_controls | Параметр талаптарыnull |
Параметрcontent_type | Параметр талаптарыapplication/json |
Параметрtext_file_material | Параметр талаптарынақты UTF-8 мазмұны мәтін ретінде енгізіледі; файл ID мәндері мен URLs үшін бөлек нақты қолдау қажет |
Өмірлік цикл: exact retained published method
Әдіс құрылымдары мен ID мәндері дәл берілген; жеткізушінің мүмкіндігі сұрауды қабылдаудан бөлек қаралады.
Тарифтер
Ailoot әдістерінің мөлшерлемелері
POST /v1/chat/completions- Кіріс
- 0,00015 $ / 1K
- Шығыс
- 0,0005 $ / 1K
- Кэшті оқу
- ≈0,00003 $ / 1K
Ailoot сұрау алдында болжамды соманы резервтейді. Нәтижеден кейін өлшенген пайдалану көлемі бойынша қорытынды төлемді шегереді. Ағындық жауап үшін төлем соңғы пайдалану жазбасы негізінде шегеріледі. Резервтеу мен төлемді есептеу тәртібі →
Анықтамалық тариф мәліметтері
Модельдің анықтамалық кестелері әдіс таңдауын, баға есебін не төлемді өзгертпейді. Қолданыстағы төлемдер таңдалған Ailoot әдісінің мөлшерлемелерімен есептеледі.
Модельдің анықтамалық кестелері
Баптаулар бойынша бағалар
Әр төлемді көрсетілген шарттармен салыстырыңыз. Балама баптаулардың әр жиыны үшін бір мөлшерлемені қолданыңыз.
| Баптау | Мөлшерлемелер кестесі | Контекст токендерінің саны мынадан көп | Контекст токендерінің саны мынадан аспайды, шегі кіреді | Төлем |
|---|---|---|---|---|
| БаптауOpenAI Chat · Токендердің базалық тарифтері | Мөлшерлемелер кестесіНегізгі мөлшерлеме | Контекст токендерінің саны мынадан көп— | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
| БаптауOpenAI Chat · Сұрау ұзындығы бойынша 1-деңгей | Мөлшерлемелер кестесі— | Контекст токендерінің саны мынадан көп0 | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
| БаптауAnthropic Messages · Токендердің базалық тарифтері | Мөлшерлемелер кестесіНегізгі мөлшерлеме | Контекст токендерінің саны мынадан көп— | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
| БаптауAnthropic Messages · Сұрау ұзындығы бойынша 1-деңгей | Мөлшерлемелер кестесі— | Контекст токендерінің саны мынадан көп0 | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
Сұрау мысалдары
Ailoot · OpenAI чаты
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-4.5-air", "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
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_IMAGE_FILE:?Set your actual PNG JPEG or WebP image}"
export AILOOT_IMAGE_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "glm-4.5-air", "messages": [{"role": "user", "content": [{"type": "text", "text": "Read labels and numbers in this image; flag unreadable text."}]}]}')
import base64
f=Path(os.environ["AILOOT_IMAGE_FILE"])
if not f.is_file():raise SystemExit("Choose an actual PNG JPEG or WebP image")
raw=f.read_bytes()
mime="image/png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "image/jpeg" if raw.startswith(b"\xff\xd8") else "image/webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else None
if not mime:raise SystemExit("Use PNG JPEG or WebP")
b64=base64.b64encode(raw).decode()
p["messages"][0]["content"].append({"type":"image_url","image_url":{"url":"data:"+mime+";base64,"+b64}})
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-4.5-air",
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-4.5-air",
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-4.5-air',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")
Нәтижелерді алу және сақтау
Ailoot · OpenAI чаты
json немесе SSE
Барлық дайын нәтижені сақтау
Қайтарылған әр толық жауапты, файлды және мазмұн бөлігін сақтаңыз.
Әр жауап нұсқасын оның мазмұнымен, құрал шақыруларымен және пайымдауымен бірге сақтаңыз. SSE өзгерістерін жауап нұсқасы мен құрал индексі бойынша жинап, соңғы аяқталу себебі мен пайдалану деректерін сақтаңыз.
Бастапқы жауапты тексеру қажет болса
Сұрау мен жауаптың ID мәндерін және тақырыптарын сақтаңыз. Мәтіндік тапсырманы алуға арналған ортақ URL берілмеген.
Жауап өрістері
| Өріс | Түрі |
|---|---|
Өрісchoices[].index | Түріinteger |
Өрісchoices[].message.content | Түріstring|null |
Өрісchoices[].message.tool_calls | Түріtool_call[] |
Өрісchoices[].message.reasoning_content | Түріstring |
Өрісchoices[].message.reasoning_details | Түріobject|array |
Өрісchoices[].finish_reason | Түріstring|null |
Өрісusage | Түріobject |
Қателер және келесі қадамдар
| Жауап | Шарт | Келесі қадам |
|---|---|---|
Жауап400 · invalid_request_error | ШартМіндетті өрістер, материалды ұсыну тәсілі немесе параметр мәні қате | Келесі қадамЖаңадан жасау сұрауын жібермес бұрын көрсетілген өрістерді түзетіңіз. |
Балама атаулар
Модельдердің балама атаулары
Ailoot glm-5.3-flash, glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5-turbo, glm-flash, glm-flash-latest, z-ai/glm-5.3-flash
Ailoot Ultra glm-5.3-flash, z-ai/glm-5.3-flash, ~z-ai/glm-flash-latest
Әдіс жолдарының балама атаулары
/chat/completions
Шақыруға арналған байланысты ID
z-ai/glm-5.3-flash, z-ai/glm-5.3-flash, glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5-turbo, glm-flash, glm-flash-latest, ~z-ai/glm-flash-latest, glm-5.3-flash, glm-5.3-flash
Ailoot · Anthropic хабарламалары POST /v1/messages glm-4.6
glm-4.6glm-5.3-flashglm-4.5glm-4.5-airglm-4.6glm-4.7glm-5-turboglm-flashglm-flash-latestz-ai/glm-5.3-flash
Бастау
GLM 5.3 Flash — визуалды әзірлеуге, құжат талдауға және мәтіндік нәтиже беретін агенттік жұмысқа арналған Z.ai мультимодальды моделі.
- Қабылданатын кіріс деректері
- Мәтін · Суреттер
- Нәтижелер
- Мәтін
Ailoot жүйесінде қолжетімді · кіріс деректері мен әдістер
Ailoot · Anthropic хабарламалары POST /v1/messages
- Кіріс
text,image- Шығыс
text- Контекст
- 1 000 000 tokens
- Ең үлкен шығыс
- 131 072 tokens
- Шығыс пішімі
- json немесе SSE
| Өріс | Түрі | Талап | Мәндер мен шектеулер | Әдепкі |
|---|---|---|---|---|
Өрісmodel | Түріstring | ТалапМіндетті | Мәндер мен шектеулер glm-4.6 | Әдепкі— |
Өрісmessages | Түріmessage[] | ТалапМіндетті | Мәндер мен шектеулер Элементтердің ең аз саны: 1 | Әдепкі— |
Өрісmessages[].role | Түріstring | ТалапМіндетті | Мәндер мен шектеулер user, assistant | Әдепкі— |
Өрісmessages[].content | Түріstring|content_block[] | ТалапМіндетті | Мәндер мен шектеулер | Әдепкі— |
Өрісsystem | Түріstring|content_block[] | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісmax_tokens | Түріinteger | ТалапМіндетті | Мәндер мен шектеулер Ең азы: 1 Шектеу қолданылатын нысан: таңдалған модельдің/карточканың нақты жоғарғы шегі | Әдепкі— |
Өрісstream | Түріboolean | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкіfalse |
Өрісtemperature | Түріnumber | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtop_p | Түріnumber | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісstop_sequences | Түріstring[] | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtools | Түріtool[] | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtools[].name | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Мына жағдайда қолданылады: құрал берілген | Әдепкі— |
Өрісtools[].description | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісtools[].input_schema | ТүріJSON_schema | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісtool_choice | Түріobject | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісthinking.type | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісthinking.budget_tokens | Түріinteger | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісoutput_config.effort | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісmetadata | Түріobject | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісcache_control | Түріobject | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Кіріс материалдарының үйлесімдері
Мәтін · UTF8 мәтіні
messages[].content немесе type=text блогы
Мәтін + сурет
{type:image,source:{type:base64,media_type,data}} немесе type=url дереккөзі
Әдіс параметрлері мен өмірлік циклі
| Параметр | Параметр талаптары |
|---|---|
Параметрmaterial_types | Параметр талаптарыtext, image |
Параметрrequired | Параметр талаптарыmodel, messages, max_tokens |
Параметрoptional_controls | Параметр талаптарыnull |
Параметрcontent_type | Параметр талаптарыapplication/json |
Параметрtext_file_material | Параметр талаптарынақты UTF-8 мазмұны мәтін ретінде енгізіледі; файл ID мәндері мен URLs үшін бөлек нақты қолдау қажет |
Өмірлік цикл: exact retained published method
Әдіс құрылымдары мен ID мәндері дәл берілген; жеткізушінің мүмкіндігі сұрауды қабылдаудан бөлек қаралады.
Тарифтер
Ailoot әдістерінің мөлшерлемелері
POST /v1/messages- Кіріс
- 0,00015 $ / 1K
- Шығыс
- 0,0005 $ / 1K
- Кэшті оқу
- ≈0,00003 $ / 1K
Ailoot сұрау алдында болжамды соманы резервтейді. Нәтижеден кейін өлшенген пайдалану көлемі бойынша қорытынды төлемді шегереді. Ағындық жауап үшін төлем соңғы пайдалану жазбасы негізінде шегеріледі. Резервтеу мен төлемді есептеу тәртібі →
Анықтамалық тариф мәліметтері
Модельдің анықтамалық кестелері әдіс таңдауын, баға есебін не төлемді өзгертпейді. Қолданыстағы төлемдер таңдалған Ailoot әдісінің мөлшерлемелерімен есептеледі.
Модельдің анықтамалық кестелері
Баптаулар бойынша бағалар
Әр төлемді көрсетілген шарттармен салыстырыңыз. Балама баптаулардың әр жиыны үшін бір мөлшерлемені қолданыңыз.
| Баптау | Мөлшерлемелер кестесі | Контекст токендерінің саны мынадан көп | Контекст токендерінің саны мынадан аспайды, шегі кіреді | Төлем |
|---|---|---|---|---|
| БаптауOpenAI Chat · Токендердің базалық тарифтері | Мөлшерлемелер кестесіНегізгі мөлшерлеме | Контекст токендерінің саны мынадан көп— | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
| БаптауOpenAI Chat · Сұрау ұзындығы бойынша 1-деңгей | Мөлшерлемелер кестесі— | Контекст токендерінің саны мынадан көп0 | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
| БаптауAnthropic Messages · Токендердің базалық тарифтері | Мөлшерлемелер кестесіНегізгі мөлшерлеме | Контекст токендерінің саны мынадан көп— | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
| БаптауAnthropic Messages · Сұрау ұзындығы бойынша 1-деңгей | Мөлшерлемелер кестесі— | Контекст токендерінің саны мынадан көп0 | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
Сұрау мысалдары
Ailoot · Anthropic хабарламалары
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-4.6", "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
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_IMAGE_FILE:?Set your actual PNG JPEG or WebP image}"
export AILOOT_IMAGE_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "glm-4.6", "max_tokens": 1024, "messages": [{"role": "user", "content": [{"type": "text", "text": "Read labels and numbers in this image; flag unreadable text."}]}]}')
import base64
f=Path(os.environ["AILOOT_IMAGE_FILE"])
if not f.is_file():raise SystemExit("Choose an actual PNG JPEG or WebP image")
raw=f.read_bytes()
mime="image/png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "image/jpeg" if raw.startswith(b"\xff\xd8") else "image/webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else None
if not mime:raise SystemExit("Use PNG JPEG or WebP")
b64=base64.b64encode(raw).decode()
p["messages"][0]["content"].append({"type":"image","source":{"type":"base64","media_type":mime,"data":b64}})
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-4.6",
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-4.6",
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-4.6',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")
Нәтижелерді алу және сақтау
Ailoot · Anthropic хабарламалары
json немесе SSE
Барлық дайын нәтижені сақтау
Қайтарылған әр толық жауапты, файлды және мазмұн бөлігін сақтаңыз.
Барлық мазмұн блоктарын, пайымдау қолтаңбаларын және құрал қолданудың нақты ID мәндерін сақтаңыз. SSE блоктарының барлық өзгерістерін жинаңыз; алғашқы мәтіндік блок толық шығыс емес.
Бастапқы жауапты тексеру қажет болса
Сұрау мен жауаптың ID мәндерін және тақырыптарын сақтаңыз. Мәтіндік тапсырманы алуға арналған ортақ URL берілмеген.
Жауап өрістері
| Өріс | Түрі |
|---|---|
Өрісid | Түріstring |
Өрісmodel | Түріstring |
Өрісcontent[] | Түріtext|thinking|tool_use|other content block |
Өрісstop_reason | Түріstring|null |
Өрісusage | Түріobject |
Қателер және келесі қадамдар
| Жауап | Шарт | Келесі қадам |
|---|---|---|
Жауап400 · invalid_request_error | ШартМіндетті өрістер, материалды ұсыну тәсілі немесе параметр мәні қате | Келесі қадамЖаңадан жасау сұрауын жібермес бұрын көрсетілген өрістерді түзетіңіз. |
Балама атаулар
Модельдердің балама атаулары
Ailoot glm-5.3-flash, glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5-turbo, glm-flash, glm-flash-latest, z-ai/glm-5.3-flash
Ailoot Ultra glm-5.3-flash, z-ai/glm-5.3-flash, ~z-ai/glm-flash-latest
Әдіс жолдарының балама атаулары
/chat/completions
Шақыруға арналған байланысты ID
z-ai/glm-5.3-flash, z-ai/glm-5.3-flash, glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5-turbo, glm-flash, glm-flash-latest, ~z-ai/glm-flash-latest, glm-5.3-flash, glm-5.3-flash
Ailoot · OpenAI Responses POST /v1/responses glm-4.6
glm-4.6glm-5.3-flashglm-4.5glm-4.5-airglm-4.6glm-4.7glm-5-turboglm-flashglm-flash-latest
Бастау
GLM 5.3 Flash — визуалды әзірлеуге, құжат талдауға және мәтіндік нәтиже беретін агенттік жұмысқа арналған Z.ai мультимодальды моделі.
- Қабылданатын кіріс деректері
- Мәтін · Суреттер
- Нәтижелер
- Мәтін
Ailoot жүйесінде қолжетімді · кіріс деректері мен әдістер
Ailoot · OpenAI Responses POST /v1/responses
- Кіріс
text,image- Шығыс
text- Контекст
- 1 000 000 tokens
- Ең үлкен шығыс
- 131 072 tokens
- Шығыс пішімі
- json немесе SSE
| Өріс | Түрі | Талап | Мәндер мен шектеулер | Әдепкі |
|---|---|---|---|---|
Өрісmodel | Түріstring | ТалапМіндетті | Мәндер мен шектеулер glm-4.6 | Әдепкі— |
Өрісinput | Түріstring|input_item[] | ТалапМіндетті | Мәндер мен шектеулер | Әдепкі— |
Өрісinstructions | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісinput[].type | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер message, reasoning, function_call, function_call_output | Әдепкі— |
Өрісinput[].content | Түріstring|content_part[] | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісinput[].call_id | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Мына жағдайда қолданылады: function_call_output; нақты қайтарылған call_id мәнін сақтаңыз | Әдепкі— |
Өрісinput[].output | Түріstring|content_part[] | ТалапМіндетті емес | Мәндер мен шектеулер Мына жағдайда қолданылады: function_call_output | Әдепкі— |
Өрісmax_output_tokens | Түріinteger | ТалапМіндетті емес | Мәндер мен шектеулер Ең азы: 1 Модельге байланысты | Әдепкі— |
Өрісstream | Түріboolean | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкіfalse |
Өрісtemperature | Түріnumber | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtop_p | Түріnumber | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtools | Түріtool[] | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtool_choice | Түріstring|object | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісparallel_tool_calls | Түріboolean | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісreasoning.effort | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісreasoning.summary | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtext.format | Түріobject | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtext.verbosity | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісinclude | Түріstring[] | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісstore | Түріboolean | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісprevious_response_id | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер ID талабы: Қолдау көрсетілетін жалғастырудан алынған нақты жауап ID-і ғана Модельге байланысты | Әдепкі— |
Өрісservice_tier | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісprompt_cache_key | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісprompt_cache_options | Түріobject | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Кіріс материалдарының үйлесімдері
Мәтін · UTF8 мәтіні
кіріс мәтіні немесе input_text бөлігі
Мәтін + сурет
{type:input_image,image_url}
Әдіс параметрлері мен өмірлік циклі
| Параметр | Параметр талаптары |
|---|---|
Параметрmaterial_types | Параметр талаптарыtext, image |
Параметрrequired | Параметр талаптарыmodel, input |
Параметрoptional_controls | Параметр талаптарыnull |
Параметрcontent_type | Параметр талаптарыapplication/json |
Параметрtext_file_material | Параметр талаптарынақты UTF-8 мазмұны мәтін ретінде енгізіледі; файл ID мәндері мен URLs үшін бөлек нақты қолдау қажет |
Өмірлік цикл: exact retained published method
Әдіс құрылымдары мен ID мәндері дәл берілген; жеткізушінің мүмкіндігі сұрауды қабылдаудан бөлек қаралады.
Тарифтер
Ailoot әдістерінің мөлшерлемелері
POST /v1/responses- Кіріс
- 0,00015 $ / 1K
- Шығыс
- 0,0005 $ / 1K
- Кэшті оқу
- ≈0,00003 $ / 1K
Ailoot сұрау алдында болжамды соманы резервтейді. Нәтижеден кейін өлшенген пайдалану көлемі бойынша қорытынды төлемді шегереді. Ағындық жауап үшін төлем соңғы пайдалану жазбасы негізінде шегеріледі. Резервтеу мен төлемді есептеу тәртібі →
Анықтамалық тариф мәліметтері
Модельдің анықтамалық кестелері әдіс таңдауын, баға есебін не төлемді өзгертпейді. Қолданыстағы төлемдер таңдалған Ailoot әдісінің мөлшерлемелерімен есептеледі.
Модельдің анықтамалық кестелері
Баптаулар бойынша бағалар
Әр төлемді көрсетілген шарттармен салыстырыңыз. Балама баптаулардың әр жиыны үшін бір мөлшерлемені қолданыңыз.
| Баптау | Мөлшерлемелер кестесі | Контекст токендерінің саны мынадан көп | Контекст токендерінің саны мынадан аспайды, шегі кіреді | Төлем |
|---|---|---|---|---|
| БаптауOpenAI Chat · Токендердің базалық тарифтері | Мөлшерлемелер кестесіНегізгі мөлшерлеме | Контекст токендерінің саны мынадан көп— | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
| БаптауOpenAI Chat · Сұрау ұзындығы бойынша 1-деңгей | Мөлшерлемелер кестесі— | Контекст токендерінің саны мынадан көп0 | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
| БаптауAnthropic Messages · Токендердің базалық тарифтері | Мөлшерлемелер кестесіНегізгі мөлшерлеме | Контекст токендерінің саны мынадан көп— | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
| БаптауAnthropic Messages · Сұрау ұзындығы бойынша 1-деңгей | Мөлшерлемелер кестесі— | Контекст токендерінің саны мынадан көп0 | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
Сұрау мысалдары
Ailoot · OpenAI Responses
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-4.6", "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
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_IMAGE_FILE:?Set your actual PNG JPEG or WebP image}"
export AILOOT_IMAGE_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "glm-4.6", "input": [{"role": "user", "content": [{"type": "input_text", "text": "Read labels and numbers in this image; flag unreadable text."}]}]}')
import base64
f=Path(os.environ["AILOOT_IMAGE_FILE"])
if not f.is_file():raise SystemExit("Choose an actual PNG JPEG or WebP image")
raw=f.read_bytes()
mime="image/png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "image/jpeg" if raw.startswith(b"\xff\xd8") else "image/webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else None
if not mime:raise SystemExit("Use PNG JPEG or WebP")
b64=base64.b64encode(raw).decode()
p["input"][0]["content"].append({"type":"input_image","image_url":"data:"+mime+";base64,"+b64})
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-4.6", 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-4.6", 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-4.6", 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")
Нәтижелерді алу және сақтау
Ailoot · OpenAI Responses
json немесе SSE
Барлық дайын нәтижені сақтау
Қайтарылған әр толық жауапты, файлды және мазмұн бөлігін сақтаңыз.
Әр шығыс элементін және мазмұн бөлігін, функцияның нақты call_id мәнін, шифрланған пайымдауды және пайдалану деректерін сақтаңыз. Ағында оқиғалар мен элементтердің барлық сәйкестендіру деректерін сақтаңыз.
Бастапқы жауапты тексеру қажет болса
Сұрау мен жауаптың ID мәндерін және тақырыптарын сақтаңыз. Мәтіндік тапсырманы алуға арналған ортақ URL берілмеген.
Жауап өрістері
| Өріс | Түрі |
|---|---|
Өрісid | Түріstring |
Өрісstatus | Түріstring |
Өрісoutput[] | Түріmessage|reasoning|function_call|other item |
Өрісoutput[].content[] | Түріcontent part |
Өрісusage | Түріobject |
Қателер және келесі қадамдар
| Жауап | Шарт | Келесі қадам |
|---|---|---|
Жауап400 · invalid_request_error | ШартМіндетті өрістер, материалды ұсыну тәсілі немесе параметр мәні қате | Келесі қадамЖаңадан жасау сұрауын жібермес бұрын көрсетілген өрістерді түзетіңіз. |
Балама атаулар
Модельдердің балама атаулары
Ailoot glm-5.3-flash, glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5-turbo, glm-flash, glm-flash-latest, z-ai/glm-5.3-flash
Ailoot Ultra glm-5.3-flash, z-ai/glm-5.3-flash, ~z-ai/glm-flash-latest
Әдіс жолдарының балама атаулары
/chat/completions
Шақыруға арналған байланысты ID
z-ai/glm-5.3-flash, z-ai/glm-5.3-flash, glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5-turbo, glm-flash, glm-flash-latest, ~z-ai/glm-flash-latest, glm-5.3-flash, glm-5.3-flash
Ailoot · OpenAI чаты POST /v1/chat/completions glm-4.6
glm-4.6glm-5.3-flashglm-4.5glm-4.5-airglm-4.6glm-4.7glm-5-turboglm-flashglm-flash-latestz-ai/glm-5.3-flash
Бастау
GLM 5.3 Flash — визуалды әзірлеуге, құжат талдауға және мәтіндік нәтиже беретін агенттік жұмысқа арналған Z.ai мультимодальды моделі.
- Қабылданатын кіріс деректері
- Мәтін · Суреттер
- Нәтижелер
- Мәтін
Ailoot жүйесінде қолжетімді · кіріс деректері мен әдістер
Ailoot · OpenAI чаты POST /v1/chat/completions
- Кіріс
text,image- Шығыс
text- Контекст
- 1 000 000 tokens
- Ең үлкен шығыс
- 131 072 tokens
- Шығыс пішімі
- json немесе SSE
| Өріс | Түрі | Талап | Мәндер мен шектеулер | Әдепкі |
|---|---|---|---|---|
Өрісmodel | Түріstring | ТалапМіндетті | Мәндер мен шектеулер glm-4.6 | Әдепкі— |
Өрісmessages | Түріmessage[] | ТалапМіндетті | Мәндер мен шектеулер Элементтердің ең аз саны: 1 | Әдепкі— |
Өрісmessages[].role | Түріstring | ТалапМіндетті | Мәндер мен шектеулер Мысалдар: system, user, assistant, tool, function Шарттар: Бұл рөлдер бастапқы кодтағы үйлесімділік түрлерінде айқын көрсетілген; рөлдердің нақты жиыны әр модельге байланысты. Модельге байланысты | Әдепкі— |
Өрісmessages[].content | Түріstring|content_part[]|null | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісmessages[].tool_calls | Түріtool_call[] | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісmessages[].tool_call_id | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Мына жағдайда қолданылады: role=tool; нақты қайтарылған ID мәнін пайдаланыңыз | Әдепкі— |
Өрісmessages[].name | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісmessages[].reasoning_content | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Мына жағдайда қолданылады: Модель пайымдауды пайдаланса, нақты қайтарылған пайымдауды қайта жіберіңіз | Әдепкі— |
Өрісmessages[].reasoning_details | Түріobject|array | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісmax_tokens | Түріinteger | ТалапМіндетті емес | Мәндер мен шектеулер Ең азы: 1 Модельге байланысты | Әдепкі— |
Өрісmax_completion_tokens | Түріinteger | ТалапМіндетті емес | Мәндер мен шектеулер Ең азы: 1 Модельге байланысты | Әдепкі— |
Өрісstream | Түріboolean | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкіfalse |
Өрісstream_options.include_usage | Түріboolean | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtemperature | Түріnumber | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtop_p | Түріnumber | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісstop | Түріstring|string[] | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtools | Түріfunction_tool[] | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtools[].type | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtools[].function.name | Түріstring | ТалапМіндетті | Мәндер мен шектеулер Мына жағдайда қолданылады: функция құралы берілген | Әдепкі— |
Өрісtools[].function.description | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісtools[].function.parameters | ТүріJSON_schema | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісtool_choice | Түріstring|object | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісparallel_tool_calls | Түріboolean | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісresponse_format | Түріobject | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісreasoning_effort | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісreasoning | Түріobject | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісservice_tier | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісinstructions | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Үйлесімділік өрісі | Әдепкі— |
Өрісfunctions | Түріfunction[] | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісfunction_call | Түріstring|object | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісprompt_cache_options | Түріobject | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Кіріс материалдарының үйлесімдері
Мәтін · UTF8 мәтіні
messages[].content
Мәтін + сурет
{type:image_url,image_url:{url,detail}}
Әдіс параметрлері мен өмірлік циклі
| Параметр | Параметр талаптары |
|---|---|
Параметрmaterial_types | Параметр талаптарыtext, image |
Параметрrequired | Параметр талаптарыmodel, messages |
Параметрoptional_controls | Параметр талаптарыnull |
Параметрcontent_type | Параметр талаптарыapplication/json |
Параметрtext_file_material | Параметр талаптарынақты UTF-8 мазмұны мәтін ретінде енгізіледі; файл ID мәндері мен URLs үшін бөлек нақты қолдау қажет |
Өмірлік цикл: exact retained published method
Әдіс құрылымдары мен ID мәндері дәл берілген; жеткізушінің мүмкіндігі сұрауды қабылдаудан бөлек қаралады.
Тарифтер
Ailoot әдістерінің мөлшерлемелері
POST /v1/chat/completions- Кіріс
- 0,00015 $ / 1K
- Шығыс
- 0,0005 $ / 1K
- Кэшті оқу
- ≈0,00003 $ / 1K
Ailoot сұрау алдында болжамды соманы резервтейді. Нәтижеден кейін өлшенген пайдалану көлемі бойынша қорытынды төлемді шегереді. Ағындық жауап үшін төлем соңғы пайдалану жазбасы негізінде шегеріледі. Резервтеу мен төлемді есептеу тәртібі →
Анықтамалық тариф мәліметтері
Модельдің анықтамалық кестелері әдіс таңдауын, баға есебін не төлемді өзгертпейді. Қолданыстағы төлемдер таңдалған Ailoot әдісінің мөлшерлемелерімен есептеледі.
Модельдің анықтамалық кестелері
Баптаулар бойынша бағалар
Әр төлемді көрсетілген шарттармен салыстырыңыз. Балама баптаулардың әр жиыны үшін бір мөлшерлемені қолданыңыз.
| Баптау | Мөлшерлемелер кестесі | Контекст токендерінің саны мынадан көп | Контекст токендерінің саны мынадан аспайды, шегі кіреді | Төлем |
|---|---|---|---|---|
| БаптауOpenAI Chat · Токендердің базалық тарифтері | Мөлшерлемелер кестесіНегізгі мөлшерлеме | Контекст токендерінің саны мынадан көп— | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
| БаптауOpenAI Chat · Сұрау ұзындығы бойынша 1-деңгей | Мөлшерлемелер кестесі— | Контекст токендерінің саны мынадан көп0 | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
| БаптауAnthropic Messages · Токендердің базалық тарифтері | Мөлшерлемелер кестесіНегізгі мөлшерлеме | Контекст токендерінің саны мынадан көп— | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
| БаптауAnthropic Messages · Сұрау ұзындығы бойынша 1-деңгей | Мөлшерлемелер кестесі— | Контекст токендерінің саны мынадан көп0 | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
Сұрау мысалдары
Ailoot · OpenAI чаты
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-4.6", "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
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_IMAGE_FILE:?Set your actual PNG JPEG or WebP image}"
export AILOOT_IMAGE_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "glm-4.6", "messages": [{"role": "user", "content": [{"type": "text", "text": "Read labels and numbers in this image; flag unreadable text."}]}]}')
import base64
f=Path(os.environ["AILOOT_IMAGE_FILE"])
if not f.is_file():raise SystemExit("Choose an actual PNG JPEG or WebP image")
raw=f.read_bytes()
mime="image/png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "image/jpeg" if raw.startswith(b"\xff\xd8") else "image/webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else None
if not mime:raise SystemExit("Use PNG JPEG or WebP")
b64=base64.b64encode(raw).decode()
p["messages"][0]["content"].append({"type":"image_url","image_url":{"url":"data:"+mime+";base64,"+b64}})
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-4.6",
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-4.6",
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-4.6',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")
Нәтижелерді алу және сақтау
Ailoot · OpenAI чаты
json немесе SSE
Барлық дайын нәтижені сақтау
Қайтарылған әр толық жауапты, файлды және мазмұн бөлігін сақтаңыз.
Әр жауап нұсқасын оның мазмұнымен, құрал шақыруларымен және пайымдауымен бірге сақтаңыз. SSE өзгерістерін жауап нұсқасы мен құрал индексі бойынша жинап, соңғы аяқталу себебі мен пайдалану деректерін сақтаңыз.
Бастапқы жауапты тексеру қажет болса
Сұрау мен жауаптың ID мәндерін және тақырыптарын сақтаңыз. Мәтіндік тапсырманы алуға арналған ортақ URL берілмеген.
Жауап өрістері
| Өріс | Түрі |
|---|---|
Өрісchoices[].index | Түріinteger |
Өрісchoices[].message.content | Түріstring|null |
Өрісchoices[].message.tool_calls | Түріtool_call[] |
Өрісchoices[].message.reasoning_content | Түріstring |
Өрісchoices[].message.reasoning_details | Түріobject|array |
Өрісchoices[].finish_reason | Түріstring|null |
Өрісusage | Түріobject |
Қателер және келесі қадамдар
| Жауап | Шарт | Келесі қадам |
|---|---|---|
Жауап400 · invalid_request_error | ШартМіндетті өрістер, материалды ұсыну тәсілі немесе параметр мәні қате | Келесі қадамЖаңадан жасау сұрауын жібермес бұрын көрсетілген өрістерді түзетіңіз. |
Балама атаулар
Модельдердің балама атаулары
Ailoot glm-5.3-flash, glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5-turbo, glm-flash, glm-flash-latest, z-ai/glm-5.3-flash
Ailoot Ultra glm-5.3-flash, z-ai/glm-5.3-flash, ~z-ai/glm-flash-latest
Әдіс жолдарының балама атаулары
/chat/completions
Шақыруға арналған байланысты ID
z-ai/glm-5.3-flash, z-ai/glm-5.3-flash, glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5-turbo, glm-flash, glm-flash-latest, ~z-ai/glm-flash-latest, glm-5.3-flash, glm-5.3-flash
Ailoot · Anthropic хабарламалары POST /v1/messages glm-4.7
glm-4.7glm-5.3-flashglm-4.5glm-4.5-airglm-4.6glm-4.7glm-5-turboglm-flashglm-flash-latestz-ai/glm-5.3-flash
Бастау
GLM 5.3 Flash — визуалды әзірлеуге, құжат талдауға және мәтіндік нәтиже беретін агенттік жұмысқа арналған Z.ai мультимодальды моделі.
- Қабылданатын кіріс деректері
- Мәтін
- Нәтижелер
- Мәтін
Ailoot жүйесінде қолжетімді · кіріс деректері мен әдістер
Ailoot · Anthropic хабарламалары POST /v1/messages
- Кіріс
text- Шығыс
text- Контекст
- 1 000 000 tokens
- Ең үлкен шығыс
- 131 072 tokens
- Шығыс пішімі
- json немесе SSE
| Өріс | Түрі | Талап | Мәндер мен шектеулер | Әдепкі |
|---|---|---|---|---|
Өрісmodel | Түріstring | ТалапМіндетті | Мәндер мен шектеулер glm-4.7 | Әдепкі— |
Өрісmessages | Түріmessage[] | ТалапМіндетті | Мәндер мен шектеулер Элементтердің ең аз саны: 1 | Әдепкі— |
Өрісmessages[].role | Түріstring | ТалапМіндетті | Мәндер мен шектеулер user, assistant | Әдепкі— |
Өрісmessages[].content | Түріstring|content_block[] | ТалапМіндетті | Мәндер мен шектеулер | Әдепкі— |
Өрісsystem | Түріstring|content_block[] | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісmax_tokens | Түріinteger | ТалапМіндетті | Мәндер мен шектеулер Ең азы: 1 Шектеу қолданылатын нысан: таңдалған модельдің/карточканың нақты жоғарғы шегі | Әдепкі— |
Өрісstream | Түріboolean | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкіfalse |
Өрісtemperature | Түріnumber | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtop_p | Түріnumber | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісstop_sequences | Түріstring[] | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtools | Түріtool[] | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtools[].name | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Мына жағдайда қолданылады: құрал берілген | Әдепкі— |
Өрісtools[].description | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісtools[].input_schema | ТүріJSON_schema | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісtool_choice | Түріobject | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісthinking.type | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісthinking.budget_tokens | Түріinteger | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісoutput_config.effort | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісmetadata | Түріobject | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісcache_control | Түріobject | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Кіріс материалдарының үйлесімдері
Мәтін · UTF8 мәтіні
messages[].content немесе type=text блогы
Әдіс параметрлері мен өмірлік циклі
| Параметр | Параметр талаптары |
|---|---|
Параметрmaterial_types | Параметр талаптарыtext |
Параметрrequired | Параметр талаптарыmodel, messages, max_tokens |
Параметрoptional_controls | Параметр талаптарыnull |
Параметрcontent_type | Параметр талаптарыapplication/json |
Параметрtext_file_material | Параметр талаптарынақты UTF-8 мазмұны мәтін ретінде енгізіледі; файл ID мәндері мен URLs үшін бөлек нақты қолдау қажет |
Өмірлік цикл: exact retained published method
Әдіс құрылымдары мен ID мәндері дәл берілген; жеткізушінің мүмкіндігі сұрауды қабылдаудан бөлек қаралады.
Тарифтер
Ailoot әдістерінің мөлшерлемелері
POST /v1/messages- Кіріс
- 0,00015 $ / 1K
- Шығыс
- 0,0005 $ / 1K
- Кэшті оқу
- ≈0,00003 $ / 1K
Ailoot сұрау алдында болжамды соманы резервтейді. Нәтижеден кейін өлшенген пайдалану көлемі бойынша қорытынды төлемді шегереді. Ағындық жауап үшін төлем соңғы пайдалану жазбасы негізінде шегеріледі. Резервтеу мен төлемді есептеу тәртібі →
Анықтамалық тариф мәліметтері
Модельдің анықтамалық кестелері әдіс таңдауын, баға есебін не төлемді өзгертпейді. Қолданыстағы төлемдер таңдалған Ailoot әдісінің мөлшерлемелерімен есептеледі.
Модельдің анықтамалық кестелері
Баптаулар бойынша бағалар
Әр төлемді көрсетілген шарттармен салыстырыңыз. Балама баптаулардың әр жиыны үшін бір мөлшерлемені қолданыңыз.
| Баптау | Мөлшерлемелер кестесі | Контекст токендерінің саны мынадан көп | Контекст токендерінің саны мынадан аспайды, шегі кіреді | Төлем |
|---|---|---|---|---|
| БаптауOpenAI Chat · Токендердің базалық тарифтері | Мөлшерлемелер кестесіНегізгі мөлшерлеме | Контекст токендерінің саны мынадан көп— | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
| БаптауOpenAI Chat · Сұрау ұзындығы бойынша 1-деңгей | Мөлшерлемелер кестесі— | Контекст токендерінің саны мынадан көп0 | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
| БаптауAnthropic Messages · Токендердің базалық тарифтері | Мөлшерлемелер кестесіНегізгі мөлшерлеме | Контекст токендерінің саны мынадан көп— | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
| БаптауAnthropic Messages · Сұрау ұзындығы бойынша 1-деңгей | Мөлшерлемелер кестесі— | Контекст токендерінің саны мынадан көп0 | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
Сұрау мысалдары
Ailoot · Anthropic хабарламалары
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-4.7", "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-4.7",
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-4.7",
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-4.7',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")
Нәтижелерді алу және сақтау
Ailoot · Anthropic хабарламалары
json немесе SSE
Барлық дайын нәтижені сақтау
Қайтарылған әр толық жауапты, файлды және мазмұн бөлігін сақтаңыз.
Барлық мазмұн блоктарын, пайымдау қолтаңбаларын және құрал қолданудың нақты ID мәндерін сақтаңыз. SSE блоктарының барлық өзгерістерін жинаңыз; алғашқы мәтіндік блок толық шығыс емес.
Бастапқы жауапты тексеру қажет болса
Сұрау мен жауаптың ID мәндерін және тақырыптарын сақтаңыз. Мәтіндік тапсырманы алуға арналған ортақ URL берілмеген.
Жауап өрістері
| Өріс | Түрі |
|---|---|
Өрісid | Түріstring |
Өрісmodel | Түріstring |
Өрісcontent[] | Түріtext|thinking|tool_use|other content block |
Өрісstop_reason | Түріstring|null |
Өрісusage | Түріobject |
Қателер және келесі қадамдар
| Жауап | Шарт | Келесі қадам |
|---|---|---|
Жауап400 · invalid_request_error | ШартМіндетті өрістер, материалды ұсыну тәсілі немесе параметр мәні қате | Келесі қадамЖаңадан жасау сұрауын жібермес бұрын көрсетілген өрістерді түзетіңіз. |
Балама атаулар
Модельдердің балама атаулары
Ailoot glm-5.3-flash, glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5-turbo, glm-flash, glm-flash-latest, z-ai/glm-5.3-flash
Ailoot Ultra glm-5.3-flash, z-ai/glm-5.3-flash, ~z-ai/glm-flash-latest
Әдіс жолдарының балама атаулары
/chat/completions
Шақыруға арналған байланысты ID
z-ai/glm-5.3-flash, z-ai/glm-5.3-flash, glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5-turbo, glm-flash, glm-flash-latest, ~z-ai/glm-flash-latest, glm-5.3-flash, glm-5.3-flash
Ailoot · OpenAI Responses POST /v1/responses glm-4.7
glm-4.7glm-5.3-flashglm-4.5glm-4.5-airglm-4.6glm-4.7glm-5-turboglm-flashglm-flash-latest
Бастау
GLM 5.3 Flash — визуалды әзірлеуге, құжат талдауға және мәтіндік нәтиже беретін агенттік жұмысқа арналған Z.ai мультимодальды моделі.
- Қабылданатын кіріс деректері
- Мәтін
- Нәтижелер
- Мәтін
Ailoot жүйесінде қолжетімді · кіріс деректері мен әдістер
Ailoot · OpenAI Responses POST /v1/responses
- Кіріс
text- Шығыс
text- Контекст
- 1 000 000 tokens
- Ең үлкен шығыс
- 131 072 tokens
- Шығыс пішімі
- json немесе SSE
| Өріс | Түрі | Талап | Мәндер мен шектеулер | Әдепкі |
|---|---|---|---|---|
Өрісmodel | Түріstring | ТалапМіндетті | Мәндер мен шектеулер glm-4.7 | Әдепкі— |
Өрісinput | Түріstring|input_item[] | ТалапМіндетті | Мәндер мен шектеулер | Әдепкі— |
Өрісinstructions | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісinput[].type | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер message, reasoning, function_call, function_call_output | Әдепкі— |
Өрісinput[].content | Түріstring|content_part[] | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісinput[].call_id | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Мына жағдайда қолданылады: function_call_output; нақты қайтарылған call_id мәнін сақтаңыз | Әдепкі— |
Өрісinput[].output | Түріstring|content_part[] | ТалапМіндетті емес | Мәндер мен шектеулер Мына жағдайда қолданылады: function_call_output | Әдепкі— |
Өрісmax_output_tokens | Түріinteger | ТалапМіндетті емес | Мәндер мен шектеулер Ең азы: 1 Модельге байланысты | Әдепкі— |
Өрісstream | Түріboolean | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкіfalse |
Өрісtemperature | Түріnumber | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtop_p | Түріnumber | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtools | Түріtool[] | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtool_choice | Түріstring|object | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісparallel_tool_calls | Түріboolean | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісreasoning.effort | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісreasoning.summary | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtext.format | Түріobject | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtext.verbosity | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісinclude | Түріstring[] | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісstore | Түріboolean | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісprevious_response_id | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер ID талабы: Қолдау көрсетілетін жалғастырудан алынған нақты жауап ID-і ғана Модельге байланысты | Әдепкі— |
Өрісservice_tier | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісprompt_cache_key | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісprompt_cache_options | Түріobject | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Кіріс материалдарының үйлесімдері
Мәтін · UTF8 мәтіні
кіріс мәтіні немесе input_text бөлігі
Әдіс параметрлері мен өмірлік циклі
| Параметр | Параметр талаптары |
|---|---|
Параметрmaterial_types | Параметр талаптарыtext |
Параметрrequired | Параметр талаптарыmodel, input |
Параметрoptional_controls | Параметр талаптарыnull |
Параметрcontent_type | Параметр талаптарыapplication/json |
Параметрtext_file_material | Параметр талаптарынақты UTF-8 мазмұны мәтін ретінде енгізіледі; файл ID мәндері мен URLs үшін бөлек нақты қолдау қажет |
Өмірлік цикл: exact retained published method
Әдіс құрылымдары мен ID мәндері дәл берілген; жеткізушінің мүмкіндігі сұрауды қабылдаудан бөлек қаралады.
Тарифтер
Ailoot әдістерінің мөлшерлемелері
POST /v1/responses- Кіріс
- 0,00015 $ / 1K
- Шығыс
- 0,0005 $ / 1K
- Кэшті оқу
- ≈0,00003 $ / 1K
Ailoot сұрау алдында болжамды соманы резервтейді. Нәтижеден кейін өлшенген пайдалану көлемі бойынша қорытынды төлемді шегереді. Ағындық жауап үшін төлем соңғы пайдалану жазбасы негізінде шегеріледі. Резервтеу мен төлемді есептеу тәртібі →
Анықтамалық тариф мәліметтері
Модельдің анықтамалық кестелері әдіс таңдауын, баға есебін не төлемді өзгертпейді. Қолданыстағы төлемдер таңдалған Ailoot әдісінің мөлшерлемелерімен есептеледі.
Модельдің анықтамалық кестелері
Баптаулар бойынша бағалар
Әр төлемді көрсетілген шарттармен салыстырыңыз. Балама баптаулардың әр жиыны үшін бір мөлшерлемені қолданыңыз.
| Баптау | Мөлшерлемелер кестесі | Контекст токендерінің саны мынадан көп | Контекст токендерінің саны мынадан аспайды, шегі кіреді | Төлем |
|---|---|---|---|---|
| БаптауOpenAI Chat · Токендердің базалық тарифтері | Мөлшерлемелер кестесіНегізгі мөлшерлеме | Контекст токендерінің саны мынадан көп— | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
| БаптауOpenAI Chat · Сұрау ұзындығы бойынша 1-деңгей | Мөлшерлемелер кестесі— | Контекст токендерінің саны мынадан көп0 | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
| БаптауAnthropic Messages · Токендердің базалық тарифтері | Мөлшерлемелер кестесіНегізгі мөлшерлеме | Контекст токендерінің саны мынадан көп— | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
| БаптауAnthropic Messages · Сұрау ұзындығы бойынша 1-деңгей | Мөлшерлемелер кестесі— | Контекст токендерінің саны мынадан көп0 | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
Сұрау мысалдары
Ailoot · OpenAI Responses
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-4.7", "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-4.7", 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-4.7", 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-4.7", 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")
Нәтижелерді алу және сақтау
Ailoot · OpenAI Responses
json немесе SSE
Барлық дайын нәтижені сақтау
Қайтарылған әр толық жауапты, файлды және мазмұн бөлігін сақтаңыз.
Әр шығыс элементін және мазмұн бөлігін, функцияның нақты call_id мәнін, шифрланған пайымдауды және пайдалану деректерін сақтаңыз. Ағында оқиғалар мен элементтердің барлық сәйкестендіру деректерін сақтаңыз.
Бастапқы жауапты тексеру қажет болса
Сұрау мен жауаптың ID мәндерін және тақырыптарын сақтаңыз. Мәтіндік тапсырманы алуға арналған ортақ URL берілмеген.
Жауап өрістері
| Өріс | Түрі |
|---|---|
Өрісid | Түріstring |
Өрісstatus | Түріstring |
Өрісoutput[] | Түріmessage|reasoning|function_call|other item |
Өрісoutput[].content[] | Түріcontent part |
Өрісusage | Түріobject |
Қателер және келесі қадамдар
| Жауап | Шарт | Келесі қадам |
|---|---|---|
Жауап400 · invalid_request_error | ШартМіндетті өрістер, материалды ұсыну тәсілі немесе параметр мәні қате | Келесі қадамЖаңадан жасау сұрауын жібермес бұрын көрсетілген өрістерді түзетіңіз. |
Балама атаулар
Модельдердің балама атаулары
Ailoot glm-5.3-flash, glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5-turbo, glm-flash, glm-flash-latest, z-ai/glm-5.3-flash
Ailoot Ultra glm-5.3-flash, z-ai/glm-5.3-flash, ~z-ai/glm-flash-latest
Әдіс жолдарының балама атаулары
/chat/completions
Шақыруға арналған байланысты ID
z-ai/glm-5.3-flash, z-ai/glm-5.3-flash, glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5-turbo, glm-flash, glm-flash-latest, ~z-ai/glm-flash-latest, glm-5.3-flash, glm-5.3-flash
Ailoot · OpenAI чаты POST /v1/chat/completions glm-4.7
glm-4.7glm-5.3-flashglm-4.5glm-4.5-airglm-4.6glm-4.7glm-5-turboglm-flashglm-flash-latestz-ai/glm-5.3-flash
Бастау
GLM 5.3 Flash — визуалды әзірлеуге, құжат талдауға және мәтіндік нәтиже беретін агенттік жұмысқа арналған Z.ai мультимодальды моделі.
- Қабылданатын кіріс деректері
- Мәтін
- Нәтижелер
- Мәтін
Ailoot жүйесінде қолжетімді · кіріс деректері мен әдістер
Ailoot · OpenAI чаты POST /v1/chat/completions
- Кіріс
text- Шығыс
text- Контекст
- 1 000 000 tokens
- Ең үлкен шығыс
- 131 072 tokens
- Шығыс пішімі
- json немесе SSE
| Өріс | Түрі | Талап | Мәндер мен шектеулер | Әдепкі |
|---|---|---|---|---|
Өрісmodel | Түріstring | ТалапМіндетті | Мәндер мен шектеулер glm-4.7 | Әдепкі— |
Өрісmessages | Түріmessage[] | ТалапМіндетті | Мәндер мен шектеулер Элементтердің ең аз саны: 1 | Әдепкі— |
Өрісmessages[].role | Түріstring | ТалапМіндетті | Мәндер мен шектеулер Мысалдар: system, user, assistant, tool, function Шарттар: Бұл рөлдер бастапқы кодтағы үйлесімділік түрлерінде айқын көрсетілген; рөлдердің нақты жиыны әр модельге байланысты. Модельге байланысты | Әдепкі— |
Өрісmessages[].content | Түріstring|content_part[]|null | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісmessages[].tool_calls | Түріtool_call[] | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісmessages[].tool_call_id | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Мына жағдайда қолданылады: role=tool; нақты қайтарылған ID мәнін пайдаланыңыз | Әдепкі— |
Өрісmessages[].name | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісmessages[].reasoning_content | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Мына жағдайда қолданылады: Модель пайымдауды пайдаланса, нақты қайтарылған пайымдауды қайта жіберіңіз | Әдепкі— |
Өрісmessages[].reasoning_details | Түріobject|array | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісmax_tokens | Түріinteger | ТалапМіндетті емес | Мәндер мен шектеулер Ең азы: 1 Модельге байланысты | Әдепкі— |
Өрісmax_completion_tokens | Түріinteger | ТалапМіндетті емес | Мәндер мен шектеулер Ең азы: 1 Модельге байланысты | Әдепкі— |
Өрісstream | Түріboolean | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкіfalse |
Өрісstream_options.include_usage | Түріboolean | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtemperature | Түріnumber | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtop_p | Түріnumber | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісstop | Түріstring|string[] | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtools | Түріfunction_tool[] | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtools[].type | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtools[].function.name | Түріstring | ТалапМіндетті | Мәндер мен шектеулер Мына жағдайда қолданылады: функция құралы берілген | Әдепкі— |
Өрісtools[].function.description | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісtools[].function.parameters | ТүріJSON_schema | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісtool_choice | Түріstring|object | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісparallel_tool_calls | Түріboolean | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісresponse_format | Түріobject | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісreasoning_effort | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісreasoning | Түріobject | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісservice_tier | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісinstructions | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Үйлесімділік өрісі | Әдепкі— |
Өрісfunctions | Түріfunction[] | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісfunction_call | Түріstring|object | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісprompt_cache_options | Түріobject | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Кіріс материалдарының үйлесімдері
Мәтін · UTF8 мәтіні
messages[].content
Әдіс параметрлері мен өмірлік циклі
| Параметр | Параметр талаптары |
|---|---|
Параметрmaterial_types | Параметр талаптарыtext |
Параметрrequired | Параметр талаптарыmodel, messages |
Параметрoptional_controls | Параметр талаптарыnull |
Параметрcontent_type | Параметр талаптарыapplication/json |
Параметрtext_file_material | Параметр талаптарынақты UTF-8 мазмұны мәтін ретінде енгізіледі; файл ID мәндері мен URLs үшін бөлек нақты қолдау қажет |
Өмірлік цикл: exact retained published method
Әдіс құрылымдары мен ID мәндері дәл берілген; жеткізушінің мүмкіндігі сұрауды қабылдаудан бөлек қаралады.
Тарифтер
Ailoot әдістерінің мөлшерлемелері
POST /v1/chat/completions- Кіріс
- 0,00015 $ / 1K
- Шығыс
- 0,0005 $ / 1K
- Кэшті оқу
- ≈0,00003 $ / 1K
Ailoot сұрау алдында болжамды соманы резервтейді. Нәтижеден кейін өлшенген пайдалану көлемі бойынша қорытынды төлемді шегереді. Ағындық жауап үшін төлем соңғы пайдалану жазбасы негізінде шегеріледі. Резервтеу мен төлемді есептеу тәртібі →
Анықтамалық тариф мәліметтері
Модельдің анықтамалық кестелері әдіс таңдауын, баға есебін не төлемді өзгертпейді. Қолданыстағы төлемдер таңдалған Ailoot әдісінің мөлшерлемелерімен есептеледі.
Модельдің анықтамалық кестелері
Баптаулар бойынша бағалар
Әр төлемді көрсетілген шарттармен салыстырыңыз. Балама баптаулардың әр жиыны үшін бір мөлшерлемені қолданыңыз.
| Баптау | Мөлшерлемелер кестесі | Контекст токендерінің саны мынадан көп | Контекст токендерінің саны мынадан аспайды, шегі кіреді | Төлем |
|---|---|---|---|---|
| БаптауOpenAI Chat · Токендердің базалық тарифтері | Мөлшерлемелер кестесіНегізгі мөлшерлеме | Контекст токендерінің саны мынадан көп— | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
| БаптауOpenAI Chat · Сұрау ұзындығы бойынша 1-деңгей | Мөлшерлемелер кестесі— | Контекст токендерінің саны мынадан көп0 | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
| БаптауAnthropic Messages · Токендердің базалық тарифтері | Мөлшерлемелер кестесіНегізгі мөлшерлеме | Контекст токендерінің саны мынадан көп— | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
| БаптауAnthropic Messages · Сұрау ұзындығы бойынша 1-деңгей | Мөлшерлемелер кестесі— | Контекст токендерінің саны мынадан көп0 | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
Сұрау мысалдары
Ailoot · OpenAI чаты
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-4.7", "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-4.7",
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-4.7",
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-4.7',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")
Нәтижелерді алу және сақтау
Ailoot · OpenAI чаты
json немесе SSE
Барлық дайын нәтижені сақтау
Қайтарылған әр толық жауапты, файлды және мазмұн бөлігін сақтаңыз.
Әр жауап нұсқасын оның мазмұнымен, құрал шақыруларымен және пайымдауымен бірге сақтаңыз. SSE өзгерістерін жауап нұсқасы мен құрал индексі бойынша жинап, соңғы аяқталу себебі мен пайдалану деректерін сақтаңыз.
Бастапқы жауапты тексеру қажет болса
Сұрау мен жауаптың ID мәндерін және тақырыптарын сақтаңыз. Мәтіндік тапсырманы алуға арналған ортақ URL берілмеген.
Жауап өрістері
| Өріс | Түрі |
|---|---|
Өрісchoices[].index | Түріinteger |
Өрісchoices[].message.content | Түріstring|null |
Өрісchoices[].message.tool_calls | Түріtool_call[] |
Өрісchoices[].message.reasoning_content | Түріstring |
Өрісchoices[].message.reasoning_details | Түріobject|array |
Өрісchoices[].finish_reason | Түріstring|null |
Өрісusage | Түріobject |
Қателер және келесі қадамдар
| Жауап | Шарт | Келесі қадам |
|---|---|---|
Жауап400 · invalid_request_error | ШартМіндетті өрістер, материалды ұсыну тәсілі немесе параметр мәні қате | Келесі қадамЖаңадан жасау сұрауын жібермес бұрын көрсетілген өрістерді түзетіңіз. |
Балама атаулар
Модельдердің балама атаулары
Ailoot glm-5.3-flash, glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5-turbo, glm-flash, glm-flash-latest, z-ai/glm-5.3-flash
Ailoot Ultra glm-5.3-flash, z-ai/glm-5.3-flash, ~z-ai/glm-flash-latest
Әдіс жолдарының балама атаулары
/chat/completions
Шақыруға арналған байланысты ID
z-ai/glm-5.3-flash, z-ai/glm-5.3-flash, glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5-turbo, glm-flash, glm-flash-latest, ~z-ai/glm-flash-latest, glm-5.3-flash, glm-5.3-flash
Ailoot · Anthropic хабарламалары POST /v1/messages glm-5-turbo
glm-5-turboglm-5.3-flashglm-4.5glm-4.5-airglm-4.6glm-4.7glm-5-turboglm-flashglm-flash-latestz-ai/glm-5.3-flash
Бастау
GLM 5.3 Flash — визуалды әзірлеуге, құжат талдауға және мәтіндік нәтиже беретін агенттік жұмысқа арналған Z.ai мультимодальды моделі.
- Қабылданатын кіріс деректері
- Мәтін · Суреттер
- Нәтижелер
- Мәтін
Ailoot жүйесінде қолжетімді · кіріс деректері мен әдістер
Ailoot · Anthropic хабарламалары POST /v1/messages
- Кіріс
text,image- Шығыс
text- Контекст
- 1 000 000 tokens
- Ең үлкен шығыс
- 131 072 tokens
- Шығыс пішімі
- json немесе SSE
| Өріс | Түрі | Талап | Мәндер мен шектеулер | Әдепкі |
|---|---|---|---|---|
Өрісmodel | Түріstring | ТалапМіндетті | Мәндер мен шектеулер glm-5-turbo | Әдепкі— |
Өрісmessages | Түріmessage[] | ТалапМіндетті | Мәндер мен шектеулер Элементтердің ең аз саны: 1 | Әдепкі— |
Өрісmessages[].role | Түріstring | ТалапМіндетті | Мәндер мен шектеулер user, assistant | Әдепкі— |
Өрісmessages[].content | Түріstring|content_block[] | ТалапМіндетті | Мәндер мен шектеулер | Әдепкі— |
Өрісsystem | Түріstring|content_block[] | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісmax_tokens | Түріinteger | ТалапМіндетті | Мәндер мен шектеулер Ең азы: 1 Шектеу қолданылатын нысан: таңдалған модельдің/карточканың нақты жоғарғы шегі | Әдепкі— |
Өрісstream | Түріboolean | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкіfalse |
Өрісtemperature | Түріnumber | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtop_p | Түріnumber | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісstop_sequences | Түріstring[] | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtools | Түріtool[] | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtools[].name | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Мына жағдайда қолданылады: құрал берілген | Әдепкі— |
Өрісtools[].description | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісtools[].input_schema | ТүріJSON_schema | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісtool_choice | Түріobject | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісthinking.type | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісthinking.budget_tokens | Түріinteger | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісoutput_config.effort | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісmetadata | Түріobject | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісcache_control | Түріobject | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Кіріс материалдарының үйлесімдері
Мәтін · UTF8 мәтіні
messages[].content немесе type=text блогы
Мәтін + сурет
{type:image,source:{type:base64,media_type,data}} немесе type=url дереккөзі
Әдіс параметрлері мен өмірлік циклі
| Параметр | Параметр талаптары |
|---|---|
Параметрmaterial_types | Параметр талаптарыtext, image |
Параметрrequired | Параметр талаптарыmodel, messages, max_tokens |
Параметрoptional_controls | Параметр талаптарыnull |
Параметрcontent_type | Параметр талаптарыapplication/json |
Параметрtext_file_material | Параметр талаптарынақты UTF-8 мазмұны мәтін ретінде енгізіледі; файл ID мәндері мен URLs үшін бөлек нақты қолдау қажет |
Өмірлік цикл: exact retained published method
Әдіс құрылымдары мен ID мәндері дәл берілген; жеткізушінің мүмкіндігі сұрауды қабылдаудан бөлек қаралады.
Тарифтер
Ailoot әдістерінің мөлшерлемелері
POST /v1/messages- Кіріс
- 0,00015 $ / 1K
- Шығыс
- 0,0005 $ / 1K
- Кэшті оқу
- ≈0,00003 $ / 1K
Ailoot сұрау алдында болжамды соманы резервтейді. Нәтижеден кейін өлшенген пайдалану көлемі бойынша қорытынды төлемді шегереді. Ағындық жауап үшін төлем соңғы пайдалану жазбасы негізінде шегеріледі. Резервтеу мен төлемді есептеу тәртібі →
Анықтамалық тариф мәліметтері
Модельдің анықтамалық кестелері әдіс таңдауын, баға есебін не төлемді өзгертпейді. Қолданыстағы төлемдер таңдалған Ailoot әдісінің мөлшерлемелерімен есептеледі.
Модельдің анықтамалық кестелері
Баптаулар бойынша бағалар
Әр төлемді көрсетілген шарттармен салыстырыңыз. Балама баптаулардың әр жиыны үшін бір мөлшерлемені қолданыңыз.
| Баптау | Мөлшерлемелер кестесі | Контекст токендерінің саны мынадан көп | Контекст токендерінің саны мынадан аспайды, шегі кіреді | Төлем |
|---|---|---|---|---|
| БаптауOpenAI Chat · Токендердің базалық тарифтері | Мөлшерлемелер кестесіНегізгі мөлшерлеме | Контекст токендерінің саны мынадан көп— | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
| БаптауOpenAI Chat · Сұрау ұзындығы бойынша 1-деңгей | Мөлшерлемелер кестесі— | Контекст токендерінің саны мынадан көп0 | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
| БаптауAnthropic Messages · Токендердің базалық тарифтері | Мөлшерлемелер кестесіНегізгі мөлшерлеме | Контекст токендерінің саны мынадан көп— | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
| БаптауAnthropic Messages · Сұрау ұзындығы бойынша 1-деңгей | Мөлшерлемелер кестесі— | Контекст токендерінің саны мынадан көп0 | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
Сұрау мысалдары
Ailoot · Anthropic хабарламалары
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-turbo", "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
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_IMAGE_FILE:?Set your actual PNG JPEG or WebP image}"
export AILOOT_IMAGE_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "glm-5-turbo", "max_tokens": 1024, "messages": [{"role": "user", "content": [{"type": "text", "text": "Read labels and numbers in this image; flag unreadable text."}]}]}')
import base64
f=Path(os.environ["AILOOT_IMAGE_FILE"])
if not f.is_file():raise SystemExit("Choose an actual PNG JPEG or WebP image")
raw=f.read_bytes()
mime="image/png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "image/jpeg" if raw.startswith(b"\xff\xd8") else "image/webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else None
if not mime:raise SystemExit("Use PNG JPEG or WebP")
b64=base64.b64encode(raw).decode()
p["messages"][0]["content"].append({"type":"image","source":{"type":"base64","media_type":mime,"data":b64}})
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-turbo",
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-turbo",
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-turbo',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")
Нәтижелерді алу және сақтау
Ailoot · Anthropic хабарламалары
json немесе SSE
Барлық дайын нәтижені сақтау
Қайтарылған әр толық жауапты, файлды және мазмұн бөлігін сақтаңыз.
Барлық мазмұн блоктарын, пайымдау қолтаңбаларын және құрал қолданудың нақты ID мәндерін сақтаңыз. SSE блоктарының барлық өзгерістерін жинаңыз; алғашқы мәтіндік блок толық шығыс емес.
Бастапқы жауапты тексеру қажет болса
Сұрау мен жауаптың ID мәндерін және тақырыптарын сақтаңыз. Мәтіндік тапсырманы алуға арналған ортақ URL берілмеген.
Жауап өрістері
| Өріс | Түрі |
|---|---|
Өрісid | Түріstring |
Өрісmodel | Түріstring |
Өрісcontent[] | Түріtext|thinking|tool_use|other content block |
Өрісstop_reason | Түріstring|null |
Өрісusage | Түріobject |
Қателер және келесі қадамдар
| Жауап | Шарт | Келесі қадам |
|---|---|---|
Жауап400 · invalid_request_error | ШартМіндетті өрістер, материалды ұсыну тәсілі немесе параметр мәні қате | Келесі қадамЖаңадан жасау сұрауын жібермес бұрын көрсетілген өрістерді түзетіңіз. |
Балама атаулар
Модельдердің балама атаулары
Ailoot glm-5.3-flash, glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5-turbo, glm-flash, glm-flash-latest, z-ai/glm-5.3-flash
Ailoot Ultra glm-5.3-flash, z-ai/glm-5.3-flash, ~z-ai/glm-flash-latest
Әдіс жолдарының балама атаулары
/chat/completions
Шақыруға арналған байланысты ID
z-ai/glm-5.3-flash, z-ai/glm-5.3-flash, glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5-turbo, glm-flash, glm-flash-latest, ~z-ai/glm-flash-latest, glm-5.3-flash, glm-5.3-flash
Ailoot · OpenAI Responses POST /v1/responses glm-5-turbo
glm-5-turboglm-5.3-flashglm-4.5glm-4.5-airglm-4.6glm-4.7glm-5-turboglm-flashglm-flash-latest
Бастау
GLM 5.3 Flash — визуалды әзірлеуге, құжат талдауға және мәтіндік нәтиже беретін агенттік жұмысқа арналған Z.ai мультимодальды моделі.
- Қабылданатын кіріс деректері
- Мәтін · Суреттер
- Нәтижелер
- Мәтін
Ailoot жүйесінде қолжетімді · кіріс деректері мен әдістер
Ailoot · OpenAI Responses POST /v1/responses
- Кіріс
text,image- Шығыс
text- Контекст
- 1 000 000 tokens
- Ең үлкен шығыс
- 131 072 tokens
- Шығыс пішімі
- json немесе SSE
| Өріс | Түрі | Талап | Мәндер мен шектеулер | Әдепкі |
|---|---|---|---|---|
Өрісmodel | Түріstring | ТалапМіндетті | Мәндер мен шектеулер glm-5-turbo | Әдепкі— |
Өрісinput | Түріstring|input_item[] | ТалапМіндетті | Мәндер мен шектеулер | Әдепкі— |
Өрісinstructions | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісinput[].type | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер message, reasoning, function_call, function_call_output | Әдепкі— |
Өрісinput[].content | Түріstring|content_part[] | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісinput[].call_id | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Мына жағдайда қолданылады: function_call_output; нақты қайтарылған call_id мәнін сақтаңыз | Әдепкі— |
Өрісinput[].output | Түріstring|content_part[] | ТалапМіндетті емес | Мәндер мен шектеулер Мына жағдайда қолданылады: function_call_output | Әдепкі— |
Өрісmax_output_tokens | Түріinteger | ТалапМіндетті емес | Мәндер мен шектеулер Ең азы: 1 Модельге байланысты | Әдепкі— |
Өрісstream | Түріboolean | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкіfalse |
Өрісtemperature | Түріnumber | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtop_p | Түріnumber | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtools | Түріtool[] | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtool_choice | Түріstring|object | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісparallel_tool_calls | Түріboolean | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісreasoning.effort | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісreasoning.summary | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtext.format | Түріobject | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtext.verbosity | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісinclude | Түріstring[] | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісstore | Түріboolean | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісprevious_response_id | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер ID талабы: Қолдау көрсетілетін жалғастырудан алынған нақты жауап ID-і ғана Модельге байланысты | Әдепкі— |
Өрісservice_tier | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісprompt_cache_key | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісprompt_cache_options | Түріobject | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Кіріс материалдарының үйлесімдері
Мәтін · UTF8 мәтіні
кіріс мәтіні немесе input_text бөлігі
Мәтін + сурет
{type:input_image,image_url}
Әдіс параметрлері мен өмірлік циклі
| Параметр | Параметр талаптары |
|---|---|
Параметрmaterial_types | Параметр талаптарыtext, image |
Параметрrequired | Параметр талаптарыmodel, input |
Параметрoptional_controls | Параметр талаптарыnull |
Параметрcontent_type | Параметр талаптарыapplication/json |
Параметрtext_file_material | Параметр талаптарынақты UTF-8 мазмұны мәтін ретінде енгізіледі; файл ID мәндері мен URLs үшін бөлек нақты қолдау қажет |
Өмірлік цикл: exact retained published method
Әдіс құрылымдары мен ID мәндері дәл берілген; жеткізушінің мүмкіндігі сұрауды қабылдаудан бөлек қаралады.
Тарифтер
Ailoot әдістерінің мөлшерлемелері
POST /v1/responses- Кіріс
- 0,00015 $ / 1K
- Шығыс
- 0,0005 $ / 1K
- Кэшті оқу
- ≈0,00003 $ / 1K
Ailoot сұрау алдында болжамды соманы резервтейді. Нәтижеден кейін өлшенген пайдалану көлемі бойынша қорытынды төлемді шегереді. Ағындық жауап үшін төлем соңғы пайдалану жазбасы негізінде шегеріледі. Резервтеу мен төлемді есептеу тәртібі →
Анықтамалық тариф мәліметтері
Модельдің анықтамалық кестелері әдіс таңдауын, баға есебін не төлемді өзгертпейді. Қолданыстағы төлемдер таңдалған Ailoot әдісінің мөлшерлемелерімен есептеледі.
Модельдің анықтамалық кестелері
Баптаулар бойынша бағалар
Әр төлемді көрсетілген шарттармен салыстырыңыз. Балама баптаулардың әр жиыны үшін бір мөлшерлемені қолданыңыз.
| Баптау | Мөлшерлемелер кестесі | Контекст токендерінің саны мынадан көп | Контекст токендерінің саны мынадан аспайды, шегі кіреді | Төлем |
|---|---|---|---|---|
| БаптауOpenAI Chat · Токендердің базалық тарифтері | Мөлшерлемелер кестесіНегізгі мөлшерлеме | Контекст токендерінің саны мынадан көп— | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
| БаптауOpenAI Chat · Сұрау ұзындығы бойынша 1-деңгей | Мөлшерлемелер кестесі— | Контекст токендерінің саны мынадан көп0 | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
| БаптауAnthropic Messages · Токендердің базалық тарифтері | Мөлшерлемелер кестесіНегізгі мөлшерлеме | Контекст токендерінің саны мынадан көп— | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
| БаптауAnthropic Messages · Сұрау ұзындығы бойынша 1-деңгей | Мөлшерлемелер кестесі— | Контекст токендерінің саны мынадан көп0 | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
Сұрау мысалдары
Ailoot · OpenAI Responses
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-turbo", "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
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_IMAGE_FILE:?Set your actual PNG JPEG or WebP image}"
export AILOOT_IMAGE_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "glm-5-turbo", "input": [{"role": "user", "content": [{"type": "input_text", "text": "Read labels and numbers in this image; flag unreadable text."}]}]}')
import base64
f=Path(os.environ["AILOOT_IMAGE_FILE"])
if not f.is_file():raise SystemExit("Choose an actual PNG JPEG or WebP image")
raw=f.read_bytes()
mime="image/png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "image/jpeg" if raw.startswith(b"\xff\xd8") else "image/webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else None
if not mime:raise SystemExit("Use PNG JPEG or WebP")
b64=base64.b64encode(raw).decode()
p["input"][0]["content"].append({"type":"input_image","image_url":"data:"+mime+";base64,"+b64})
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-turbo", 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-turbo", 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-turbo", 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")
Нәтижелерді алу және сақтау
Ailoot · OpenAI Responses
json немесе SSE
Барлық дайын нәтижені сақтау
Қайтарылған әр толық жауапты, файлды және мазмұн бөлігін сақтаңыз.
Әр шығыс элементін және мазмұн бөлігін, функцияның нақты call_id мәнін, шифрланған пайымдауды және пайдалану деректерін сақтаңыз. Ағында оқиғалар мен элементтердің барлық сәйкестендіру деректерін сақтаңыз.
Бастапқы жауапты тексеру қажет болса
Сұрау мен жауаптың ID мәндерін және тақырыптарын сақтаңыз. Мәтіндік тапсырманы алуға арналған ортақ URL берілмеген.
Жауап өрістері
| Өріс | Түрі |
|---|---|
Өрісid | Түріstring |
Өрісstatus | Түріstring |
Өрісoutput[] | Түріmessage|reasoning|function_call|other item |
Өрісoutput[].content[] | Түріcontent part |
Өрісusage | Түріobject |
Қателер және келесі қадамдар
| Жауап | Шарт | Келесі қадам |
|---|---|---|
Жауап400 · invalid_request_error | ШартМіндетті өрістер, материалды ұсыну тәсілі немесе параметр мәні қате | Келесі қадамЖаңадан жасау сұрауын жібермес бұрын көрсетілген өрістерді түзетіңіз. |
Балама атаулар
Модельдердің балама атаулары
Ailoot glm-5.3-flash, glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5-turbo, glm-flash, glm-flash-latest, z-ai/glm-5.3-flash
Ailoot Ultra glm-5.3-flash, z-ai/glm-5.3-flash, ~z-ai/glm-flash-latest
Әдіс жолдарының балама атаулары
/chat/completions
Шақыруға арналған байланысты ID
z-ai/glm-5.3-flash, z-ai/glm-5.3-flash, glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5-turbo, glm-flash, glm-flash-latest, ~z-ai/glm-flash-latest, glm-5.3-flash, glm-5.3-flash
Ailoot · OpenAI чаты POST /v1/chat/completions glm-5-turbo
glm-5-turboglm-5.3-flashglm-4.5glm-4.5-airglm-4.6glm-4.7glm-5-turboglm-flashglm-flash-latestz-ai/glm-5.3-flash
Бастау
GLM 5.3 Flash — визуалды әзірлеуге, құжат талдауға және мәтіндік нәтиже беретін агенттік жұмысқа арналған Z.ai мультимодальды моделі.
- Қабылданатын кіріс деректері
- Мәтін · Суреттер
- Нәтижелер
- Мәтін
Ailoot жүйесінде қолжетімді · кіріс деректері мен әдістер
Ailoot · OpenAI чаты POST /v1/chat/completions
- Кіріс
text,image- Шығыс
text- Контекст
- 1 000 000 tokens
- Ең үлкен шығыс
- 131 072 tokens
- Шығыс пішімі
- json немесе SSE
| Өріс | Түрі | Талап | Мәндер мен шектеулер | Әдепкі |
|---|---|---|---|---|
Өрісmodel | Түріstring | ТалапМіндетті | Мәндер мен шектеулер glm-5-turbo | Әдепкі— |
Өрісmessages | Түріmessage[] | ТалапМіндетті | Мәндер мен шектеулер Элементтердің ең аз саны: 1 | Әдепкі— |
Өрісmessages[].role | Түріstring | ТалапМіндетті | Мәндер мен шектеулер Мысалдар: system, user, assistant, tool, function Шарттар: Бұл рөлдер бастапқы кодтағы үйлесімділік түрлерінде айқын көрсетілген; рөлдердің нақты жиыны әр модельге байланысты. Модельге байланысты | Әдепкі— |
Өрісmessages[].content | Түріstring|content_part[]|null | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісmessages[].tool_calls | Түріtool_call[] | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісmessages[].tool_call_id | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Мына жағдайда қолданылады: role=tool; нақты қайтарылған ID мәнін пайдаланыңыз | Әдепкі— |
Өрісmessages[].name | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісmessages[].reasoning_content | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Мына жағдайда қолданылады: Модель пайымдауды пайдаланса, нақты қайтарылған пайымдауды қайта жіберіңіз | Әдепкі— |
Өрісmessages[].reasoning_details | Түріobject|array | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісmax_tokens | Түріinteger | ТалапМіндетті емес | Мәндер мен шектеулер Ең азы: 1 Модельге байланысты | Әдепкі— |
Өрісmax_completion_tokens | Түріinteger | ТалапМіндетті емес | Мәндер мен шектеулер Ең азы: 1 Модельге байланысты | Әдепкі— |
Өрісstream | Түріboolean | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкіfalse |
Өрісstream_options.include_usage | Түріboolean | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtemperature | Түріnumber | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtop_p | Түріnumber | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісstop | Түріstring|string[] | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtools | Түріfunction_tool[] | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtools[].type | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtools[].function.name | Түріstring | ТалапМіндетті | Мәндер мен шектеулер Мына жағдайда қолданылады: функция құралы берілген | Әдепкі— |
Өрісtools[].function.description | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісtools[].function.parameters | ТүріJSON_schema | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісtool_choice | Түріstring|object | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісparallel_tool_calls | Түріboolean | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісresponse_format | Түріobject | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісreasoning_effort | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісreasoning | Түріobject | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісservice_tier | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісinstructions | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Үйлесімділік өрісі | Әдепкі— |
Өрісfunctions | Түріfunction[] | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісfunction_call | Түріstring|object | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісprompt_cache_options | Түріobject | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Кіріс материалдарының үйлесімдері
Мәтін · UTF8 мәтіні
messages[].content
Мәтін + сурет
{type:image_url,image_url:{url,detail}}
Әдіс параметрлері мен өмірлік циклі
| Параметр | Параметр талаптары |
|---|---|
Параметрmaterial_types | Параметр талаптарыtext, image |
Параметрrequired | Параметр талаптарыmodel, messages |
Параметрoptional_controls | Параметр талаптарыnull |
Параметрcontent_type | Параметр талаптарыapplication/json |
Параметрtext_file_material | Параметр талаптарынақты UTF-8 мазмұны мәтін ретінде енгізіледі; файл ID мәндері мен URLs үшін бөлек нақты қолдау қажет |
Өмірлік цикл: exact retained published method
Әдіс құрылымдары мен ID мәндері дәл берілген; жеткізушінің мүмкіндігі сұрауды қабылдаудан бөлек қаралады.
Тарифтер
Ailoot әдістерінің мөлшерлемелері
POST /v1/chat/completions- Кіріс
- 0,00015 $ / 1K
- Шығыс
- 0,0005 $ / 1K
- Кэшті оқу
- ≈0,00003 $ / 1K
Ailoot сұрау алдында болжамды соманы резервтейді. Нәтижеден кейін өлшенген пайдалану көлемі бойынша қорытынды төлемді шегереді. Ағындық жауап үшін төлем соңғы пайдалану жазбасы негізінде шегеріледі. Резервтеу мен төлемді есептеу тәртібі →
Анықтамалық тариф мәліметтері
Модельдің анықтамалық кестелері әдіс таңдауын, баға есебін не төлемді өзгертпейді. Қолданыстағы төлемдер таңдалған Ailoot әдісінің мөлшерлемелерімен есептеледі.
Модельдің анықтамалық кестелері
Баптаулар бойынша бағалар
Әр төлемді көрсетілген шарттармен салыстырыңыз. Балама баптаулардың әр жиыны үшін бір мөлшерлемені қолданыңыз.
| Баптау | Мөлшерлемелер кестесі | Контекст токендерінің саны мынадан көп | Контекст токендерінің саны мынадан аспайды, шегі кіреді | Төлем |
|---|---|---|---|---|
| БаптауOpenAI Chat · Токендердің базалық тарифтері | Мөлшерлемелер кестесіНегізгі мөлшерлеме | Контекст токендерінің саны мынадан көп— | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
| БаптауOpenAI Chat · Сұрау ұзындығы бойынша 1-деңгей | Мөлшерлемелер кестесі— | Контекст токендерінің саны мынадан көп0 | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
| БаптауAnthropic Messages · Токендердің базалық тарифтері | Мөлшерлемелер кестесіНегізгі мөлшерлеме | Контекст токендерінің саны мынадан көп— | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
| БаптауAnthropic Messages · Сұрау ұзындығы бойынша 1-деңгей | Мөлшерлемелер кестесі— | Контекст токендерінің саны мынадан көп0 | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
Сұрау мысалдары
Ailoot · OpenAI чаты
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-turbo", "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
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_IMAGE_FILE:?Set your actual PNG JPEG or WebP image}"
export AILOOT_IMAGE_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "glm-5-turbo", "messages": [{"role": "user", "content": [{"type": "text", "text": "Read labels and numbers in this image; flag unreadable text."}]}]}')
import base64
f=Path(os.environ["AILOOT_IMAGE_FILE"])
if not f.is_file():raise SystemExit("Choose an actual PNG JPEG or WebP image")
raw=f.read_bytes()
mime="image/png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "image/jpeg" if raw.startswith(b"\xff\xd8") else "image/webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else None
if not mime:raise SystemExit("Use PNG JPEG or WebP")
b64=base64.b64encode(raw).decode()
p["messages"][0]["content"].append({"type":"image_url","image_url":{"url":"data:"+mime+";base64,"+b64}})
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-turbo",
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-turbo",
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-turbo',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")
Нәтижелерді алу және сақтау
Ailoot · OpenAI чаты
json немесе SSE
Барлық дайын нәтижені сақтау
Қайтарылған әр толық жауапты, файлды және мазмұн бөлігін сақтаңыз.
Әр жауап нұсқасын оның мазмұнымен, құрал шақыруларымен және пайымдауымен бірге сақтаңыз. SSE өзгерістерін жауап нұсқасы мен құрал индексі бойынша жинап, соңғы аяқталу себебі мен пайдалану деректерін сақтаңыз.
Бастапқы жауапты тексеру қажет болса
Сұрау мен жауаптың ID мәндерін және тақырыптарын сақтаңыз. Мәтіндік тапсырманы алуға арналған ортақ URL берілмеген.
Жауап өрістері
| Өріс | Түрі |
|---|---|
Өрісchoices[].index | Түріinteger |
Өрісchoices[].message.content | Түріstring|null |
Өрісchoices[].message.tool_calls | Түріtool_call[] |
Өрісchoices[].message.reasoning_content | Түріstring |
Өрісchoices[].message.reasoning_details | Түріobject|array |
Өрісchoices[].finish_reason | Түріstring|null |
Өрісusage | Түріobject |
Қателер және келесі қадамдар
| Жауап | Шарт | Келесі қадам |
|---|---|---|
Жауап400 · invalid_request_error | ШартМіндетті өрістер, материалды ұсыну тәсілі немесе параметр мәні қате | Келесі қадамЖаңадан жасау сұрауын жібермес бұрын көрсетілген өрістерді түзетіңіз. |
Балама атаулар
Модельдердің балама атаулары
Ailoot glm-5.3-flash, glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5-turbo, glm-flash, glm-flash-latest, z-ai/glm-5.3-flash
Ailoot Ultra glm-5.3-flash, z-ai/glm-5.3-flash, ~z-ai/glm-flash-latest
Әдіс жолдарының балама атаулары
/chat/completions
Шақыруға арналған байланысты ID
z-ai/glm-5.3-flash, z-ai/glm-5.3-flash, glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5-turbo, glm-flash, glm-flash-latest, ~z-ai/glm-flash-latest, glm-5.3-flash, glm-5.3-flash
Ailoot · Anthropic хабарламалары POST /v1/messages glm-flash
glm-flashglm-5.3-flashglm-4.5glm-4.5-airglm-4.6glm-4.7glm-5-turboglm-flashglm-flash-latestz-ai/glm-5.3-flash
Бастау
GLM 5.3 Flash — визуалды әзірлеуге, құжат талдауға және мәтіндік нәтиже беретін агенттік жұмысқа арналған Z.ai мультимодальды моделі.
- Қабылданатын кіріс деректері
- Мәтін · Суреттер
- Нәтижелер
- Мәтін
Ailoot жүйесінде қолжетімді · кіріс деректері мен әдістер
Ailoot · Anthropic хабарламалары POST /v1/messages
- Кіріс
text,image- Шығыс
text- Контекст
- 1 000 000 tokens
- Ең үлкен шығыс
- 131 072 tokens
- Шығыс пішімі
- json немесе SSE
| Өріс | Түрі | Талап | Мәндер мен шектеулер | Әдепкі |
|---|---|---|---|---|
Өрісmodel | Түріstring | ТалапМіндетті | Мәндер мен шектеулер glm-flash | Әдепкі— |
Өрісmessages | Түріmessage[] | ТалапМіндетті | Мәндер мен шектеулер Элементтердің ең аз саны: 1 | Әдепкі— |
Өрісmessages[].role | Түріstring | ТалапМіндетті | Мәндер мен шектеулер user, assistant | Әдепкі— |
Өрісmessages[].content | Түріstring|content_block[] | ТалапМіндетті | Мәндер мен шектеулер | Әдепкі— |
Өрісsystem | Түріstring|content_block[] | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісmax_tokens | Түріinteger | ТалапМіндетті | Мәндер мен шектеулер Ең азы: 1 Шектеу қолданылатын нысан: таңдалған модельдің/карточканың нақты жоғарғы шегі | Әдепкі— |
Өрісstream | Түріboolean | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкіfalse |
Өрісtemperature | Түріnumber | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtop_p | Түріnumber | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісstop_sequences | Түріstring[] | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtools | Түріtool[] | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtools[].name | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Мына жағдайда қолданылады: құрал берілген | Әдепкі— |
Өрісtools[].description | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісtools[].input_schema | ТүріJSON_schema | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісtool_choice | Түріobject | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісthinking.type | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісthinking.budget_tokens | Түріinteger | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісoutput_config.effort | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісmetadata | Түріobject | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісcache_control | Түріobject | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Кіріс материалдарының үйлесімдері
Мәтін · UTF8 мәтіні
messages[].content немесе type=text блогы
Мәтін + сурет
{type:image,source:{type:base64,media_type,data}} немесе type=url дереккөзі
Әдіс параметрлері мен өмірлік циклі
| Параметр | Параметр талаптары |
|---|---|
Параметрmaterial_types | Параметр талаптарыtext, image |
Параметрrequired | Параметр талаптарыmodel, messages, max_tokens |
Параметрoptional_controls | Параметр талаптарыnull |
Параметрcontent_type | Параметр талаптарыapplication/json |
Параметрtext_file_material | Параметр талаптарынақты UTF-8 мазмұны мәтін ретінде енгізіледі; файл ID мәндері мен URLs үшін бөлек нақты қолдау қажет |
Өмірлік цикл: exact retained published method
Әдіс құрылымдары мен ID мәндері дәл берілген; жеткізушінің мүмкіндігі сұрауды қабылдаудан бөлек қаралады.
Тарифтер
Ailoot әдістерінің мөлшерлемелері
POST /v1/messages- Кіріс
- 0,00015 $ / 1K
- Шығыс
- 0,0005 $ / 1K
- Кэшті оқу
- ≈0,00003 $ / 1K
Ailoot сұрау алдында болжамды соманы резервтейді. Нәтижеден кейін өлшенген пайдалану көлемі бойынша қорытынды төлемді шегереді. Ағындық жауап үшін төлем соңғы пайдалану жазбасы негізінде шегеріледі. Резервтеу мен төлемді есептеу тәртібі →
Анықтамалық тариф мәліметтері
Модельдің анықтамалық кестелері әдіс таңдауын, баға есебін не төлемді өзгертпейді. Қолданыстағы төлемдер таңдалған Ailoot әдісінің мөлшерлемелерімен есептеледі.
Модельдің анықтамалық кестелері
Баптаулар бойынша бағалар
Әр төлемді көрсетілген шарттармен салыстырыңыз. Балама баптаулардың әр жиыны үшін бір мөлшерлемені қолданыңыз.
| Баптау | Мөлшерлемелер кестесі | Контекст токендерінің саны мынадан көп | Контекст токендерінің саны мынадан аспайды, шегі кіреді | Төлем |
|---|---|---|---|---|
| БаптауOpenAI Chat · Токендердің базалық тарифтері | Мөлшерлемелер кестесіНегізгі мөлшерлеме | Контекст токендерінің саны мынадан көп— | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
| БаптауOpenAI Chat · Сұрау ұзындығы бойынша 1-деңгей | Мөлшерлемелер кестесі— | Контекст токендерінің саны мынадан көп0 | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
| БаптауAnthropic Messages · Токендердің базалық тарифтері | Мөлшерлемелер кестесіНегізгі мөлшерлеме | Контекст токендерінің саны мынадан көп— | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
| БаптауAnthropic Messages · Сұрау ұзындығы бойынша 1-деңгей | Мөлшерлемелер кестесі— | Контекст токендерінің саны мынадан көп0 | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
Сұрау мысалдары
Ailoot · Anthropic хабарламалары
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-flash", "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
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_IMAGE_FILE:?Set your actual PNG JPEG or WebP image}"
export AILOOT_IMAGE_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "glm-flash", "max_tokens": 1024, "messages": [{"role": "user", "content": [{"type": "text", "text": "Read labels and numbers in this image; flag unreadable text."}]}]}')
import base64
f=Path(os.environ["AILOOT_IMAGE_FILE"])
if not f.is_file():raise SystemExit("Choose an actual PNG JPEG or WebP image")
raw=f.read_bytes()
mime="image/png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "image/jpeg" if raw.startswith(b"\xff\xd8") else "image/webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else None
if not mime:raise SystemExit("Use PNG JPEG or WebP")
b64=base64.b64encode(raw).decode()
p["messages"][0]["content"].append({"type":"image","source":{"type":"base64","media_type":mime,"data":b64}})
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-flash",
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-flash",
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-flash',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")
Нәтижелерді алу және сақтау
Ailoot · Anthropic хабарламалары
json немесе SSE
Барлық дайын нәтижені сақтау
Қайтарылған әр толық жауапты, файлды және мазмұн бөлігін сақтаңыз.
Барлық мазмұн блоктарын, пайымдау қолтаңбаларын және құрал қолданудың нақты ID мәндерін сақтаңыз. SSE блоктарының барлық өзгерістерін жинаңыз; алғашқы мәтіндік блок толық шығыс емес.
Бастапқы жауапты тексеру қажет болса
Сұрау мен жауаптың ID мәндерін және тақырыптарын сақтаңыз. Мәтіндік тапсырманы алуға арналған ортақ URL берілмеген.
Жауап өрістері
| Өріс | Түрі |
|---|---|
Өрісid | Түріstring |
Өрісmodel | Түріstring |
Өрісcontent[] | Түріtext|thinking|tool_use|other content block |
Өрісstop_reason | Түріstring|null |
Өрісusage | Түріobject |
Қателер және келесі қадамдар
| Жауап | Шарт | Келесі қадам |
|---|---|---|
Жауап400 · invalid_request_error | ШартМіндетті өрістер, материалды ұсыну тәсілі немесе параметр мәні қате | Келесі қадамЖаңадан жасау сұрауын жібермес бұрын көрсетілген өрістерді түзетіңіз. |
Балама атаулар
Модельдердің балама атаулары
Ailoot glm-5.3-flash, glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5-turbo, glm-flash, glm-flash-latest, z-ai/glm-5.3-flash
Ailoot Ultra glm-5.3-flash, z-ai/glm-5.3-flash, ~z-ai/glm-flash-latest
Әдіс жолдарының балама атаулары
/chat/completions
Шақыруға арналған байланысты ID
z-ai/glm-5.3-flash, z-ai/glm-5.3-flash, glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5-turbo, glm-flash, glm-flash-latest, ~z-ai/glm-flash-latest, glm-5.3-flash, glm-5.3-flash
Ailoot · OpenAI Responses POST /v1/responses glm-flash
glm-flashglm-5.3-flashglm-4.5glm-4.5-airglm-4.6glm-4.7glm-5-turboglm-flashglm-flash-latest
Бастау
GLM 5.3 Flash — визуалды әзірлеуге, құжат талдауға және мәтіндік нәтиже беретін агенттік жұмысқа арналған Z.ai мультимодальды моделі.
- Қабылданатын кіріс деректері
- Мәтін · Суреттер
- Нәтижелер
- Мәтін
Ailoot жүйесінде қолжетімді · кіріс деректері мен әдістер
Ailoot · OpenAI Responses POST /v1/responses
- Кіріс
text,image- Шығыс
text- Контекст
- 1 000 000 tokens
- Ең үлкен шығыс
- 131 072 tokens
- Шығыс пішімі
- json немесе SSE
| Өріс | Түрі | Талап | Мәндер мен шектеулер | Әдепкі |
|---|---|---|---|---|
Өрісmodel | Түріstring | ТалапМіндетті | Мәндер мен шектеулер glm-flash | Әдепкі— |
Өрісinput | Түріstring|input_item[] | ТалапМіндетті | Мәндер мен шектеулер | Әдепкі— |
Өрісinstructions | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісinput[].type | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер message, reasoning, function_call, function_call_output | Әдепкі— |
Өрісinput[].content | Түріstring|content_part[] | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісinput[].call_id | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Мына жағдайда қолданылады: function_call_output; нақты қайтарылған call_id мәнін сақтаңыз | Әдепкі— |
Өрісinput[].output | Түріstring|content_part[] | ТалапМіндетті емес | Мәндер мен шектеулер Мына жағдайда қолданылады: function_call_output | Әдепкі— |
Өрісmax_output_tokens | Түріinteger | ТалапМіндетті емес | Мәндер мен шектеулер Ең азы: 1 Модельге байланысты | Әдепкі— |
Өрісstream | Түріboolean | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкіfalse |
Өрісtemperature | Түріnumber | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtop_p | Түріnumber | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtools | Түріtool[] | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtool_choice | Түріstring|object | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісparallel_tool_calls | Түріboolean | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісreasoning.effort | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісreasoning.summary | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtext.format | Түріobject | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtext.verbosity | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісinclude | Түріstring[] | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісstore | Түріboolean | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісprevious_response_id | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер ID талабы: Қолдау көрсетілетін жалғастырудан алынған нақты жауап ID-і ғана Модельге байланысты | Әдепкі— |
Өрісservice_tier | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісprompt_cache_key | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісprompt_cache_options | Түріobject | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Кіріс материалдарының үйлесімдері
Мәтін · UTF8 мәтіні
кіріс мәтіні немесе input_text бөлігі
Мәтін + сурет
{type:input_image,image_url}
Әдіс параметрлері мен өмірлік циклі
| Параметр | Параметр талаптары |
|---|---|
Параметрmaterial_types | Параметр талаптарыtext, image |
Параметрrequired | Параметр талаптарыmodel, input |
Параметрoptional_controls | Параметр талаптарыnull |
Параметрcontent_type | Параметр талаптарыapplication/json |
Параметрtext_file_material | Параметр талаптарынақты UTF-8 мазмұны мәтін ретінде енгізіледі; файл ID мәндері мен URLs үшін бөлек нақты қолдау қажет |
Өмірлік цикл: exact retained published method
Әдіс құрылымдары мен ID мәндері дәл берілген; жеткізушінің мүмкіндігі сұрауды қабылдаудан бөлек қаралады.
Тарифтер
Ailoot әдістерінің мөлшерлемелері
POST /v1/responses- Кіріс
- 0,00015 $ / 1K
- Шығыс
- 0,0005 $ / 1K
- Кэшті оқу
- ≈0,00003 $ / 1K
Ailoot сұрау алдында болжамды соманы резервтейді. Нәтижеден кейін өлшенген пайдалану көлемі бойынша қорытынды төлемді шегереді. Ағындық жауап үшін төлем соңғы пайдалану жазбасы негізінде шегеріледі. Резервтеу мен төлемді есептеу тәртібі →
Анықтамалық тариф мәліметтері
Модельдің анықтамалық кестелері әдіс таңдауын, баға есебін не төлемді өзгертпейді. Қолданыстағы төлемдер таңдалған Ailoot әдісінің мөлшерлемелерімен есептеледі.
Модельдің анықтамалық кестелері
Баптаулар бойынша бағалар
Әр төлемді көрсетілген шарттармен салыстырыңыз. Балама баптаулардың әр жиыны үшін бір мөлшерлемені қолданыңыз.
| Баптау | Мөлшерлемелер кестесі | Контекст токендерінің саны мынадан көп | Контекст токендерінің саны мынадан аспайды, шегі кіреді | Төлем |
|---|---|---|---|---|
| БаптауOpenAI Chat · Токендердің базалық тарифтері | Мөлшерлемелер кестесіНегізгі мөлшерлеме | Контекст токендерінің саны мынадан көп— | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
| БаптауOpenAI Chat · Сұрау ұзындығы бойынша 1-деңгей | Мөлшерлемелер кестесі— | Контекст токендерінің саны мынадан көп0 | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
| БаптауAnthropic Messages · Токендердің базалық тарифтері | Мөлшерлемелер кестесіНегізгі мөлшерлеме | Контекст токендерінің саны мынадан көп— | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
| БаптауAnthropic Messages · Сұрау ұзындығы бойынша 1-деңгей | Мөлшерлемелер кестесі— | Контекст токендерінің саны мынадан көп0 | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
Сұрау мысалдары
Ailoot · OpenAI Responses
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-flash", "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
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_IMAGE_FILE:?Set your actual PNG JPEG or WebP image}"
export AILOOT_IMAGE_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "glm-flash", "input": [{"role": "user", "content": [{"type": "input_text", "text": "Read labels and numbers in this image; flag unreadable text."}]}]}')
import base64
f=Path(os.environ["AILOOT_IMAGE_FILE"])
if not f.is_file():raise SystemExit("Choose an actual PNG JPEG or WebP image")
raw=f.read_bytes()
mime="image/png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "image/jpeg" if raw.startswith(b"\xff\xd8") else "image/webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else None
if not mime:raise SystemExit("Use PNG JPEG or WebP")
b64=base64.b64encode(raw).decode()
p["input"][0]["content"].append({"type":"input_image","image_url":"data:"+mime+";base64,"+b64})
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-flash", 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-flash", 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-flash", 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")
Нәтижелерді алу және сақтау
Ailoot · OpenAI Responses
json немесе SSE
Барлық дайын нәтижені сақтау
Қайтарылған әр толық жауапты, файлды және мазмұн бөлігін сақтаңыз.
Әр шығыс элементін және мазмұн бөлігін, функцияның нақты call_id мәнін, шифрланған пайымдауды және пайдалану деректерін сақтаңыз. Ағында оқиғалар мен элементтердің барлық сәйкестендіру деректерін сақтаңыз.
Бастапқы жауапты тексеру қажет болса
Сұрау мен жауаптың ID мәндерін және тақырыптарын сақтаңыз. Мәтіндік тапсырманы алуға арналған ортақ URL берілмеген.
Жауап өрістері
| Өріс | Түрі |
|---|---|
Өрісid | Түріstring |
Өрісstatus | Түріstring |
Өрісoutput[] | Түріmessage|reasoning|function_call|other item |
Өрісoutput[].content[] | Түріcontent part |
Өрісusage | Түріobject |
Қателер және келесі қадамдар
| Жауап | Шарт | Келесі қадам |
|---|---|---|
Жауап400 · invalid_request_error | ШартМіндетті өрістер, материалды ұсыну тәсілі немесе параметр мәні қате | Келесі қадамЖаңадан жасау сұрауын жібермес бұрын көрсетілген өрістерді түзетіңіз. |
Балама атаулар
Модельдердің балама атаулары
Ailoot glm-5.3-flash, glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5-turbo, glm-flash, glm-flash-latest, z-ai/glm-5.3-flash
Ailoot Ultra glm-5.3-flash, z-ai/glm-5.3-flash, ~z-ai/glm-flash-latest
Әдіс жолдарының балама атаулары
/chat/completions
Шақыруға арналған байланысты ID
z-ai/glm-5.3-flash, z-ai/glm-5.3-flash, glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5-turbo, glm-flash, glm-flash-latest, ~z-ai/glm-flash-latest, glm-5.3-flash, glm-5.3-flash
Ailoot · OpenAI чаты POST /v1/chat/completions glm-flash
glm-flashglm-5.3-flashglm-4.5glm-4.5-airglm-4.6glm-4.7glm-5-turboglm-flashglm-flash-latestz-ai/glm-5.3-flash
Бастау
GLM 5.3 Flash — визуалды әзірлеуге, құжат талдауға және мәтіндік нәтиже беретін агенттік жұмысқа арналған Z.ai мультимодальды моделі.
- Қабылданатын кіріс деректері
- Мәтін · Суреттер
- Нәтижелер
- Мәтін
Ailoot жүйесінде қолжетімді · кіріс деректері мен әдістер
Ailoot · OpenAI чаты POST /v1/chat/completions
- Кіріс
text,image- Шығыс
text- Контекст
- 1 000 000 tokens
- Ең үлкен шығыс
- 131 072 tokens
- Шығыс пішімі
- json немесе SSE
| Өріс | Түрі | Талап | Мәндер мен шектеулер | Әдепкі |
|---|---|---|---|---|
Өрісmodel | Түріstring | ТалапМіндетті | Мәндер мен шектеулер glm-flash | Әдепкі— |
Өрісmessages | Түріmessage[] | ТалапМіндетті | Мәндер мен шектеулер Элементтердің ең аз саны: 1 | Әдепкі— |
Өрісmessages[].role | Түріstring | ТалапМіндетті | Мәндер мен шектеулер Мысалдар: system, user, assistant, tool, function Шарттар: Бұл рөлдер бастапқы кодтағы үйлесімділік түрлерінде айқын көрсетілген; рөлдердің нақты жиыны әр модельге байланысты. Модельге байланысты | Әдепкі— |
Өрісmessages[].content | Түріstring|content_part[]|null | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісmessages[].tool_calls | Түріtool_call[] | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісmessages[].tool_call_id | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Мына жағдайда қолданылады: role=tool; нақты қайтарылған ID мәнін пайдаланыңыз | Әдепкі— |
Өрісmessages[].name | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісmessages[].reasoning_content | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Мына жағдайда қолданылады: Модель пайымдауды пайдаланса, нақты қайтарылған пайымдауды қайта жіберіңіз | Әдепкі— |
Өрісmessages[].reasoning_details | Түріobject|array | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісmax_tokens | Түріinteger | ТалапМіндетті емес | Мәндер мен шектеулер Ең азы: 1 Модельге байланысты | Әдепкі— |
Өрісmax_completion_tokens | Түріinteger | ТалапМіндетті емес | Мәндер мен шектеулер Ең азы: 1 Модельге байланысты | Әдепкі— |
Өрісstream | Түріboolean | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкіfalse |
Өрісstream_options.include_usage | Түріboolean | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtemperature | Түріnumber | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtop_p | Түріnumber | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісstop | Түріstring|string[] | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtools | Түріfunction_tool[] | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtools[].type | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtools[].function.name | Түріstring | ТалапМіндетті | Мәндер мен шектеулер Мына жағдайда қолданылады: функция құралы берілген | Әдепкі— |
Өрісtools[].function.description | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісtools[].function.parameters | ТүріJSON_schema | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісtool_choice | Түріstring|object | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісparallel_tool_calls | Түріboolean | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісresponse_format | Түріobject | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісreasoning_effort | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісreasoning | Түріobject | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісservice_tier | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісinstructions | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Үйлесімділік өрісі | Әдепкі— |
Өрісfunctions | Түріfunction[] | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісfunction_call | Түріstring|object | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісprompt_cache_options | Түріobject | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Кіріс материалдарының үйлесімдері
Мәтін · UTF8 мәтіні
messages[].content
Мәтін + сурет
{type:image_url,image_url:{url,detail}}
Әдіс параметрлері мен өмірлік циклі
| Параметр | Параметр талаптары |
|---|---|
Параметрmaterial_types | Параметр талаптарыtext, image |
Параметрrequired | Параметр талаптарыmodel, messages |
Параметрoptional_controls | Параметр талаптарыnull |
Параметрcontent_type | Параметр талаптарыapplication/json |
Параметрtext_file_material | Параметр талаптарынақты UTF-8 мазмұны мәтін ретінде енгізіледі; файл ID мәндері мен URLs үшін бөлек нақты қолдау қажет |
Өмірлік цикл: exact retained published method
Әдіс құрылымдары мен ID мәндері дәл берілген; жеткізушінің мүмкіндігі сұрауды қабылдаудан бөлек қаралады.
Тарифтер
Ailoot әдістерінің мөлшерлемелері
POST /v1/chat/completions- Кіріс
- 0,00015 $ / 1K
- Шығыс
- 0,0005 $ / 1K
- Кэшті оқу
- ≈0,00003 $ / 1K
Ailoot сұрау алдында болжамды соманы резервтейді. Нәтижеден кейін өлшенген пайдалану көлемі бойынша қорытынды төлемді шегереді. Ағындық жауап үшін төлем соңғы пайдалану жазбасы негізінде шегеріледі. Резервтеу мен төлемді есептеу тәртібі →
Анықтамалық тариф мәліметтері
Модельдің анықтамалық кестелері әдіс таңдауын, баға есебін не төлемді өзгертпейді. Қолданыстағы төлемдер таңдалған Ailoot әдісінің мөлшерлемелерімен есептеледі.
Модельдің анықтамалық кестелері
Баптаулар бойынша бағалар
Әр төлемді көрсетілген шарттармен салыстырыңыз. Балама баптаулардың әр жиыны үшін бір мөлшерлемені қолданыңыз.
| Баптау | Мөлшерлемелер кестесі | Контекст токендерінің саны мынадан көп | Контекст токендерінің саны мынадан аспайды, шегі кіреді | Төлем |
|---|---|---|---|---|
| БаптауOpenAI Chat · Токендердің базалық тарифтері | Мөлшерлемелер кестесіНегізгі мөлшерлеме | Контекст токендерінің саны мынадан көп— | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
| БаптауOpenAI Chat · Сұрау ұзындығы бойынша 1-деңгей | Мөлшерлемелер кестесі— | Контекст токендерінің саны мынадан көп0 | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
| БаптауAnthropic Messages · Токендердің базалық тарифтері | Мөлшерлемелер кестесіНегізгі мөлшерлеме | Контекст токендерінің саны мынадан көп— | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
| БаптауAnthropic Messages · Сұрау ұзындығы бойынша 1-деңгей | Мөлшерлемелер кестесі— | Контекст токендерінің саны мынадан көп0 | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
Сұрау мысалдары
Ailoot · OpenAI чаты
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-flash", "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
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_IMAGE_FILE:?Set your actual PNG JPEG or WebP image}"
export AILOOT_IMAGE_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "glm-flash", "messages": [{"role": "user", "content": [{"type": "text", "text": "Read labels and numbers in this image; flag unreadable text."}]}]}')
import base64
f=Path(os.environ["AILOOT_IMAGE_FILE"])
if not f.is_file():raise SystemExit("Choose an actual PNG JPEG or WebP image")
raw=f.read_bytes()
mime="image/png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "image/jpeg" if raw.startswith(b"\xff\xd8") else "image/webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else None
if not mime:raise SystemExit("Use PNG JPEG or WebP")
b64=base64.b64encode(raw).decode()
p["messages"][0]["content"].append({"type":"image_url","image_url":{"url":"data:"+mime+";base64,"+b64}})
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-flash",
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-flash",
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-flash',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")
Нәтижелерді алу және сақтау
Ailoot · OpenAI чаты
json немесе SSE
Барлық дайын нәтижені сақтау
Қайтарылған әр толық жауапты, файлды және мазмұн бөлігін сақтаңыз.
Әр жауап нұсқасын оның мазмұнымен, құрал шақыруларымен және пайымдауымен бірге сақтаңыз. SSE өзгерістерін жауап нұсқасы мен құрал индексі бойынша жинап, соңғы аяқталу себебі мен пайдалану деректерін сақтаңыз.
Бастапқы жауапты тексеру қажет болса
Сұрау мен жауаптың ID мәндерін және тақырыптарын сақтаңыз. Мәтіндік тапсырманы алуға арналған ортақ URL берілмеген.
Жауап өрістері
| Өріс | Түрі |
|---|---|
Өрісchoices[].index | Түріinteger |
Өрісchoices[].message.content | Түріstring|null |
Өрісchoices[].message.tool_calls | Түріtool_call[] |
Өрісchoices[].message.reasoning_content | Түріstring |
Өрісchoices[].message.reasoning_details | Түріobject|array |
Өрісchoices[].finish_reason | Түріstring|null |
Өрісusage | Түріobject |
Қателер және келесі қадамдар
| Жауап | Шарт | Келесі қадам |
|---|---|---|
Жауап400 · invalid_request_error | ШартМіндетті өрістер, материалды ұсыну тәсілі немесе параметр мәні қате | Келесі қадамЖаңадан жасау сұрауын жібермес бұрын көрсетілген өрістерді түзетіңіз. |
Балама атаулар
Модельдердің балама атаулары
Ailoot glm-5.3-flash, glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5-turbo, glm-flash, glm-flash-latest, z-ai/glm-5.3-flash
Ailoot Ultra glm-5.3-flash, z-ai/glm-5.3-flash, ~z-ai/glm-flash-latest
Әдіс жолдарының балама атаулары
/chat/completions
Шақыруға арналған байланысты ID
z-ai/glm-5.3-flash, z-ai/glm-5.3-flash, glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5-turbo, glm-flash, glm-flash-latest, ~z-ai/glm-flash-latest, glm-5.3-flash, glm-5.3-flash
Ailoot · Anthropic хабарламалары POST /v1/messages glm-flash-latest
glm-flash-latestglm-5.3-flashglm-4.5glm-4.5-airglm-4.6glm-4.7glm-5-turboglm-flashglm-flash-latestz-ai/glm-5.3-flash
Бастау
GLM 5.3 Flash — визуалды әзірлеуге, құжат талдауға және мәтіндік нәтиже беретін агенттік жұмысқа арналған Z.ai мультимодальды моделі.
- Қабылданатын кіріс деректері
- Мәтін · Суреттер
- Нәтижелер
- Мәтін
Ailoot жүйесінде қолжетімді · кіріс деректері мен әдістер
Ailoot · Anthropic хабарламалары POST /v1/messages
- Кіріс
text,image- Шығыс
text- Контекст
- 1 000 000 tokens
- Ең үлкен шығыс
- 131 072 tokens
- Шығыс пішімі
- json немесе SSE
| Өріс | Түрі | Талап | Мәндер мен шектеулер | Әдепкі |
|---|---|---|---|---|
Өрісmodel | Түріstring | ТалапМіндетті | Мәндер мен шектеулер glm-flash-latest | Әдепкі— |
Өрісmessages | Түріmessage[] | ТалапМіндетті | Мәндер мен шектеулер Элементтердің ең аз саны: 1 | Әдепкі— |
Өрісmessages[].role | Түріstring | ТалапМіндетті | Мәндер мен шектеулер user, assistant | Әдепкі— |
Өрісmessages[].content | Түріstring|content_block[] | ТалапМіндетті | Мәндер мен шектеулер | Әдепкі— |
Өрісsystem | Түріstring|content_block[] | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісmax_tokens | Түріinteger | ТалапМіндетті | Мәндер мен шектеулер Ең азы: 1 Шектеу қолданылатын нысан: таңдалған модельдің/карточканың нақты жоғарғы шегі | Әдепкі— |
Өрісstream | Түріboolean | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкіfalse |
Өрісtemperature | Түріnumber | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtop_p | Түріnumber | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісstop_sequences | Түріstring[] | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtools | Түріtool[] | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtools[].name | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Мына жағдайда қолданылады: құрал берілген | Әдепкі— |
Өрісtools[].description | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісtools[].input_schema | ТүріJSON_schema | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісtool_choice | Түріobject | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісthinking.type | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісthinking.budget_tokens | Түріinteger | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісoutput_config.effort | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісmetadata | Түріobject | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісcache_control | Түріobject | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Кіріс материалдарының үйлесімдері
Мәтін · UTF8 мәтіні
messages[].content немесе type=text блогы
Мәтін + сурет
{type:image,source:{type:base64,media_type,data}} немесе type=url дереккөзі
Әдіс параметрлері мен өмірлік циклі
| Параметр | Параметр талаптары |
|---|---|
Параметрmaterial_types | Параметр талаптарыtext, image |
Параметрrequired | Параметр талаптарыmodel, messages, max_tokens |
Параметрoptional_controls | Параметр талаптарыnull |
Параметрcontent_type | Параметр талаптарыapplication/json |
Параметрtext_file_material | Параметр талаптарынақты UTF-8 мазмұны мәтін ретінде енгізіледі; файл ID мәндері мен URLs үшін бөлек нақты қолдау қажет |
Өмірлік цикл: exact retained published method
Әдіс құрылымдары мен ID мәндері дәл берілген; жеткізушінің мүмкіндігі сұрауды қабылдаудан бөлек қаралады.
Тарифтер
Ailoot әдістерінің мөлшерлемелері
POST /v1/messages- Кіріс
- 0,00015 $ / 1K
- Шығыс
- 0,0005 $ / 1K
- Кэшті оқу
- ≈0,00003 $ / 1K
Ailoot сұрау алдында болжамды соманы резервтейді. Нәтижеден кейін өлшенген пайдалану көлемі бойынша қорытынды төлемді шегереді. Ағындық жауап үшін төлем соңғы пайдалану жазбасы негізінде шегеріледі. Резервтеу мен төлемді есептеу тәртібі →
Анықтамалық тариф мәліметтері
Модельдің анықтамалық кестелері әдіс таңдауын, баға есебін не төлемді өзгертпейді. Қолданыстағы төлемдер таңдалған Ailoot әдісінің мөлшерлемелерімен есептеледі.
Модельдің анықтамалық кестелері
Баптаулар бойынша бағалар
Әр төлемді көрсетілген шарттармен салыстырыңыз. Балама баптаулардың әр жиыны үшін бір мөлшерлемені қолданыңыз.
| Баптау | Мөлшерлемелер кестесі | Контекст токендерінің саны мынадан көп | Контекст токендерінің саны мынадан аспайды, шегі кіреді | Төлем |
|---|---|---|---|---|
| БаптауOpenAI Chat · Токендердің базалық тарифтері | Мөлшерлемелер кестесіНегізгі мөлшерлеме | Контекст токендерінің саны мынадан көп— | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
| БаптауOpenAI Chat · Сұрау ұзындығы бойынша 1-деңгей | Мөлшерлемелер кестесі— | Контекст токендерінің саны мынадан көп0 | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
| БаптауAnthropic Messages · Токендердің базалық тарифтері | Мөлшерлемелер кестесіНегізгі мөлшерлеме | Контекст токендерінің саны мынадан көп— | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
| БаптауAnthropic Messages · Сұрау ұзындығы бойынша 1-деңгей | Мөлшерлемелер кестесі— | Контекст токендерінің саны мынадан көп0 | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
Сұрау мысалдары
Ailoot · Anthropic хабарламалары
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-flash-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
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_IMAGE_FILE:?Set your actual PNG JPEG or WebP image}"
export AILOOT_IMAGE_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "glm-flash-latest", "max_tokens": 1024, "messages": [{"role": "user", "content": [{"type": "text", "text": "Read labels and numbers in this image; flag unreadable text."}]}]}')
import base64
f=Path(os.environ["AILOOT_IMAGE_FILE"])
if not f.is_file():raise SystemExit("Choose an actual PNG JPEG or WebP image")
raw=f.read_bytes()
mime="image/png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "image/jpeg" if raw.startswith(b"\xff\xd8") else "image/webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else None
if not mime:raise SystemExit("Use PNG JPEG or WebP")
b64=base64.b64encode(raw).decode()
p["messages"][0]["content"].append({"type":"image","source":{"type":"base64","media_type":mime,"data":b64}})
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-flash-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-flash-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-flash-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")
Нәтижелерді алу және сақтау
Ailoot · Anthropic хабарламалары
json немесе SSE
Барлық дайын нәтижені сақтау
Қайтарылған әр толық жауапты, файлды және мазмұн бөлігін сақтаңыз.
Барлық мазмұн блоктарын, пайымдау қолтаңбаларын және құрал қолданудың нақты ID мәндерін сақтаңыз. SSE блоктарының барлық өзгерістерін жинаңыз; алғашқы мәтіндік блок толық шығыс емес.
Бастапқы жауапты тексеру қажет болса
Сұрау мен жауаптың ID мәндерін және тақырыптарын сақтаңыз. Мәтіндік тапсырманы алуға арналған ортақ URL берілмеген.
Жауап өрістері
| Өріс | Түрі |
|---|---|
Өрісid | Түріstring |
Өрісmodel | Түріstring |
Өрісcontent[] | Түріtext|thinking|tool_use|other content block |
Өрісstop_reason | Түріstring|null |
Өрісusage | Түріobject |
Қателер және келесі қадамдар
| Жауап | Шарт | Келесі қадам |
|---|---|---|
Жауап400 · invalid_request_error | ШартМіндетті өрістер, материалды ұсыну тәсілі немесе параметр мәні қате | Келесі қадамЖаңадан жасау сұрауын жібермес бұрын көрсетілген өрістерді түзетіңіз. |
Балама атаулар
Модельдердің балама атаулары
Ailoot glm-5.3-flash, glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5-turbo, glm-flash, glm-flash-latest, z-ai/glm-5.3-flash
Ailoot Ultra glm-5.3-flash, z-ai/glm-5.3-flash, ~z-ai/glm-flash-latest
Әдіс жолдарының балама атаулары
/chat/completions
Шақыруға арналған байланысты ID
z-ai/glm-5.3-flash, z-ai/glm-5.3-flash, glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5-turbo, glm-flash, glm-flash-latest, ~z-ai/glm-flash-latest, glm-5.3-flash, glm-5.3-flash
Ailoot · OpenAI Responses POST /v1/responses glm-flash-latest
glm-flash-latestglm-5.3-flashglm-4.5glm-4.5-airglm-4.6glm-4.7glm-5-turboglm-flashglm-flash-latest
Бастау
GLM 5.3 Flash — визуалды әзірлеуге, құжат талдауға және мәтіндік нәтиже беретін агенттік жұмысқа арналған Z.ai мультимодальды моделі.
- Қабылданатын кіріс деректері
- Мәтін · Суреттер
- Нәтижелер
- Мәтін
Ailoot жүйесінде қолжетімді · кіріс деректері мен әдістер
Ailoot · OpenAI Responses POST /v1/responses
- Кіріс
text,image- Шығыс
text- Контекст
- 1 000 000 tokens
- Ең үлкен шығыс
- 131 072 tokens
- Шығыс пішімі
- json немесе SSE
| Өріс | Түрі | Талап | Мәндер мен шектеулер | Әдепкі |
|---|---|---|---|---|
Өрісmodel | Түріstring | ТалапМіндетті | Мәндер мен шектеулер glm-flash-latest | Әдепкі— |
Өрісinput | Түріstring|input_item[] | ТалапМіндетті | Мәндер мен шектеулер | Әдепкі— |
Өрісinstructions | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісinput[].type | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер message, reasoning, function_call, function_call_output | Әдепкі— |
Өрісinput[].content | Түріstring|content_part[] | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісinput[].call_id | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Мына жағдайда қолданылады: function_call_output; нақты қайтарылған call_id мәнін сақтаңыз | Әдепкі— |
Өрісinput[].output | Түріstring|content_part[] | ТалапМіндетті емес | Мәндер мен шектеулер Мына жағдайда қолданылады: function_call_output | Әдепкі— |
Өрісmax_output_tokens | Түріinteger | ТалапМіндетті емес | Мәндер мен шектеулер Ең азы: 1 Модельге байланысты | Әдепкі— |
Өрісstream | Түріboolean | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкіfalse |
Өрісtemperature | Түріnumber | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtop_p | Түріnumber | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtools | Түріtool[] | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtool_choice | Түріstring|object | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісparallel_tool_calls | Түріboolean | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісreasoning.effort | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісreasoning.summary | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtext.format | Түріobject | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtext.verbosity | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісinclude | Түріstring[] | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісstore | Түріboolean | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісprevious_response_id | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер ID талабы: Қолдау көрсетілетін жалғастырудан алынған нақты жауап ID-і ғана Модельге байланысты | Әдепкі— |
Өрісservice_tier | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісprompt_cache_key | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісprompt_cache_options | Түріobject | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Кіріс материалдарының үйлесімдері
Мәтін · UTF8 мәтіні
кіріс мәтіні немесе input_text бөлігі
Мәтін + сурет
{type:input_image,image_url}
Әдіс параметрлері мен өмірлік циклі
| Параметр | Параметр талаптары |
|---|---|
Параметрmaterial_types | Параметр талаптарыtext, image |
Параметрrequired | Параметр талаптарыmodel, input |
Параметрoptional_controls | Параметр талаптарыnull |
Параметрcontent_type | Параметр талаптарыapplication/json |
Параметрtext_file_material | Параметр талаптарынақты UTF-8 мазмұны мәтін ретінде енгізіледі; файл ID мәндері мен URLs үшін бөлек нақты қолдау қажет |
Өмірлік цикл: exact retained published method
Әдіс құрылымдары мен ID мәндері дәл берілген; жеткізушінің мүмкіндігі сұрауды қабылдаудан бөлек қаралады.
Тарифтер
Ailoot әдістерінің мөлшерлемелері
POST /v1/responses- Кіріс
- 0,00015 $ / 1K
- Шығыс
- 0,0005 $ / 1K
- Кэшті оқу
- ≈0,00003 $ / 1K
Ailoot сұрау алдында болжамды соманы резервтейді. Нәтижеден кейін өлшенген пайдалану көлемі бойынша қорытынды төлемді шегереді. Ағындық жауап үшін төлем соңғы пайдалану жазбасы негізінде шегеріледі. Резервтеу мен төлемді есептеу тәртібі →
Анықтамалық тариф мәліметтері
Модельдің анықтамалық кестелері әдіс таңдауын, баға есебін не төлемді өзгертпейді. Қолданыстағы төлемдер таңдалған Ailoot әдісінің мөлшерлемелерімен есептеледі.
Модельдің анықтамалық кестелері
Баптаулар бойынша бағалар
Әр төлемді көрсетілген шарттармен салыстырыңыз. Балама баптаулардың әр жиыны үшін бір мөлшерлемені қолданыңыз.
| Баптау | Мөлшерлемелер кестесі | Контекст токендерінің саны мынадан көп | Контекст токендерінің саны мынадан аспайды, шегі кіреді | Төлем |
|---|---|---|---|---|
| БаптауOpenAI Chat · Токендердің базалық тарифтері | Мөлшерлемелер кестесіНегізгі мөлшерлеме | Контекст токендерінің саны мынадан көп— | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
| БаптауOpenAI Chat · Сұрау ұзындығы бойынша 1-деңгей | Мөлшерлемелер кестесі— | Контекст токендерінің саны мынадан көп0 | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
| БаптауAnthropic Messages · Токендердің базалық тарифтері | Мөлшерлемелер кестесіНегізгі мөлшерлеме | Контекст токендерінің саны мынадан көп— | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
| БаптауAnthropic Messages · Сұрау ұзындығы бойынша 1-деңгей | Мөлшерлемелер кестесі— | Контекст токендерінің саны мынадан көп0 | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
Сұрау мысалдары
Ailoot · OpenAI Responses
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-flash-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
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_IMAGE_FILE:?Set your actual PNG JPEG or WebP image}"
export AILOOT_IMAGE_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "glm-flash-latest", "input": [{"role": "user", "content": [{"type": "input_text", "text": "Read labels and numbers in this image; flag unreadable text."}]}]}')
import base64
f=Path(os.environ["AILOOT_IMAGE_FILE"])
if not f.is_file():raise SystemExit("Choose an actual PNG JPEG or WebP image")
raw=f.read_bytes()
mime="image/png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "image/jpeg" if raw.startswith(b"\xff\xd8") else "image/webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else None
if not mime:raise SystemExit("Use PNG JPEG or WebP")
b64=base64.b64encode(raw).decode()
p["input"][0]["content"].append({"type":"input_image","image_url":"data:"+mime+";base64,"+b64})
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-flash-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-flash-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-flash-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")
Нәтижелерді алу және сақтау
Ailoot · OpenAI Responses
json немесе SSE
Барлық дайын нәтижені сақтау
Қайтарылған әр толық жауапты, файлды және мазмұн бөлігін сақтаңыз.
Әр шығыс элементін және мазмұн бөлігін, функцияның нақты call_id мәнін, шифрланған пайымдауды және пайдалану деректерін сақтаңыз. Ағында оқиғалар мен элементтердің барлық сәйкестендіру деректерін сақтаңыз.
Бастапқы жауапты тексеру қажет болса
Сұрау мен жауаптың ID мәндерін және тақырыптарын сақтаңыз. Мәтіндік тапсырманы алуға арналған ортақ URL берілмеген.
Жауап өрістері
| Өріс | Түрі |
|---|---|
Өрісid | Түріstring |
Өрісstatus | Түріstring |
Өрісoutput[] | Түріmessage|reasoning|function_call|other item |
Өрісoutput[].content[] | Түріcontent part |
Өрісusage | Түріobject |
Қателер және келесі қадамдар
| Жауап | Шарт | Келесі қадам |
|---|---|---|
Жауап400 · invalid_request_error | ШартМіндетті өрістер, материалды ұсыну тәсілі немесе параметр мәні қате | Келесі қадамЖаңадан жасау сұрауын жібермес бұрын көрсетілген өрістерді түзетіңіз. |
Балама атаулар
Модельдердің балама атаулары
Ailoot glm-5.3-flash, glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5-turbo, glm-flash, glm-flash-latest, z-ai/glm-5.3-flash
Ailoot Ultra glm-5.3-flash, z-ai/glm-5.3-flash, ~z-ai/glm-flash-latest
Әдіс жолдарының балама атаулары
/chat/completions
Шақыруға арналған байланысты ID
z-ai/glm-5.3-flash, z-ai/glm-5.3-flash, glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5-turbo, glm-flash, glm-flash-latest, ~z-ai/glm-flash-latest, glm-5.3-flash, glm-5.3-flash
Ailoot · OpenAI чаты POST /v1/chat/completions glm-flash-latest
glm-flash-latestglm-5.3-flashglm-4.5glm-4.5-airglm-4.6glm-4.7glm-5-turboglm-flashglm-flash-latestz-ai/glm-5.3-flash
Бастау
GLM 5.3 Flash — визуалды әзірлеуге, құжат талдауға және мәтіндік нәтиже беретін агенттік жұмысқа арналған Z.ai мультимодальды моделі.
- Қабылданатын кіріс деректері
- Мәтін · Суреттер
- Нәтижелер
- Мәтін
Ailoot жүйесінде қолжетімді · кіріс деректері мен әдістер
Ailoot · OpenAI чаты POST /v1/chat/completions
- Кіріс
text,image- Шығыс
text- Контекст
- 1 000 000 tokens
- Ең үлкен шығыс
- 131 072 tokens
- Шығыс пішімі
- json немесе SSE
| Өріс | Түрі | Талап | Мәндер мен шектеулер | Әдепкі |
|---|---|---|---|---|
Өрісmodel | Түріstring | ТалапМіндетті | Мәндер мен шектеулер glm-flash-latest | Әдепкі— |
Өрісmessages | Түріmessage[] | ТалапМіндетті | Мәндер мен шектеулер Элементтердің ең аз саны: 1 | Әдепкі— |
Өрісmessages[].role | Түріstring | ТалапМіндетті | Мәндер мен шектеулер Мысалдар: system, user, assistant, tool, function Шарттар: Бұл рөлдер бастапқы кодтағы үйлесімділік түрлерінде айқын көрсетілген; рөлдердің нақты жиыны әр модельге байланысты. Модельге байланысты | Әдепкі— |
Өрісmessages[].content | Түріstring|content_part[]|null | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісmessages[].tool_calls | Түріtool_call[] | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісmessages[].tool_call_id | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Мына жағдайда қолданылады: role=tool; нақты қайтарылған ID мәнін пайдаланыңыз | Әдепкі— |
Өрісmessages[].name | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісmessages[].reasoning_content | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Мына жағдайда қолданылады: Модель пайымдауды пайдаланса, нақты қайтарылған пайымдауды қайта жіберіңіз | Әдепкі— |
Өрісmessages[].reasoning_details | Түріobject|array | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісmax_tokens | Түріinteger | ТалапМіндетті емес | Мәндер мен шектеулер Ең азы: 1 Модельге байланысты | Әдепкі— |
Өрісmax_completion_tokens | Түріinteger | ТалапМіндетті емес | Мәндер мен шектеулер Ең азы: 1 Модельге байланысты | Әдепкі— |
Өрісstream | Түріboolean | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкіfalse |
Өрісstream_options.include_usage | Түріboolean | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtemperature | Түріnumber | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtop_p | Түріnumber | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісstop | Түріstring|string[] | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtools | Түріfunction_tool[] | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtools[].type | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtools[].function.name | Түріstring | ТалапМіндетті | Мәндер мен шектеулер Мына жағдайда қолданылады: функция құралы берілген | Әдепкі— |
Өрісtools[].function.description | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісtools[].function.parameters | ТүріJSON_schema | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісtool_choice | Түріstring|object | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісparallel_tool_calls | Түріboolean | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісresponse_format | Түріobject | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісreasoning_effort | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісreasoning | Түріobject | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісservice_tier | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісinstructions | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Үйлесімділік өрісі | Әдепкі— |
Өрісfunctions | Түріfunction[] | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісfunction_call | Түріstring|object | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісprompt_cache_options | Түріobject | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Кіріс материалдарының үйлесімдері
Мәтін · UTF8 мәтіні
messages[].content
Мәтін + сурет
{type:image_url,image_url:{url,detail}}
Әдіс параметрлері мен өмірлік циклі
| Параметр | Параметр талаптары |
|---|---|
Параметрmaterial_types | Параметр талаптарыtext, image |
Параметрrequired | Параметр талаптарыmodel, messages |
Параметрoptional_controls | Параметр талаптарыnull |
Параметрcontent_type | Параметр талаптарыapplication/json |
Параметрtext_file_material | Параметр талаптарынақты UTF-8 мазмұны мәтін ретінде енгізіледі; файл ID мәндері мен URLs үшін бөлек нақты қолдау қажет |
Өмірлік цикл: exact retained published method
Әдіс құрылымдары мен ID мәндері дәл берілген; жеткізушінің мүмкіндігі сұрауды қабылдаудан бөлек қаралады.
Тарифтер
Ailoot әдістерінің мөлшерлемелері
POST /v1/chat/completions- Кіріс
- 0,00015 $ / 1K
- Шығыс
- 0,0005 $ / 1K
- Кэшті оқу
- ≈0,00003 $ / 1K
Ailoot сұрау алдында болжамды соманы резервтейді. Нәтижеден кейін өлшенген пайдалану көлемі бойынша қорытынды төлемді шегереді. Ағындық жауап үшін төлем соңғы пайдалану жазбасы негізінде шегеріледі. Резервтеу мен төлемді есептеу тәртібі →
Анықтамалық тариф мәліметтері
Модельдің анықтамалық кестелері әдіс таңдауын, баға есебін не төлемді өзгертпейді. Қолданыстағы төлемдер таңдалған Ailoot әдісінің мөлшерлемелерімен есептеледі.
Модельдің анықтамалық кестелері
Баптаулар бойынша бағалар
Әр төлемді көрсетілген шарттармен салыстырыңыз. Балама баптаулардың әр жиыны үшін бір мөлшерлемені қолданыңыз.
| Баптау | Мөлшерлемелер кестесі | Контекст токендерінің саны мынадан көп | Контекст токендерінің саны мынадан аспайды, шегі кіреді | Төлем |
|---|---|---|---|---|
| БаптауOpenAI Chat · Токендердің базалық тарифтері | Мөлшерлемелер кестесіНегізгі мөлшерлеме | Контекст токендерінің саны мынадан көп— | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
| БаптауOpenAI Chat · Сұрау ұзындығы бойынша 1-деңгей | Мөлшерлемелер кестесі— | Контекст токендерінің саны мынадан көп0 | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
| БаптауAnthropic Messages · Токендердің базалық тарифтері | Мөлшерлемелер кестесіНегізгі мөлшерлеме | Контекст токендерінің саны мынадан көп— | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
| БаптауAnthropic Messages · Сұрау ұзындығы бойынша 1-деңгей | Мөлшерлемелер кестесі— | Контекст токендерінің саны мынадан көп0 | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
Сұрау мысалдары
Ailoot · OpenAI чаты
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-flash-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
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_IMAGE_FILE:?Set your actual PNG JPEG or WebP image}"
export AILOOT_IMAGE_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "glm-flash-latest", "messages": [{"role": "user", "content": [{"type": "text", "text": "Read labels and numbers in this image; flag unreadable text."}]}]}')
import base64
f=Path(os.environ["AILOOT_IMAGE_FILE"])
if not f.is_file():raise SystemExit("Choose an actual PNG JPEG or WebP image")
raw=f.read_bytes()
mime="image/png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "image/jpeg" if raw.startswith(b"\xff\xd8") else "image/webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else None
if not mime:raise SystemExit("Use PNG JPEG or WebP")
b64=base64.b64encode(raw).decode()
p["messages"][0]["content"].append({"type":"image_url","image_url":{"url":"data:"+mime+";base64,"+b64}})
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-flash-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-flash-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-flash-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")
Нәтижелерді алу және сақтау
Ailoot · OpenAI чаты
json немесе SSE
Барлық дайын нәтижені сақтау
Қайтарылған әр толық жауапты, файлды және мазмұн бөлігін сақтаңыз.
Әр жауап нұсқасын оның мазмұнымен, құрал шақыруларымен және пайымдауымен бірге сақтаңыз. SSE өзгерістерін жауап нұсқасы мен құрал индексі бойынша жинап, соңғы аяқталу себебі мен пайдалану деректерін сақтаңыз.
Бастапқы жауапты тексеру қажет болса
Сұрау мен жауаптың ID мәндерін және тақырыптарын сақтаңыз. Мәтіндік тапсырманы алуға арналған ортақ URL берілмеген.
Жауап өрістері
| Өріс | Түрі |
|---|---|
Өрісchoices[].index | Түріinteger |
Өрісchoices[].message.content | Түріstring|null |
Өрісchoices[].message.tool_calls | Түріtool_call[] |
Өрісchoices[].message.reasoning_content | Түріstring |
Өрісchoices[].message.reasoning_details | Түріobject|array |
Өрісchoices[].finish_reason | Түріstring|null |
Өрісusage | Түріobject |
Қателер және келесі қадамдар
| Жауап | Шарт | Келесі қадам |
|---|---|---|
Жауап400 · invalid_request_error | ШартМіндетті өрістер, материалды ұсыну тәсілі немесе параметр мәні қате | Келесі қадамЖаңадан жасау сұрауын жібермес бұрын көрсетілген өрістерді түзетіңіз. |
Балама атаулар
Модельдердің балама атаулары
Ailoot glm-5.3-flash, glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5-turbo, glm-flash, glm-flash-latest, z-ai/glm-5.3-flash
Ailoot Ultra glm-5.3-flash, z-ai/glm-5.3-flash, ~z-ai/glm-flash-latest
Әдіс жолдарының балама атаулары
/chat/completions
Шақыруға арналған байланысты ID
z-ai/glm-5.3-flash, z-ai/glm-5.3-flash, glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5-turbo, glm-flash, glm-flash-latest, ~z-ai/glm-flash-latest, glm-5.3-flash, glm-5.3-flash
Ailoot · Anthropic хабарламалары POST /v1/messages z-ai/glm-5.3-flash
z-ai/glm-5.3-flashglm-5.3-flashglm-4.5glm-4.5-airglm-4.6glm-4.7glm-5-turboglm-flashglm-flash-latestz-ai/glm-5.3-flash
Бастау
GLM 5.3 Flash — визуалды әзірлеуге, құжат талдауға және мәтіндік нәтиже беретін агенттік жұмысқа арналған Z.ai мультимодальды моделі.
- Қабылданатын кіріс деректері
- Мәтін
- Нәтижелер
- Мәтін
Ailoot жүйесінде қолжетімді · кіріс деректері мен әдістер
Ailoot · Anthropic хабарламалары POST /v1/messages
- Кіріс
text- Шығыс
text- Контекст
- 1 048 576 tokens
- Ең үлкен шығыс
- 32 768 tokens
- Шығыс пішімі
- json немесе SSE
| Өріс | Түрі | Талап | Мәндер мен шектеулер | Әдепкі |
|---|---|---|---|---|
Өрісmodel | Түріstring | ТалапМіндетті | Мәндер мен шектеулер z-ai/glm-5.3-flash | Әдепкі— |
Өрісmessages | Түріmessage[] | ТалапМіндетті | Мәндер мен шектеулер Элементтердің ең аз саны: 1 | Әдепкі— |
Өрісmessages[].role | Түріstring | ТалапМіндетті | Мәндер мен шектеулер user, assistant | Әдепкі— |
Өрісmessages[].content | Түріstring|content_block[] | ТалапМіндетті | Мәндер мен шектеулер | Әдепкі— |
Өрісsystem | Түріstring|content_block[] | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісmax_tokens | Түріinteger | ТалапМіндетті | Мәндер мен шектеулер Ең азы: 1 Шектеу қолданылатын нысан: таңдалған модельдің/карточканың нақты жоғарғы шегі | Әдепкі— |
Өрісstream | Түріboolean | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкіfalse |
Өрісtemperature | Түріnumber | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtop_p | Түріnumber | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісstop_sequences | Түріstring[] | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtools | Түріtool[] | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtools[].name | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Мына жағдайда қолданылады: құрал берілген | Әдепкі— |
Өрісtools[].description | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісtools[].input_schema | ТүріJSON_schema | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісtool_choice | Түріobject | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісthinking.type | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісthinking.budget_tokens | Түріinteger | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісoutput_config.effort | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісmetadata | Түріobject | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісcache_control | Түріobject | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Кіріс материалдарының үйлесімдері
Мәтін · UTF8 мәтіні
messages[].content немесе type=text блогы
Әдіс параметрлері мен өмірлік циклі
| Параметр | Параметр талаптары |
|---|---|
Параметрmaterial_types | Параметр талаптарыtext |
Параметрrequired | Параметр талаптарыmodel, messages, max_tokens |
Параметрoptional_controls | Параметр талаптарыnull |
Параметрcontent_type | Параметр талаптарыapplication/json |
Параметрtext_file_material | Параметр талаптарынақты UTF-8 мазмұны мәтін ретінде енгізіледі; файл ID мәндері мен URLs үшін бөлек нақты қолдау қажет |
Өмірлік цикл: exact retained published method
Әдіс құрылымдары мен ID мәндері дәл берілген; жеткізушінің мүмкіндігі сұрауды қабылдаудан бөлек қаралады.
Тарифтер
Ailoot әдістерінің мөлшерлемелері
POST /v1/messages- Кіріс
- 0,00015 $ / 1K
- Шығыс
- 0,0005 $ / 1K
- Кэшті оқу
- ≈0,00003 $ / 1K
- Кэшке жазу
- 0,00015 $ / 1K
- Кэшке жазу, 5 мин
- 0,00015 $ / 1K tokens
Ailoot сұрау алдында болжамды соманы резервтейді. Нәтижеден кейін өлшенген пайдалану көлемі бойынша қорытынды төлемді шегереді. Ағындық жауап үшін төлем соңғы пайдалану жазбасы негізінде шегеріледі. Резервтеу мен төлемді есептеу тәртібі →
Анықтамалық тариф мәліметтері
Модельдің анықтамалық кестелері әдіс таңдауын, баға есебін не төлемді өзгертпейді. Қолданыстағы төлемдер таңдалған Ailoot әдісінің мөлшерлемелерімен есептеледі.
Модельдің анықтамалық кестелері
Баптаулар бойынша бағалар
Әр төлемді көрсетілген шарттармен салыстырыңыз. Балама баптаулардың әр жиыны үшін бір мөлшерлемені қолданыңыз.
| Баптау | Мөлшерлемелер кестесі | Контекст токендерінің саны мынадан көп | Контекст токендерінің саны мынадан аспайды, шегі кіреді | Төлем |
|---|---|---|---|---|
| БаптауOpenAI Chat · Токендердің базалық тарифтері | Мөлшерлемелер кестесіНегізгі мөлшерлеме | Контекст токендерінің саны мынадан көп— | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
| БаптауOpenAI Chat · Сұрау ұзындығы бойынша 1-деңгей | Мөлшерлемелер кестесі— | Контекст токендерінің саны мынадан көп0 | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
| БаптауAnthropic Messages · Токендердің базалық тарифтері | Мөлшерлемелер кестесіНегізгі мөлшерлеме | Контекст токендерінің саны мынадан көп— | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
| БаптауAnthropic Messages · Сұрау ұзындығы бойынша 1-деңгей | Мөлшерлемелер кестесі— | Контекст токендерінің саны мынадан көп0 | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
Сұрау мысалдары
Ailoot · Anthropic хабарламалары
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": "z-ai/glm-5.3-flash", "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="z-ai/glm-5.3-flash",
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: "z-ai/glm-5.3-flash",
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='z-ai/glm-5.3-flash',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")
Нәтижелерді алу және сақтау
Ailoot · Anthropic хабарламалары
json немесе SSE
Барлық дайын нәтижені сақтау
Қайтарылған әр толық жауапты, файлды және мазмұн бөлігін сақтаңыз.
Барлық мазмұн блоктарын, пайымдау қолтаңбаларын және құрал қолданудың нақты ID мәндерін сақтаңыз. SSE блоктарының барлық өзгерістерін жинаңыз; алғашқы мәтіндік блок толық шығыс емес.
Бастапқы жауапты тексеру қажет болса
Сұрау мен жауаптың ID мәндерін және тақырыптарын сақтаңыз. Мәтіндік тапсырманы алуға арналған ортақ URL берілмеген.
Жауап өрістері
| Өріс | Түрі |
|---|---|
Өрісid | Түріstring |
Өрісmodel | Түріstring |
Өрісcontent[] | Түріtext|thinking|tool_use|other content block |
Өрісstop_reason | Түріstring|null |
Өрісusage | Түріobject |
Қателер және келесі қадамдар
| Жауап | Шарт | Келесі қадам |
|---|---|---|
Жауап400 · invalid_request_error | ШартМіндетті өрістер, материалды ұсыну тәсілі немесе параметр мәні қате | Келесі қадамЖаңадан жасау сұрауын жібермес бұрын көрсетілген өрістерді түзетіңіз. |
Балама атаулар
Модельдердің балама атаулары
Ailoot glm-5.3-flash, glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5-turbo, glm-flash, glm-flash-latest, z-ai/glm-5.3-flash
Ailoot Ultra glm-5.3-flash, z-ai/glm-5.3-flash, ~z-ai/glm-flash-latest
Әдіс жолдарының балама атаулары
/chat/completions
Шақыруға арналған байланысты ID
z-ai/glm-5.3-flash, z-ai/glm-5.3-flash, glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5-turbo, glm-flash, glm-flash-latest, ~z-ai/glm-flash-latest, glm-5.3-flash, glm-5.3-flash
Ailoot · OpenAI чаты POST /v1/chat/completions z-ai/glm-5.3-flash
z-ai/glm-5.3-flashglm-5.3-flashglm-4.5glm-4.5-airglm-4.6glm-4.7glm-5-turboglm-flashglm-flash-latestz-ai/glm-5.3-flash
Бастау
GLM 5.3 Flash — визуалды әзірлеуге, құжат талдауға және мәтіндік нәтиже беретін агенттік жұмысқа арналған Z.ai мультимодальды моделі.
- Қабылданатын кіріс деректері
- Мәтін
- Нәтижелер
- Мәтін
Ailoot жүйесінде қолжетімді · кіріс деректері мен әдістер
Ailoot · OpenAI чаты POST /v1/chat/completions
- Кіріс
text- Шығыс
text- Контекст
- 4 096 tokens
- Ең үлкен шығыс
- 1 024 tokens
- Шығыс пішімі
- json немесе SSE
| Өріс | Түрі | Талап | Мәндер мен шектеулер | Әдепкі |
|---|---|---|---|---|
Өрісmodel | Түріstring | ТалапМіндетті | Мәндер мен шектеулер z-ai/glm-5.3-flash | Әдепкі— |
Өрісmessages | Түріmessage[] | ТалапМіндетті | Мәндер мен шектеулер Элементтердің ең аз саны: 1 | Әдепкі— |
Өрісmessages[].role | Түріstring | ТалапМіндетті | Мәндер мен шектеулер Мысалдар: system, user, assistant, tool, function Шарттар: Бұл рөлдер бастапқы кодтағы үйлесімділік түрлерінде айқын көрсетілген; рөлдердің нақты жиыны әр модельге байланысты. Модельге байланысты | Әдепкі— |
Өрісmessages[].content | Түріstring|content_part[]|null | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісmessages[].tool_calls | Түріtool_call[] | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісmessages[].tool_call_id | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Мына жағдайда қолданылады: role=tool; нақты қайтарылған ID мәнін пайдаланыңыз | Әдепкі— |
Өрісmessages[].name | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісmessages[].reasoning_content | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Мына жағдайда қолданылады: Модель пайымдауды пайдаланса, нақты қайтарылған пайымдауды қайта жіберіңіз | Әдепкі— |
Өрісmessages[].reasoning_details | Түріobject|array | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісmax_tokens | Түріinteger | ТалапМіндетті емес | Мәндер мен шектеулер Ең азы: 1 Модельге байланысты | Әдепкі— |
Өрісmax_completion_tokens | Түріinteger | ТалапМіндетті емес | Мәндер мен шектеулер Ең азы: 1 Модельге байланысты | Әдепкі— |
Өрісstream | Түріboolean | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкіfalse |
Өрісstream_options.include_usage | Түріboolean | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtemperature | Түріnumber | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtop_p | Түріnumber | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісstop | Түріstring|string[] | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtools | Түріfunction_tool[] | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtools[].type | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtools[].function.name | Түріstring | ТалапМіндетті | Мәндер мен шектеулер Мына жағдайда қолданылады: функция құралы берілген | Әдепкі— |
Өрісtools[].function.description | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісtools[].function.parameters | ТүріJSON_schema | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісtool_choice | Түріstring|object | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісparallel_tool_calls | Түріboolean | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісresponse_format | Түріobject | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісreasoning_effort | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісreasoning | Түріobject | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісservice_tier | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісinstructions | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Үйлесімділік өрісі | Әдепкі— |
Өрісfunctions | Түріfunction[] | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісfunction_call | Түріstring|object | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісprompt_cache_options | Түріobject | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Кіріс материалдарының үйлесімдері
Мәтін · UTF8 мәтіні
messages[].content
Әдіс параметрлері мен өмірлік циклі
| Параметр | Параметр талаптары |
|---|---|
Параметрmaterial_types | Параметр талаптарыtext |
Параметрrequired | Параметр талаптарыmodel, messages |
Параметрoptional_controls | Параметр талаптарыnull |
Параметрcontent_type | Параметр талаптарыapplication/json |
Параметрtext_file_material | Параметр талаптарынақты UTF-8 мазмұны мәтін ретінде енгізіледі; файл ID мәндері мен URLs үшін бөлек нақты қолдау қажет |
Өмірлік цикл: exact retained published method
Әдіс құрылымдары мен ID мәндері дәл берілген; жеткізушінің мүмкіндігі сұрауды қабылдаудан бөлек қаралады.
Тарифтер
Ailoot әдістерінің мөлшерлемелері
POST /v1/chat/completions- Кіріс
- 0,00015 $ / 1K
- Шығыс
- 0,0005 $ / 1K
- Кэшті оқу
- ≈0,00003 $ / 1K
- Кэшке жазу
- 0,00015 $ / 1K
- Кэшке жазу, 5 мин
- 0,00015 $ / 1K tokens
Ailoot сұрау алдында болжамды соманы резервтейді. Нәтижеден кейін өлшенген пайдалану көлемі бойынша қорытынды төлемді шегереді. Ағындық жауап үшін төлем соңғы пайдалану жазбасы негізінде шегеріледі. Резервтеу мен төлемді есептеу тәртібі →
Анықтамалық тариф мәліметтері
Модельдің анықтамалық кестелері әдіс таңдауын, баға есебін не төлемді өзгертпейді. Қолданыстағы төлемдер таңдалған Ailoot әдісінің мөлшерлемелерімен есептеледі.
Модельдің анықтамалық кестелері
Баптаулар бойынша бағалар
Әр төлемді көрсетілген шарттармен салыстырыңыз. Балама баптаулардың әр жиыны үшін бір мөлшерлемені қолданыңыз.
| Баптау | Мөлшерлемелер кестесі | Контекст токендерінің саны мынадан көп | Контекст токендерінің саны мынадан аспайды, шегі кіреді | Төлем |
|---|---|---|---|---|
| БаптауOpenAI Chat · Токендердің базалық тарифтері | Мөлшерлемелер кестесіНегізгі мөлшерлеме | Контекст токендерінің саны мынадан көп— | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
| БаптауOpenAI Chat · Сұрау ұзындығы бойынша 1-деңгей | Мөлшерлемелер кестесі— | Контекст токендерінің саны мынадан көп0 | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
| БаптауAnthropic Messages · Токендердің базалық тарифтері | Мөлшерлемелер кестесіНегізгі мөлшерлеме | Контекст токендерінің саны мынадан көп— | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
| БаптауAnthropic Messages · Сұрау ұзындығы бойынша 1-деңгей | Мөлшерлемелер кестесі— | Контекст токендерінің саны мынадан көп0 | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
Сұрау мысалдары
Ailoot · OpenAI чаты
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": "z-ai/glm-5.3-flash", "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="z-ai/glm-5.3-flash",
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: "z-ai/glm-5.3-flash",
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='z-ai/glm-5.3-flash',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")
Нәтижелерді алу және сақтау
Ailoot · OpenAI чаты
json немесе SSE
Барлық дайын нәтижені сақтау
Қайтарылған әр толық жауапты, файлды және мазмұн бөлігін сақтаңыз.
Әр жауап нұсқасын оның мазмұнымен, құрал шақыруларымен және пайымдауымен бірге сақтаңыз. SSE өзгерістерін жауап нұсқасы мен құрал индексі бойынша жинап, соңғы аяқталу себебі мен пайдалану деректерін сақтаңыз.
Бастапқы жауапты тексеру қажет болса
Сұрау мен жауаптың ID мәндерін және тақырыптарын сақтаңыз. Мәтіндік тапсырманы алуға арналған ортақ URL берілмеген.
Жауап өрістері
| Өріс | Түрі |
|---|---|
Өрісchoices[].index | Түріinteger |
Өрісchoices[].message.content | Түріstring|null |
Өрісchoices[].message.tool_calls | Түріtool_call[] |
Өрісchoices[].message.reasoning_content | Түріstring |
Өрісchoices[].message.reasoning_details | Түріobject|array |
Өрісchoices[].finish_reason | Түріstring|null |
Өрісusage | Түріobject |
Қателер және келесі қадамдар
| Жауап | Шарт | Келесі қадам |
|---|---|---|
Жауап400 · invalid_request_error | ШартМіндетті өрістер, материалды ұсыну тәсілі немесе параметр мәні қате | Келесі қадамЖаңадан жасау сұрауын жібермес бұрын көрсетілген өрістерді түзетіңіз. |
Балама атаулар
Модельдердің балама атаулары
Ailoot glm-5.3-flash, glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5-turbo, glm-flash, glm-flash-latest, z-ai/glm-5.3-flash
Ailoot Ultra glm-5.3-flash, z-ai/glm-5.3-flash, ~z-ai/glm-flash-latest
Әдіс жолдарының балама атаулары
/chat/completions
Шақыруға арналған байланысты ID
z-ai/glm-5.3-flash, z-ai/glm-5.3-flash, glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5-turbo, glm-flash, glm-flash-latest, ~z-ai/glm-flash-latest, glm-5.3-flash, glm-5.3-flash
Ailoot Ultra · OpenAI чаты POST /v1/chat/completions z-ai/glm-5.3-flash
z-ai/glm-5.3-flashglm-5.3-flashz-ai/glm-5.3-flash~z-ai/glm-flash-latest
Бастау
GLM 5.3 Flash — визуалды әзірлеуге, құжат талдауға және мәтіндік нәтиже беретін агенттік жұмысқа арналған Z.ai мультимодальды моделі.
- Қабылданатын кіріс деректері
- Мәтін
- Нәтижелер
- Мәтін
Ailoot жүйесінде қолжетімді · кіріс деректері мен әдістер
Ailoot Ultra · OpenAI чаты POST /v1/chat/completions
- Кіріс
text- Шығыс
text- Шығыс пішімі
- json немесе SSE
| Өріс | Түрі | Талап | Мәндер мен шектеулер | Әдепкі |
|---|---|---|---|---|
Өрісmodel | Түріstring | ТалапМіндетті | Мәндер мен шектеулер z-ai/glm-5.3-flash | Әдепкі— |
Өрісmessages | Түріmessage[] | ТалапМіндетті | Мәндер мен шектеулер Элементтердің ең аз саны: 1 | Әдепкі— |
Өрісmessages[].role | Түріstring | ТалапМіндетті | Мәндер мен шектеулер Мысалдар: system, user, assistant, tool, function Шарттар: Бұл рөлдер бастапқы кодтағы үйлесімділік түрлерінде айқын көрсетілген; рөлдердің нақты жиыны әр модельге байланысты. Модельге байланысты | Әдепкі— |
Өрісmessages[].content | Түріstring|content_part[]|null | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісmessages[].tool_calls | Түріtool_call[] | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісmessages[].tool_call_id | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Мына жағдайда қолданылады: role=tool; нақты қайтарылған ID мәнін пайдаланыңыз | Әдепкі— |
Өрісmessages[].name | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісmessages[].reasoning_content | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Мына жағдайда қолданылады: Модель пайымдауды пайдаланса, нақты қайтарылған пайымдауды қайта жіберіңіз | Әдепкі— |
Өрісmessages[].reasoning_details | Түріobject|array | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісmax_tokens | Түріinteger | ТалапМіндетті емес | Мәндер мен шектеулер Ең азы: 1 Модельге байланысты | Әдепкі— |
Өрісmax_completion_tokens | Түріinteger | ТалапМіндетті емес | Мәндер мен шектеулер Ең азы: 1 Модельге байланысты | Әдепкі— |
Өрісstream | Түріboolean | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкіfalse |
Өрісstream_options.include_usage | Түріboolean | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtemperature | Түріnumber | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtop_p | Түріnumber | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісstop | Түріstring|string[] | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtools | Түріfunction_tool[] | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtools[].type | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер function Модельге байланысты | Әдепкі— |
Өрісtools[].function.name | Түріstring | ТалапМіндетті | Мәндер мен шектеулер Мына жағдайда қолданылады: функция құралы берілген | Әдепкі— |
Өрісtools[].function.description | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісtools[].function.parameters | ТүріJSON_schema | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісtool_choice | Түріstring|object | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісparallel_tool_calls | Түріboolean | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісresponse_format | Түріobject | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісreasoning_effort | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісreasoning | Түріobject | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісservice_tier | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісinstructions | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Үйлесімділік өрісі | Әдепкі— |
Өрісfunctions | Түріfunction[] | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісfunction_call | Түріstring|object | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісprompt_cache_options | Түріobject | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісmodalities | Түріstring[] | ТалапМіндетті емес | Мәндер мен шектеулер text | Әдепкі— |
Өрісprovider | Түріobject | ТалапМіндетті емес | Мәндер мен шектеулер Шарттар: Осы Ultra мәтіндік бағытында provider.options қабылданбайды | Әдепкі— |
Өрісcache_control.ttl | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Шарттар: Сұрау кэшінің нақты орындарында 1h қабылданбайды | Әдепкі— |
Кіріс материалдарының үйлесімдері
Мәтін · UTF8 мәтіні
messages[].content
Әдіс параметрлері мен өмірлік циклі
| Параметр | Параметр талаптары |
|---|---|
Параметрcontent_type | Параметр талаптарыapplication/json |
Параметрrequired | Параметр талаптарыmodel, messages |
Параметрmaterial_types | Параметр талаптарыtext |
Параметрmessages | Параметр талаптарыrole/content құрылымы бар хабарламалар жиымы |
Параметрfile_material | Параметр талаптарынақты UTF-8 құжаты сөзбе-сөз мәтін ретінде енгізіледі; файл ID-і болжанбайды |
Параметрoptional_controls | Параметр талаптарыstream, temperature, top_p, stop, max_tokens, max_completion_tokens, reasoning, response_format, tools, tool_choice |
Параметрcontrol_scope | Параметр талаптарымодельге байланысты; пайдаланушының функция құралдары қызмет жағында орындалатын құралдардан өзгеше |
Параметрoutput_modalities | Параметр талаптарыtext |
Параметрhosted_operations | Параметр талаптарыfalse |
Параметрmultimodal_input_binding | Параметр талаптарыnull |
Өмірлік цикл: synchronous_or_streamed
Модельдің дәл ID мәнін messages деректерімен бірге жіберіңіз.
Контекст ұзындығы шығыстың жоғарғы шегі емес.
Мәтіндік файл сөзбе-сөз мәтінді бере алады; кіріс суреттері, аудио және файл нысандары дәл байланыстыруды қажет етеді.
Тарифтер
Тариф анықтамасы сұрау мүмкіндіктерін қоспайды. Қолдау көрсетілетін параметрлер таңдалған әдісте берілген.
- Жылдам режим
- Стандартты тариф Жылдам режим таңдалғанда
- Икемді режим
- Стандартты тариф flex режимі таңдалғанда
- Ой қорытудың ең жоғары деңгейі
- Стандартты тариф Ой қорыту деңгейі ең жоғары болып, default түзетуі қолданылғанда
- Ой қорыту деңгейі · high
- Стандартты тариф Ой қорыту деңгейі high болғанда
- Ой қорыту деңгейі · low
- Стандартты тариф Ой қорыту деңгейі low болғанда
- Ой қорыту деңгейі · max
- Стандартты тариф Ой қорыту деңгейі max болғанда
Ailoot мөлшерлемелері
Баптаулар бойынша бағалар
Әр төлемді көрсетілген шарттармен салыстырыңыз. Балама баптаулардың әр жиыны үшін бір мөлшерлемені қолданыңыз.
| Баптау | Мөлшерлемелер кестесі | Контекст токендерінің саны мынадан көп | Контекст токендерінің саны мынадан аспайды, шегі кіреді | Төлем |
|---|---|---|---|---|
| БаптауТокендердің базалық тарифтері | Мөлшерлемелер кестесіНегізгі мөлшерлеме | Контекст токендерінің саны мынадан көп— | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
| БаптауСұрау ұзындығының 1-деңгейі | Мөлшерлемелер кестесі— | Контекст токендерінің саны мынадан көп0 | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
Ailoot сұрау алдында болжамды соманы резервтейді. Нәтижеден кейін өлшенген пайдалану көлемі бойынша қорытынды төлемді шегереді. Ағындық жауап үшін төлем соңғы пайдалану жазбасы негізінде шегеріледі. Резервтеу мен төлемді есептеу тәртібі →
Сұрау мысалдары
Ailoot Ultra · OpenAI чаты
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-flash", "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-flash',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-flash',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")
Нәтижелерді алу және сақтау
Ailoot Ultra · OpenAI чаты
json немесе SSE
Барлық дайын нәтижені сақтау
Қайтарылған әр толық жауапты, файлды және мазмұн бөлігін сақтаңыз.
Әр жауап нұсқасын оның мазмұнымен, құрал шақыруларымен және пайымдауымен бірге сақтаңыз. SSE өзгерістерін жауап нұсқасы мен құрал индексі бойынша жинап, соңғы аяқталу себебі мен пайдалану деректерін сақтаңыз.
Бастапқы жауапты тексеру қажет болса
Сұрау мен жауаптың ID мәндерін және тақырыптарын сақтаңыз. Мәтіндік тапсырманы алуға арналған ортақ URL берілмеген.
Жауап өрістері
| Өріс | Түрі |
|---|---|
Өрісchoices[].index | Түріinteger |
Өрісchoices[].message.content | Түріstring|null |
Өрісchoices[].message.tool_calls | Түріtool_call[] |
Өрісchoices[].message.reasoning_content | Түріstring |
Өрісchoices[].message.reasoning_details | Түріobject|array |
Өрісchoices[].finish_reason | Түріstring|null |
Өрісusage | Түріobject |
Қателер және келесі қадамдар
| Жауап | Шарт | Келесі қадам |
|---|---|---|
Жауап400 · invalid_request_error | ШартМіндетті өрістер, материалды ұсыну тәсілі немесе параметр мәні қате | Келесі қадамЖаңадан жасау сұрауын жібермес бұрын көрсетілген өрістерді түзетіңіз. |
Балама атаулар
Модельдердің балама атаулары
Ailoot glm-5.3-flash, glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5-turbo, glm-flash, glm-flash-latest, z-ai/glm-5.3-flash
Ailoot Ultra glm-5.3-flash, z-ai/glm-5.3-flash, ~z-ai/glm-flash-latest
Әдіс жолдарының балама атаулары
/chat/completions
Шақыруға арналған байланысты ID
z-ai/glm-5.3-flash, z-ai/glm-5.3-flash, glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5-turbo, glm-flash, glm-flash-latest, ~z-ai/glm-flash-latest, glm-5.3-flash, glm-5.3-flash
Ailoot Ultra · Anthropic хабарламалары POST /v1/messages z-ai/glm-5.3-flash
z-ai/glm-5.3-flashglm-5.3-flashz-ai/glm-5.3-flash~z-ai/glm-flash-latest
Бастау
GLM 5.3 Flash — визуалды әзірлеуге, құжат талдауға және мәтіндік нәтиже беретін агенттік жұмысқа арналған Z.ai мультимодальды моделі.
- Қабылданатын кіріс деректері
- Мәтін
- Нәтижелер
- json · sse
Ailoot жүйесінде қолжетімді · кіріс деректері мен әдістер
Ailoot Ultra · Anthropic хабарламалары POST /v1/messages
- Кіріс
text- Шығыс
json,sse- Шығыс пішімі
- JSON немесе SSE
| Өріс | Түрі | Талап | Мәндер мен шектеулер | Әдепкі |
|---|---|---|---|---|
Өрісmodel | Түріstring | ТалапМіндетті | Мәндер мен шектеулер z-ai/glm-5.3-flash | Әдепкі— |
Өрісmessages | Түріmessage[] | ТалапМіндетті | Мәндер мен шектеулер | Әдепкі— |
Өрісmessages[].role | Түріstring | ТалапМіндетті | Мәндер мен шектеулер user, assistant | Әдепкі— |
Өрісmessages[].content | Түріstring | ТалапМіндетті | Мәндер мен шектеулер | Әдепкі— |
Өрісmax_tokens | Түріinteger | ТалапМіндетті | Мәндер мен шектеулер | Әдепкі— |
Өрісstream | Түріboolean | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкіfalse |
Кіріс материалдарының үйлесімдері
Мәтін · UTF-8 мәтіні
messages[].content жолы
Әдіс параметрлері мен өмірлік циклі
| Параметр | Параметр талаптары |
|---|---|
Параметрcontent_type | Параметр талаптарыapplication/json |
Параметрrequired | Параметр талаптарыmodel, messages, max_tokens |
Параметрoptional_controls | Параметр талаптарыstream |
Параметрmaterial_types | Параметр талаптарыtext |
Параметрtext_file_material | Параметр талаптарыНақты UTF-8 құжатын оқып, оның мәтінін көрсетілген кіріс жолына немесе хабарлама мазмұнының жолына қойыңыз. |
Өмірлік цикл: synchronous_or_streamed
Тарифтер
Тариф анықтамасы сұрау мүмкіндіктерін қоспайды. Қолдау көрсетілетін параметрлер таңдалған әдісте берілген.
- Жылдам режим
- Стандартты тариф Жылдам режим таңдалғанда
- Икемді режим
- Стандартты тариф flex режимі таңдалғанда
- Ой қорытудың ең жоғары деңгейі
- Стандартты тариф Ой қорыту деңгейі ең жоғары болып, default түзетуі қолданылғанда
- Ой қорыту деңгейі · high
- Стандартты тариф Ой қорыту деңгейі high болғанда
- Ой қорыту деңгейі · low
- Стандартты тариф Ой қорыту деңгейі low болғанда
- Ой қорыту деңгейі · max
- Стандартты тариф Ой қорыту деңгейі max болғанда
Ailoot мөлшерлемелері
Баптаулар бойынша бағалар
Әр төлемді көрсетілген шарттармен салыстырыңыз. Балама баптаулардың әр жиыны үшін бір мөлшерлемені қолданыңыз.
| Баптау | Мөлшерлемелер кестесі | Контекст токендерінің саны мынадан көп | Контекст токендерінің саны мынадан аспайды, шегі кіреді | Төлем |
|---|---|---|---|---|
| БаптауТокендердің базалық тарифтері | Мөлшерлемелер кестесіНегізгі мөлшерлеме | Контекст токендерінің саны мынадан көп— | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
| БаптауСұрау ұзындығының 1-деңгейі | Мөлшерлемелер кестесі— | Контекст токендерінің саны мынадан көп0 | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
Ailoot сұрау алдында болжамды соманы резервтейді. Нәтижеден кейін өлшенген пайдалану көлемі бойынша қорытынды төлемді шегереді. Ағындық жауап үшін төлем соңғы пайдалану жазбасы негізінде шегеріледі. Резервтеу мен төлемді есептеу тәртібі →
Сұрау мысалдары
Ailoot Ultra · Anthropic хабарламалары
{
"model": "z-ai/glm-5.3-flash",
"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-flash', '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-flash', '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))
Нәтижелерді алу және сақтау
Ailoot Ultra · Anthropic хабарламалары
JSON немесе SSE
Барлық дайын нәтижені сақтау
Қайтарылған әр толық жауапты, файлды және мазмұн бөлігін сақтаңыз.
Барлық мазмұн блоктарын, пайымдау қолтаңбаларын және құрал қолданудың нақты ID мәндерін сақтаңыз. SSE блоктарының барлық өзгерістерін жинаңыз; алғашқы мәтіндік блок толық шығыс емес.
Бастапқы жауапты тексеру қажет болса
Сұрау мен жауаптың ID мәндерін және тақырыптарын сақтаңыз. Мәтіндік тапсырманы алуға арналған ортақ URL берілмеген.
Жауап өрістері
| Өріс | Түрі |
|---|---|
Өрісid | Түріstring |
Өрісmodel | Түріstring |
Өрісcontent[] | Түріtext|thinking|tool_use|other content block |
Өрісstop_reason | Түріstring|null |
Өрісusage | Түріobject |
Қателер және келесі қадамдар
| Жауап | Шарт | Келесі қадам |
|---|---|---|
Жауап400 · invalid_request_error | ШартМіндетті өрістер, материалды ұсыну тәсілі немесе параметр мәні қате | Келесі қадамЖаңадан жасау сұрауын жібермес бұрын көрсетілген өрістерді түзетіңіз. |
Балама атаулар
Модельдердің балама атаулары
Ailoot glm-5.3-flash, glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5-turbo, glm-flash, glm-flash-latest, z-ai/glm-5.3-flash
Ailoot Ultra glm-5.3-flash, z-ai/glm-5.3-flash, ~z-ai/glm-flash-latest
Әдіс жолдарының балама атаулары
/chat/completions
Шақыруға арналған байланысты ID
z-ai/glm-5.3-flash, z-ai/glm-5.3-flash, glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5-turbo, glm-flash, glm-flash-latest, ~z-ai/glm-flash-latest, glm-5.3-flash, glm-5.3-flash
Ailoot Ultra · OpenAI чаты POST /v1/chat/completions ~z-ai/glm-flash-latest
~z-ai/glm-flash-latestglm-5.3-flashz-ai/glm-5.3-flash~z-ai/glm-flash-latest
Бастау
GLM 5.3 Flash — визуалды әзірлеуге, құжат талдауға және мәтіндік нәтиже беретін агенттік жұмысқа арналған Z.ai мультимодальды моделі.
- Қабылданатын кіріс деректері
- Мәтін
- Нәтижелер
- Мәтін
Ailoot жүйесінде қолжетімді · кіріс деректері мен әдістер
Ailoot Ultra · OpenAI чаты POST /v1/chat/completions
- Кіріс
text- Шығыс
text- Шығыс пішімі
- json немесе SSE
| Өріс | Түрі | Талап | Мәндер мен шектеулер | Әдепкі |
|---|---|---|---|---|
Өрісmodel | Түріstring | ТалапМіндетті | Мәндер мен шектеулер ~z-ai/glm-flash-latest | Әдепкі— |
Өрісmessages | Түріmessage[] | ТалапМіндетті | Мәндер мен шектеулер Элементтердің ең аз саны: 1 | Әдепкі— |
Өрісmessages[].role | Түріstring | ТалапМіндетті | Мәндер мен шектеулер Мысалдар: system, user, assistant, tool, function Шарттар: Бұл рөлдер бастапқы кодтағы үйлесімділік түрлерінде айқын көрсетілген; рөлдердің нақты жиыны әр модельге байланысты. Модельге байланысты | Әдепкі— |
Өрісmessages[].content | Түріstring|content_part[]|null | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісmessages[].tool_calls | Түріtool_call[] | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісmessages[].tool_call_id | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Мына жағдайда қолданылады: role=tool; нақты қайтарылған ID мәнін пайдаланыңыз | Әдепкі— |
Өрісmessages[].name | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісmessages[].reasoning_content | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Мына жағдайда қолданылады: Модель пайымдауды пайдаланса, нақты қайтарылған пайымдауды қайта жіберіңіз | Әдепкі— |
Өрісmessages[].reasoning_details | Түріobject|array | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісmax_tokens | Түріinteger | ТалапМіндетті емес | Мәндер мен шектеулер Ең азы: 1 Модельге байланысты | Әдепкі— |
Өрісmax_completion_tokens | Түріinteger | ТалапМіндетті емес | Мәндер мен шектеулер Ең азы: 1 Модельге байланысты | Әдепкі— |
Өрісstream | Түріboolean | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкіfalse |
Өрісstream_options.include_usage | Түріboolean | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtemperature | Түріnumber | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtop_p | Түріnumber | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісstop | Түріstring|string[] | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtools | Түріfunction_tool[] | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtools[].type | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер function Модельге байланысты | Әдепкі— |
Өрісtools[].function.name | Түріstring | ТалапМіндетті | Мәндер мен шектеулер Мына жағдайда қолданылады: функция құралы берілген | Әдепкі— |
Өрісtools[].function.description | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісtools[].function.parameters | ТүріJSON_schema | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісtool_choice | Түріstring|object | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісparallel_tool_calls | Түріboolean | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісresponse_format | Түріobject | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісreasoning_effort | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісreasoning | Түріobject | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісservice_tier | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісinstructions | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Үйлесімділік өрісі | Әдепкі— |
Өрісfunctions | Түріfunction[] | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісfunction_call | Түріstring|object | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісprompt_cache_options | Түріobject | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісmodalities | Түріstring[] | ТалапМіндетті емес | Мәндер мен шектеулер text | Әдепкі— |
Өрісprovider | Түріobject | ТалапМіндетті емес | Мәндер мен шектеулер Шарттар: Осы Ultra мәтіндік бағытында provider.options қабылданбайды | Әдепкі— |
Өрісcache_control.ttl | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Шарттар: Сұрау кэшінің нақты орындарында 1h қабылданбайды | Әдепкі— |
Кіріс материалдарының үйлесімдері
Мәтін · UTF8 мәтіні
messages[].content
Әдіс параметрлері мен өмірлік циклі
| Параметр | Параметр талаптары |
|---|---|
Параметрcontent_type | Параметр талаптарыapplication/json |
Параметрrequired | Параметр талаптарыmodel, messages |
Параметрmaterial_types | Параметр талаптарыtext |
Параметрmessages | Параметр талаптарыrole/content құрылымы бар хабарламалар жиымы |
Параметрfile_material | Параметр талаптарынақты UTF-8 құжаты сөзбе-сөз мәтін ретінде енгізіледі; файл ID-і болжанбайды |
Параметрoptional_controls | Параметр талаптарыstream, temperature, top_p, stop, max_tokens, max_completion_tokens, reasoning, response_format, tools, tool_choice |
Параметрcontrol_scope | Параметр талаптарымодельге байланысты; пайдаланушының функция құралдары қызмет жағында орындалатын құралдардан өзгеше |
Параметрoutput_modalities | Параметр талаптарыtext |
Параметрhosted_operations | Параметр талаптарыfalse |
Параметрmultimodal_input_binding | Параметр талаптарыnull |
Өмірлік цикл: synchronous_or_streamed
Модельдің дәл ID мәнін messages деректерімен бірге жіберіңіз.
Контекст ұзындығы шығыстың жоғарғы шегі емес.
Мәтіндік файл сөзбе-сөз мәтінді бере алады; кіріс суреттері, аудио және файл нысандары дәл байланыстыруды қажет етеді.
Тарифтер
Тариф анықтамасы сұрау мүмкіндіктерін қоспайды. Қолдау көрсетілетін параметрлер таңдалған әдісте берілген.
- Жылдам режим
- Стандартты тариф Жылдам режим таңдалғанда
- Икемді режим
- Стандартты тариф flex режимі таңдалғанда
- Ой қорытудың ең жоғары деңгейі
- Стандартты тариф Ой қорыту деңгейі ең жоғары болып, default түзетуі қолданылғанда
- Ой қорыту деңгейі · high
- Стандартты тариф Ой қорыту деңгейі high болғанда
- Ой қорыту деңгейі · low
- Стандартты тариф Ой қорыту деңгейі low болғанда
- Ой қорыту деңгейі · max
- Стандартты тариф Ой қорыту деңгейі max болғанда
Ailoot мөлшерлемелері
Баптаулар бойынша бағалар
Әр төлемді көрсетілген шарттармен салыстырыңыз. Балама баптаулардың әр жиыны үшін бір мөлшерлемені қолданыңыз.
| Баптау | Мөлшерлемелер кестесі | Контекст токендерінің саны мынадан көп | Контекст токендерінің саны мынадан аспайды, шегі кіреді | Төлем |
|---|---|---|---|---|
| БаптауТокендердің базалық тарифтері | Мөлшерлемелер кестесіНегізгі мөлшерлеме | Контекст токендерінің саны мынадан көп— | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
| БаптауСұрау ұзындығының 1-деңгейі | Мөлшерлемелер кестесі— | Контекст токендерінің саны мынадан көп0 | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
Ailoot сұрау алдында болжамды соманы резервтейді. Нәтижеден кейін өлшенген пайдалану көлемі бойынша қорытынды төлемді шегереді. Ағындық жауап үшін төлем соңғы пайдалану жазбасы негізінде шегеріледі. Резервтеу мен төлемді есептеу тәртібі →
Сұрау мысалдары
Ailoot Ultra · OpenAI чаты
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-flash-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-flash-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-flash-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")
Нәтижелерді алу және сақтау
Ailoot Ultra · OpenAI чаты
json немесе SSE
Барлық дайын нәтижені сақтау
Қайтарылған әр толық жауапты, файлды және мазмұн бөлігін сақтаңыз.
Әр жауап нұсқасын оның мазмұнымен, құрал шақыруларымен және пайымдауымен бірге сақтаңыз. SSE өзгерістерін жауап нұсқасы мен құрал индексі бойынша жинап, соңғы аяқталу себебі мен пайдалану деректерін сақтаңыз.
Бастапқы жауапты тексеру қажет болса
Сұрау мен жауаптың ID мәндерін және тақырыптарын сақтаңыз. Мәтіндік тапсырманы алуға арналған ортақ URL берілмеген.
Жауап өрістері
| Өріс | Түрі |
|---|---|
Өрісchoices[].index | Түріinteger |
Өрісchoices[].message.content | Түріstring|null |
Өрісchoices[].message.tool_calls | Түріtool_call[] |
Өрісchoices[].message.reasoning_content | Түріstring |
Өрісchoices[].message.reasoning_details | Түріobject|array |
Өрісchoices[].finish_reason | Түріstring|null |
Өрісusage | Түріobject |
Қателер және келесі қадамдар
| Жауап | Шарт | Келесі қадам |
|---|---|---|
Жауап400 · invalid_request_error | ШартМіндетті өрістер, материалды ұсыну тәсілі немесе параметр мәні қате | Келесі қадамЖаңадан жасау сұрауын жібермес бұрын көрсетілген өрістерді түзетіңіз. |
Балама атаулар
Модельдердің балама атаулары
Ailoot glm-5.3-flash, glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5-turbo, glm-flash, glm-flash-latest, z-ai/glm-5.3-flash
Ailoot Ultra glm-5.3-flash, z-ai/glm-5.3-flash, ~z-ai/glm-flash-latest
Әдіс жолдарының балама атаулары
/chat/completions
Шақыруға арналған байланысты ID
z-ai/glm-5.3-flash, z-ai/glm-5.3-flash, glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5-turbo, glm-flash, glm-flash-latest, ~z-ai/glm-flash-latest, glm-5.3-flash, glm-5.3-flash
Ailoot Ultra · Anthropic хабарламалары POST /v1/messages ~z-ai/glm-flash-latest
~z-ai/glm-flash-latestglm-5.3-flashz-ai/glm-5.3-flash~z-ai/glm-flash-latest
Бастау
GLM 5.3 Flash — визуалды әзірлеуге, құжат талдауға және мәтіндік нәтиже беретін агенттік жұмысқа арналған Z.ai мультимодальды моделі.
- Қабылданатын кіріс деректері
- Мәтін
- Нәтижелер
- json · sse
Ailoot жүйесінде қолжетімді · кіріс деректері мен әдістер
Ailoot Ultra · Anthropic хабарламалары POST /v1/messages
- Кіріс
text- Шығыс
json,sse- Шығыс пішімі
- JSON немесе SSE
| Өріс | Түрі | Талап | Мәндер мен шектеулер | Әдепкі |
|---|---|---|---|---|
Өрісmodel | Түріstring | ТалапМіндетті | Мәндер мен шектеулер ~z-ai/glm-flash-latest | Әдепкі— |
Өрісmessages | Түріmessage[] | ТалапМіндетті | Мәндер мен шектеулер | Әдепкі— |
Өрісmessages[].role | Түріstring | ТалапМіндетті | Мәндер мен шектеулер user, assistant | Әдепкі— |
Өрісmessages[].content | Түріstring | ТалапМіндетті | Мәндер мен шектеулер | Әдепкі— |
Өрісmax_tokens | Түріinteger | ТалапМіндетті | Мәндер мен шектеулер | Әдепкі— |
Өрісstream | Түріboolean | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкіfalse |
Кіріс материалдарының үйлесімдері
Мәтін · UTF-8 мәтіні
messages[].content жолы
Әдіс параметрлері мен өмірлік циклі
| Параметр | Параметр талаптары |
|---|---|
Параметрcontent_type | Параметр талаптарыapplication/json |
Параметрrequired | Параметр талаптарыmodel, messages, max_tokens |
Параметрoptional_controls | Параметр талаптарыstream |
Параметрmaterial_types | Параметр талаптарыtext |
Параметрtext_file_material | Параметр талаптарыНақты UTF-8 құжатын оқып, оның мәтінін көрсетілген кіріс жолына немесе хабарлама мазмұнының жолына қойыңыз. |
Өмірлік цикл: synchronous_or_streamed
Тарифтер
Тариф анықтамасы сұрау мүмкіндіктерін қоспайды. Қолдау көрсетілетін параметрлер таңдалған әдісте берілген.
- Жылдам режим
- Стандартты тариф Жылдам режим таңдалғанда
- Икемді режим
- Стандартты тариф flex режимі таңдалғанда
- Ой қорытудың ең жоғары деңгейі
- Стандартты тариф Ой қорыту деңгейі ең жоғары болып, default түзетуі қолданылғанда
- Ой қорыту деңгейі · high
- Стандартты тариф Ой қорыту деңгейі high болғанда
- Ой қорыту деңгейі · low
- Стандартты тариф Ой қорыту деңгейі low болғанда
- Ой қорыту деңгейі · max
- Стандартты тариф Ой қорыту деңгейі max болғанда
Ailoot мөлшерлемелері
Баптаулар бойынша бағалар
Әр төлемді көрсетілген шарттармен салыстырыңыз. Балама баптаулардың әр жиыны үшін бір мөлшерлемені қолданыңыз.
| Баптау | Мөлшерлемелер кестесі | Контекст токендерінің саны мынадан көп | Контекст токендерінің саны мынадан аспайды, шегі кіреді | Төлем |
|---|---|---|---|---|
| БаптауТокендердің базалық тарифтері | Мөлшерлемелер кестесіНегізгі мөлшерлеме | Контекст токендерінің саны мынадан көп— | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
| БаптауСұрау ұзындығының 1-деңгейі | Мөлшерлемелер кестесі— | Контекст токендерінің саны мынадан көп0 | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.0003 / 1K токен Шығыс · Шығыс токендері $0.001 / 1K токен Кіріс · Кэшті оқу $0.00006 / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
Ailoot сұрау алдында болжамды соманы резервтейді. Нәтижеден кейін өлшенген пайдалану көлемі бойынша қорытынды төлемді шегереді. Ағындық жауап үшін төлем соңғы пайдалану жазбасы негізінде шегеріледі. Резервтеу мен төлемді есептеу тәртібі →
Сұрау мысалдары
Ailoot Ultra · Anthropic хабарламалары
{
"model": "~z-ai/glm-flash-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-flash-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-flash-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))
Нәтижелерді алу және сақтау
Ailoot Ultra · Anthropic хабарламалары
JSON немесе SSE
Барлық дайын нәтижені сақтау
Қайтарылған әр толық жауапты, файлды және мазмұн бөлігін сақтаңыз.
Барлық мазмұн блоктарын, пайымдау қолтаңбаларын және құрал қолданудың нақты ID мәндерін сақтаңыз. SSE блоктарының барлық өзгерістерін жинаңыз; алғашқы мәтіндік блок толық шығыс емес.
Бастапқы жауапты тексеру қажет болса
Сұрау мен жауаптың ID мәндерін және тақырыптарын сақтаңыз. Мәтіндік тапсырманы алуға арналған ортақ URL берілмеген.
Жауап өрістері
| Өріс | Түрі |
|---|---|
Өрісid | Түріstring |
Өрісmodel | Түріstring |
Өрісcontent[] | Түріtext|thinking|tool_use|other content block |
Өрісstop_reason | Түріstring|null |
Өрісusage | Түріobject |
Қателер және келесі қадамдар
| Жауап | Шарт | Келесі қадам |
|---|---|---|
Жауап400 · invalid_request_error | ШартМіндетті өрістер, материалды ұсыну тәсілі немесе параметр мәні қате | Келесі қадамЖаңадан жасау сұрауын жібермес бұрын көрсетілген өрістерді түзетіңіз. |
Балама атаулар
Модельдердің балама атаулары
Ailoot glm-5.3-flash, glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5-turbo, glm-flash, glm-flash-latest, z-ai/glm-5.3-flash
Ailoot Ultra glm-5.3-flash, z-ai/glm-5.3-flash, ~z-ai/glm-flash-latest
Әдіс жолдарының балама атаулары
/chat/completions
Шақыруға арналған байланысты ID
z-ai/glm-5.3-flash, z-ai/glm-5.3-flash, glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5-turbo, glm-flash, glm-flash-latest, ~z-ai/glm-flash-latest, glm-5.3-flash, glm-5.3-flash
FAQ · z-ai/glm-5.3-flash
- Қандай кіріс деректері мен нәтижелер қолжетімді?
POST /v1/messages·glm-5.3-flash:text,image→textPOST /v1/responses·glm-5.3-flash:text,image→textPOST /v1/chat/completions·glm-5.3-flash:text,image→textPOST /v1/chat/completions·glm-5.3-flash:text→textPOST /v1/messages·glm-5.3-flash:text→json,ssePOST /v1/messages·glm-4.5:text,image→textPOST /v1/responses·glm-4.5:text,image→textPOST /v1/chat/completions·glm-4.5:text,image→textPOST /v1/messages·glm-4.5-air:text,image→textPOST /v1/responses·glm-4.5-air:text,image→textPOST /v1/chat/completions·glm-4.5-air:text,image→textPOST /v1/messages·glm-4.6:text,image→textPOST /v1/responses·glm-4.6:text,image→textPOST /v1/chat/completions·glm-4.6:text,image→textPOST /v1/messages·glm-4.7:text→textPOST /v1/responses·glm-4.7:text→textPOST /v1/chat/completions·glm-4.7:text→textPOST /v1/messages·glm-5-turbo:text,image→textPOST /v1/responses·glm-5-turbo:text,image→textPOST /v1/chat/completions·glm-5-turbo:text,image→textPOST /v1/messages·glm-flash:text,image→textPOST /v1/responses·glm-flash:text,image→textPOST /v1/chat/completions·glm-flash:text,image→textPOST /v1/messages·glm-flash-latest:text,image→textPOST /v1/responses·glm-flash-latest:text,image→textPOST /v1/chat/completions·glm-flash-latest:text,image→textPOST /v1/messages·z-ai/glm-5.3-flash:text→textPOST /v1/chat/completions·z-ai/glm-5.3-flash:text→textPOST /v1/chat/completions·z-ai/glm-5.3-flash:text→textPOST /v1/messages·z-ai/glm-5.3-flash:text→json,ssePOST /v1/chat/completions·~z-ai/glm-flash-latest:text→textPOST /v1/messages·~z-ai/glm-flash-latest:text→json,sse- Сұрау қандай өрістерді пайдаланады?
POST /v1/messages·glm-5.3-flash:model,messages,system,max_tokens,stream,metadataPOST /v1/responses·glm-5.3-flash:model,input,instructions,streamPOST /v1/chat/completions·glm-5.3-flash:model,messages,streamPOST /v1/chat/completions·glm-5.3-flash:model,messages,streamPOST /v1/messages·glm-5.3-flash:model,messages,max_tokens,streamPOST /v1/messages·glm-4.5:model,messages,system,max_tokens,stream,metadataPOST /v1/responses·glm-4.5:model,input,instructions,streamPOST /v1/chat/completions·glm-4.5:model,messages,streamPOST /v1/messages·glm-4.5-air:model,messages,system,max_tokens,stream,metadataPOST /v1/responses·glm-4.5-air:model,input,instructions,streamPOST /v1/chat/completions·glm-4.5-air:model,messages,streamPOST /v1/messages·glm-4.6:model,messages,system,max_tokens,stream,metadataPOST /v1/responses·glm-4.6:model,input,instructions,streamPOST /v1/chat/completions·glm-4.6:model,messages,streamPOST /v1/messages·glm-4.7:model,messages,system,max_tokens,stream,metadataPOST /v1/responses·glm-4.7:model,input,instructions,streamPOST /v1/chat/completions·glm-4.7:model,messages,streamPOST /v1/messages·glm-5-turbo:model,messages,system,max_tokens,stream,metadataPOST /v1/responses·glm-5-turbo:model,input,instructions,streamPOST /v1/chat/completions·glm-5-turbo:model,messages,streamPOST /v1/messages·glm-flash:model,messages,system,max_tokens,stream,metadataPOST /v1/responses·glm-flash:model,input,instructions,streamPOST /v1/chat/completions·glm-flash:model,messages,streamPOST /v1/messages·glm-flash-latest:model,messages,system,max_tokens,stream,metadataPOST /v1/responses·glm-flash-latest:model,input,instructions,streamPOST /v1/chat/completions·glm-flash-latest:model,messages,streamPOST /v1/messages·z-ai/glm-5.3-flash:model,messages,system,max_tokens,stream,metadataPOST /v1/chat/completions·z-ai/glm-5.3-flash:model,messages,streamPOST /v1/chat/completions·z-ai/glm-5.3-flash:model,messages,stream,modalities,providerPOST /v1/messages·z-ai/glm-5.3-flash:model,messages,max_tokens,streamPOST /v1/chat/completions·~z-ai/glm-flash-latest:model,messages,stream,modalities,providerPOST /v1/messages·~z-ai/glm-flash-latest:model,messages,max_tokens,stream- Қандай шектеулер қолданылады?
POST /v1/messages·glm-5.3-flash:ctx:1000000;max_out:131072;messages.min_items:1;max_tokens.minimum:1POST /v1/responses·glm-5.3-flash:ctx:1000000;max_out:131072POST /v1/chat/completions·glm-5.3-flash:ctx:1000000;max_out:131072;messages.min_items:1POST /v1/chat/completions·glm-5.3-flash:messages.min_items:1POST /v1/messages·glm-4.5:ctx:1000000;max_out:131072;messages.min_items:1;max_tokens.minimum:1POST /v1/responses·glm-4.5:ctx:1000000;max_out:131072POST /v1/chat/completions·glm-4.5:ctx:1000000;max_out:131072;messages.min_items:1POST /v1/messages·glm-4.5-air:ctx:1000000;max_out:131072;messages.min_items:1;max_tokens.minimum:1POST /v1/responses·glm-4.5-air:ctx:1000000;max_out:131072POST /v1/chat/completions·glm-4.5-air:ctx:1000000;max_out:131072;messages.min_items:1POST /v1/messages·glm-4.6:ctx:1000000;max_out:131072;messages.min_items:1;max_tokens.minimum:1POST /v1/responses·glm-4.6:ctx:1000000;max_out:131072POST /v1/chat/completions·glm-4.6:ctx:1000000;max_out:131072;messages.min_items:1POST /v1/messages·glm-4.7:ctx:1000000;max_out:131072;messages.min_items:1;max_tokens.minimum:1POST /v1/responses·glm-4.7:ctx:1000000;max_out:131072POST /v1/chat/completions·glm-4.7:ctx:1000000;max_out:131072;messages.min_items:1POST /v1/messages·glm-5-turbo:ctx:1000000;max_out:131072;messages.min_items:1;max_tokens.minimum:1POST /v1/responses·glm-5-turbo:ctx:1000000;max_out:131072POST /v1/chat/completions·glm-5-turbo:ctx:1000000;max_out:131072;messages.min_items:1POST /v1/messages·glm-flash:ctx:1000000;max_out:131072;messages.min_items:1;max_tokens.minimum:1POST /v1/responses·glm-flash:ctx:1000000;max_out:131072POST /v1/chat/completions·glm-flash:ctx:1000000;max_out:131072;messages.min_items:1POST /v1/messages·glm-flash-latest:ctx:1000000;max_out:131072;messages.min_items:1;max_tokens.minimum:1POST /v1/responses·glm-flash-latest:ctx:1000000;max_out:131072POST /v1/chat/completions·glm-flash-latest:ctx:1000000;max_out:131072;messages.min_items:1POST /v1/messages·z-ai/glm-5.3-flash:ctx:1048576;max_out:32768;messages.min_items:1;max_tokens.minimum:1POST /v1/chat/completions·z-ai/glm-5.3-flash:ctx:4096;max_out:1024;messages.min_items:1POST /v1/chat/completions·z-ai/glm-5.3-flash:messages.min_items:1POST /v1/chat/completions·~z-ai/glm-flash-latest:messages.min_items:1