Anthropic: Claude Sonnet 4.6
Claude Sonnet 4.6 әзірлеуге, ұзақ құжаттарды түсінуге, жоспарлауға және визуалды деректері бар міндеттерге көмектеседі. Бейімделетін пайымдауды және құралдармен көпқадамды жұмысты қолдайды.
- Ailoot · Anthropic хабарламалары
POST /v1/messagesclaude-sonnet-4-6 - Ailoot · OpenAI Responses
POST /v1/responsesclaude-sonnet-4-6 - Ailoot · OpenAI чаты
POST /v1/chat/completionsclaude-sonnet-4-6 - Ailoot Ultra · OpenAI чаты
POST /v1/chat/completionsanthropic/claude-sonnet-4.6 - Ailoot Ultra · Anthropic хабарламалары
POST /v1/messagesanthropic/claude-sonnet-4.6
Модель туралы
Бұл сипаттама модель мүмкіндіктерін қамтиды. Ailoot жүйесінде таңдалған әдіс үшін қолжетімді кіріс, шығыс және параметрлер төменде берілген.
Код, құжаттар және әрекет жоспары
Claude Sonnet 4.6 бағдарламалауды, үлкен контекстті түсінуді, агенттік жоспарлауды, ақпаратпен кәсіби жұмысты және дизайнды біріктіреді. Anthropic өзгерістер енгізуге дейін кодты зерттеуді және тапсырманың бірнеше қадамымен бірізді жұмыс істеу қабілетін атап көрсетеді. Бұл ірі жобадағы мәселені іздегенде, ұзақ құжатты талдағанда және есеп мазмұнын дайындағанда пайдалы.
Модель бір сұрауда шарттардан, зерттеу жұмыстарынан және басқа материалдардан мәліметтерді талдай алады. Міндет фактілерді алуды, соларға сүйеніп пайымдауды және бірнеше бөлікті біріктіретін нәтиже құрастыруды қамтуы мүмкін. Сипатталған бағыттарда қаржылық талдау және композиция мен рәсімдеуге назар аударып интерфейс кодын жасау да бар.
Визуалды ортадағы әрекеттер
Sonnet 4.6 мәтін мен суреттерді түсінеді; өз нәтижесі — мәтін. Anthropic модель экран суретіне қарап бағдарланатын, тінтуір мен пернетақта әрекеттерін таңдайтын, күрделі кестені немесе веб-форма қадамдарының тізбегін талдайтын компьютерлік сценарийлерді сипаттайды. Нақты орындау үшін экранды жіберіп, әрекеттерді орындайтын қолданба құралдары қажет.
Өндірушідегі кәдімгі визуалды кіріс форматтары: JPEG/PNG/GIF/WebP, анимацияның бірінші кадры. Төл талдауда: ұзын қабырға — 1568 пиксель, 1568 визуалды токен; үлкен суреттер талдауға дейін кішірейтіледі. Файлдар мен параметрлерді қолдау қолданба әдісіне байланысты.
Сол сияқты құжаттар, кестелер мен презентациялар талдау немесе мазмұн дайындау нысаны болуы мүмкін, бірақ дайын файлды шығару тиісті ортаны қажет етеді. Суреттер графиктерді, сызбаларды және материалдардың визуалды құрылымын түсінуге көмектеседі; бұл модельді сурет генераторына айналдырмайды.
Талдау қалай реттеледі
Бұл нұсқа үшін бейімделетін пайымдау және қолмен басқарылатын extended thinking қолдау табады. Қолмен басқарылатын режим ескіріп бара жатқан тәсіл деп белгіленген; бейімделетін режим модельге, соның ішінде құралдарға жүгінулер арасында, қосымша талдаудың қашан пайдалы екенін таңдауға мүмкіндік береді. effort деңгейлері — low, medium, high және max, стандарттысы — high. Anthropic дерегіне сәйкес, күш-жігерді таңдау жұмыс егжей-тегжейлілігі мен кідірісті міндет сипатына сәйкестендіруге көмектеседі.
Ағымдағы спецификация 1 млн токендік контекстті және кәдімгі режимде 128 мың токенге дейінгі жауапты белгілейді. Ұзақ жұмыс үшін өндіруші ескі контекстті қысқаша мазмұнға эксперименттік қысуды да сипаттайды. Бұл функция қолданба қолдауын қажет етеді және модель терезесінің шектеулерін жоймайды.
Жұмыста нені ескеру керек
Кіріктірілген білімнің сенімді шекарасы — 2025 жылғы тамыз. Кейінгі мәліметтер үшін тапсырма материалдары немесе қолжетімді іздеу қажет. Қосылған құралдар ақпарат іздеуге, код орындауға және табылған мазмұнды өңдеуге көмектесе алады; олардың болуы мен рұқсат етілген әрекеттерді қолданба анықтайды.
Sonnet 4.6 сыртқы материалдардағы жасырын зиянды нұсқауларға қарсы тұруға үйретілген, бірақ күрделі визуалды орта мен бірмәнді емес тапсырмалар бәрібір қателерге әкелуі мүмкін. Міндетке нақты талаптар қою, алынған фактілерді тексеру және әрекет нәтижесін бағалау модельмен сенімді жұмыстың бір бөлігі болып қалады.
Практикалық тапсырма
Практикалық тапсырма
Ағылшын тіліндегі техникалық мысал
Turn a report into an action plan
Read these release notes: "Import rejects blank email addresses. Existing records with blank emails still open. The settings page says email is optional. Support has three complaints about contradictory instructions." Prepare an action plan with the user-facing inconsistency, a proposed wording change and checks for new imports versus existing records.Күтілетін нәтиже
A short issue statement, revised settings wording and separate checks for import and existing-record behavior.Нәтижені тексеру
Check that changing the help text is not presented as changing validation or stored records.Ailoot · Anthropic хабарламалары POST /v1/messages claude-sonnet-4-6
claude-sonnet-4-6Бастау
Claude Sonnet 4.6 әзірлеуге, ұзақ құжаттарды түсінуге, жоспарлауға және визуалды деректері бар міндеттерге көмектеседі. Бейімделетін пайымдауды және құралдармен көпқадамды жұмысты қолдайды.
- Қабылданатын кіріс деректері
- Мәтін · Суреттер
- Нәтижелер
- Мәтін
Ailoot жүйесінде қолжетімді · кіріс деректері мен әдістер
Ailoot · Anthropic хабарламалары POST /v1/messages
- Кіріс
text,image- Шығыс
text- Контекст
- 1 000 000 tokens
- Ең үлкен шығыс
- 131 072 tokens
- Шығыс пішімі
- json немесе SSE
| Өріс | Түрі | Талап | Мәндер мен шектеулер | Әдепкі |
|---|---|---|---|---|
Өрісmodel | Түріstring | ТалапМіндетті | Мәндер мен шектеулер claude-sonnet-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,003 $ / 1K
- Шығыс
- 0,015 $ / 1K
- Кэшті оқу
- 0,0003 $ / 1K
- Кэшке жазу
- 0,00375 $ / 1K
- Кэшке жазу, 5 мин
- 0,00375 $ / 1K tokens
- Кэшке жазу, 1 сағ
- 0,006 $ / 1K tokens
- web_search_call
- 0,01 $ әр шақыру үшін
- Шақырулардың ең көп саны: web_search_call
- 8
Ailoot сұрау алдында болжамды соманы резервтейді. Нәтижеден кейін өлшенген пайдалану көлемі бойынша қорытынды төлемді шегереді. Ағындық жауап үшін төлем соңғы пайдалану жазбасы негізінде шегеріледі. Резервтеу мен төлемді есептеу тәртібі →
Анықтамалық тариф мәліметтері
Модельдің анықтамалық кестелері әдіс таңдауын, баға есебін не төлемді өзгертпейді. Қолданыстағы төлемдер таңдалған Ailoot әдісінің мөлшерлемелерімен есептеледі.
Модельдің анықтамалық кестелері
Баптаулар бойынша бағалар
Әр төлемді көрсетілген шарттармен салыстырыңыз. Балама баптаулардың әр жиыны үшін бір мөлшерлемені қолданыңыз.
| Баптау | Мөлшерлемелер кестесі | Контекст токендерінің саны мынадан көп | Контекст токендерінің саны мынадан аспайды, шегі кіреді | Төлем |
|---|---|---|---|---|
| БаптауOpenAI Chat · Токендердің базалық тарифтері | Мөлшерлемелер кестесіНегізгі мөлшерлеме | Контекст токендерінің саны мынадан көп— | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.006 / 1K токен Шығыс · Шығыс токендері $0.03 / 1K токен Кіріс · Кэшті оқу $0.0006 / 1K токен Кіріс · Кэшке жазу $0.0075 / 1K токен Кіріс · Кэшке жазу, 1 сағ $0.012 / 1K токен |
| БаптауOpenAI Chat · Сұрау ұзындығы бойынша 1-деңгей | Мөлшерлемелер кестесі— | Контекст токендерінің саны мынадан көп0 | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.006 / 1K токен Шығыс · Шығыс токендері $0.03 / 1K токен Кіріс · Кэшті оқу $0.0006 / 1K токен Кіріс · Кэшке жазу $0.0075 / 1K токен Кіріс · Кэшке жазу, 1 сағ $0.012 / 1K токен |
| БаптауAnthropic Messages · Токендердің базалық тарифтері | Мөлшерлемелер кестесіНегізгі мөлшерлеме | Контекст токендерінің саны мынадан көп— | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.006 / 1K токен Шығыс · Шығыс токендері $0.03 / 1K токен Кіріс · Кэшті оқу $0.0006 / 1K токен Кіріс · Кэшке жазу $0.0075 / 1K токен Кіріс · Кэшке жазу, 1 сағ $0.012 / 1K токен |
| БаптауAnthropic Messages · Сұрау ұзындығы бойынша 1-деңгей | Мөлшерлемелер кестесі— | Контекст токендерінің саны мынадан көп0 | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.006 / 1K токен Шығыс · Шығыс токендері $0.03 / 1K токен Кіріс · Кэшті оқу $0.0006 / 1K токен Кіріс · Кэшке жазу $0.0075 / 1K токен Кіріс · Кэшке жазу, 1 сағ $0.012 / 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": "claude-sonnet-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": "claude-sonnet-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="claude-sonnet-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: "claude-sonnet-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='claude-sonnet-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 claude-sonnet-4-6
Ailoot Ultra anthropic/claude-sonnet-4.6
Әдіс жолдарының балама атаулары
Жоғарыда көрсетілген әдіс жолдарын пайдаланыңыз.
Шақыруға арналған байланысты ID
Ailoot · OpenAI Responses POST /v1/responses claude-sonnet-4-6
claude-sonnet-4-6Бастау
Claude Sonnet 4.6 әзірлеуге, ұзақ құжаттарды түсінуге, жоспарлауға және визуалды деректері бар міндеттерге көмектеседі. Бейімделетін пайымдауды және құралдармен көпқадамды жұмысты қолдайды.
- Қабылданатын кіріс деректері
- Мәтін · Суреттер
- Нәтижелер
- Мәтін
Ailoot жүйесінде қолжетімді · кіріс деректері мен әдістер
Ailoot · OpenAI Responses POST /v1/responses
- Кіріс
text,image- Шығыс
text- Контекст
- 1 000 000 tokens
- Ең үлкен шығыс
- 131 072 tokens
- Шығыс пішімі
- json немесе SSE
| Өріс | Түрі | Талап | Мәндер мен шектеулер | Әдепкі |
|---|---|---|---|---|
Өрісmodel | Түріstring | ТалапМіндетті | Мәндер мен шектеулер claude-sonnet-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,003 $ / 1K
- Шығыс
- 0,015 $ / 1K
- Кэшті оқу
- 0,0003 $ / 1K
- Кэшке жазу
- 0,00375 $ / 1K
- Кэшке жазу, 5 мин
- 0,00375 $ / 1K tokens
- Кэшке жазу, 1 сағ
- 0,006 $ / 1K tokens
- web_search_call
- 0,01 $ әр шақыру үшін
- Шақырулардың ең көп саны: web_search_call
- 8
Ailoot сұрау алдында болжамды соманы резервтейді. Нәтижеден кейін өлшенген пайдалану көлемі бойынша қорытынды төлемді шегереді. Ағындық жауап үшін төлем соңғы пайдалану жазбасы негізінде шегеріледі. Резервтеу мен төлемді есептеу тәртібі →
Анықтамалық тариф мәліметтері
Модельдің анықтамалық кестелері әдіс таңдауын, баға есебін не төлемді өзгертпейді. Қолданыстағы төлемдер таңдалған Ailoot әдісінің мөлшерлемелерімен есептеледі.
Модельдің анықтамалық кестелері
Баптаулар бойынша бағалар
Әр төлемді көрсетілген шарттармен салыстырыңыз. Балама баптаулардың әр жиыны үшін бір мөлшерлемені қолданыңыз.
| Баптау | Мөлшерлемелер кестесі | Контекст токендерінің саны мынадан көп | Контекст токендерінің саны мынадан аспайды, шегі кіреді | Төлем |
|---|---|---|---|---|
| БаптауOpenAI Chat · Токендердің базалық тарифтері | Мөлшерлемелер кестесіНегізгі мөлшерлеме | Контекст токендерінің саны мынадан көп— | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.006 / 1K токен Шығыс · Шығыс токендері $0.03 / 1K токен Кіріс · Кэшті оқу $0.0006 / 1K токен Кіріс · Кэшке жазу $0.0075 / 1K токен Кіріс · Кэшке жазу, 1 сағ $0.012 / 1K токен |
| БаптауOpenAI Chat · Сұрау ұзындығы бойынша 1-деңгей | Мөлшерлемелер кестесі— | Контекст токендерінің саны мынадан көп0 | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.006 / 1K токен Шығыс · Шығыс токендері $0.03 / 1K токен Кіріс · Кэшті оқу $0.0006 / 1K токен Кіріс · Кэшке жазу $0.0075 / 1K токен Кіріс · Кэшке жазу, 1 сағ $0.012 / 1K токен |
| БаптауAnthropic Messages · Токендердің базалық тарифтері | Мөлшерлемелер кестесіНегізгі мөлшерлеме | Контекст токендерінің саны мынадан көп— | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.006 / 1K токен Шығыс · Шығыс токендері $0.03 / 1K токен Кіріс · Кэшті оқу $0.0006 / 1K токен Кіріс · Кэшке жазу $0.0075 / 1K токен Кіріс · Кэшке жазу, 1 сағ $0.012 / 1K токен |
| БаптауAnthropic Messages · Сұрау ұзындығы бойынша 1-деңгей | Мөлшерлемелер кестесі— | Контекст токендерінің саны мынадан көп0 | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.006 / 1K токен Шығыс · Шығыс токендері $0.03 / 1K токен Кіріс · Кэшті оқу $0.0006 / 1K токен Кіріс · Кэшке жазу $0.0075 / 1K токен Кіріс · Кэшке жазу, 1 сағ $0.012 / 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": "claude-sonnet-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": "claude-sonnet-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="claude-sonnet-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: "claude-sonnet-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="claude-sonnet-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 claude-sonnet-4-6
Ailoot Ultra anthropic/claude-sonnet-4.6
Әдіс жолдарының балама атаулары
Жоғарыда көрсетілген әдіс жолдарын пайдаланыңыз.
Шақыруға арналған байланысты ID
Ailoot · OpenAI чаты POST /v1/chat/completions claude-sonnet-4-6
claude-sonnet-4-6Бастау
Claude Sonnet 4.6 әзірлеуге, ұзақ құжаттарды түсінуге, жоспарлауға және визуалды деректері бар міндеттерге көмектеседі. Бейімделетін пайымдауды және құралдармен көпқадамды жұмысты қолдайды.
- Қабылданатын кіріс деректері
- Мәтін · Суреттер
- Нәтижелер
- Мәтін
Ailoot жүйесінде қолжетімді · кіріс деректері мен әдістер
Ailoot · OpenAI чаты POST /v1/chat/completions
- Кіріс
text,image- Шығыс
text- Контекст
- 1 000 000 tokens
- Ең үлкен шығыс
- 131 072 tokens
- Шығыс пішімі
- json немесе SSE
| Өріс | Түрі | Талап | Мәндер мен шектеулер | Әдепкі |
|---|---|---|---|---|
Өрісmodel | Түріstring | ТалапМіндетті | Мәндер мен шектеулер claude-sonnet-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,003 $ / 1K
- Шығыс
- 0,015 $ / 1K
- Кэшті оқу
- 0,0003 $ / 1K
- Кэшке жазу
- 0,00375 $ / 1K
- Кэшке жазу, 5 мин
- 0,00375 $ / 1K tokens
- Кэшке жазу, 1 сағ
- 0,006 $ / 1K tokens
- web_search_call
- 0,01 $ әр шақыру үшін
- Шақырулардың ең көп саны: web_search_call
- 8
Ailoot сұрау алдында болжамды соманы резервтейді. Нәтижеден кейін өлшенген пайдалану көлемі бойынша қорытынды төлемді шегереді. Ағындық жауап үшін төлем соңғы пайдалану жазбасы негізінде шегеріледі. Резервтеу мен төлемді есептеу тәртібі →
Анықтамалық тариф мәліметтері
Модельдің анықтамалық кестелері әдіс таңдауын, баға есебін не төлемді өзгертпейді. Қолданыстағы төлемдер таңдалған Ailoot әдісінің мөлшерлемелерімен есептеледі.
Модельдің анықтамалық кестелері
Баптаулар бойынша бағалар
Әр төлемді көрсетілген шарттармен салыстырыңыз. Балама баптаулардың әр жиыны үшін бір мөлшерлемені қолданыңыз.
| Баптау | Мөлшерлемелер кестесі | Контекст токендерінің саны мынадан көп | Контекст токендерінің саны мынадан аспайды, шегі кіреді | Төлем |
|---|---|---|---|---|
| БаптауOpenAI Chat · Токендердің базалық тарифтері | Мөлшерлемелер кестесіНегізгі мөлшерлеме | Контекст токендерінің саны мынадан көп— | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.006 / 1K токен Шығыс · Шығыс токендері $0.03 / 1K токен Кіріс · Кэшті оқу $0.0006 / 1K токен Кіріс · Кэшке жазу $0.0075 / 1K токен Кіріс · Кэшке жазу, 1 сағ $0.012 / 1K токен |
| БаптауOpenAI Chat · Сұрау ұзындығы бойынша 1-деңгей | Мөлшерлемелер кестесі— | Контекст токендерінің саны мынадан көп0 | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.006 / 1K токен Шығыс · Шығыс токендері $0.03 / 1K токен Кіріс · Кэшті оқу $0.0006 / 1K токен Кіріс · Кэшке жазу $0.0075 / 1K токен Кіріс · Кэшке жазу, 1 сағ $0.012 / 1K токен |
| БаптауAnthropic Messages · Токендердің базалық тарифтері | Мөлшерлемелер кестесіНегізгі мөлшерлеме | Контекст токендерінің саны мынадан көп— | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.006 / 1K токен Шығыс · Шығыс токендері $0.03 / 1K токен Кіріс · Кэшті оқу $0.0006 / 1K токен Кіріс · Кэшке жазу $0.0075 / 1K токен Кіріс · Кэшке жазу, 1 сағ $0.012 / 1K токен |
| БаптауAnthropic Messages · Сұрау ұзындығы бойынша 1-деңгей | Мөлшерлемелер кестесі— | Контекст токендерінің саны мынадан көп0 | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.006 / 1K токен Шығыс · Шығыс токендері $0.03 / 1K токен Кіріс · Кэшті оқу $0.0006 / 1K токен Кіріс · Кэшке жазу $0.0075 / 1K токен Кіріс · Кэшке жазу, 1 сағ $0.012 / 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": "claude-sonnet-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": "claude-sonnet-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="claude-sonnet-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: "claude-sonnet-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='claude-sonnet-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 claude-sonnet-4-6
Ailoot Ultra anthropic/claude-sonnet-4.6
Әдіс жолдарының балама атаулары
Жоғарыда көрсетілген әдіс жолдарын пайдаланыңыз.
Шақыруға арналған байланысты ID
Ailoot Ultra · OpenAI чаты POST /v1/chat/completions anthropic/claude-sonnet-4.6
anthropic/claude-sonnet-4.6Бастау
Claude Sonnet 4.6 әзірлеуге, ұзақ құжаттарды түсінуге, жоспарлауға және визуалды деректері бар міндеттерге көмектеседі. Бейімделетін пайымдауды және құралдармен көпқадамды жұмысты қолдайды.
- Қабылданатын кіріс деректері
- Мәтін
- Нәтижелер
- Мәтін
Ailoot жүйесінде қолжетімді · кіріс деректері мен әдістер
Ailoot Ultra · OpenAI чаты POST /v1/chat/completions
- Кіріс
text- Шығыс
text- Шығыс пішімі
- json немесе SSE
| Өріс | Түрі | Талап | Мәндер мен шектеулер | Әдепкі |
|---|---|---|---|---|
Өрісmodel | Түріstring | ТалапМіндетті | Мәндер мен шектеулер anthropic/claude-sonnet-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 | ТалапМіндетті емес | Мәндер мен шектеулер 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 болғанда
- Ой қорыту деңгейі · medium
- Стандартты тариф Ой қорыту деңгейі medium болғанда
Ailoot мөлшерлемелері
Баптаулар бойынша бағалар
Әр төлемді көрсетілген шарттармен салыстырыңыз. Балама баптаулардың әр жиыны үшін бір мөлшерлемені қолданыңыз.
| Баптау | Мөлшерлемелер кестесі | Контекст токендерінің саны мынадан көп | Контекст токендерінің саны мынадан аспайды, шегі кіреді | Төлем |
|---|---|---|---|---|
| БаптауТокендердің базалық тарифтері | Мөлшерлемелер кестесіНегізгі мөлшерлеме | Контекст токендерінің саны мынадан көп— | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.006 / 1K токен Шығыс · Шығыс токендері $0.03 / 1K токен Кіріс · Кэшті оқу $0.0006 / 1K токен Кіріс · Кэшке жазу $0.0075 / 1K токен Кіріс · Кэшке жазу, 1 сағ $0.012 / 1K токен |
| БаптауСұрау ұзындығының 1-деңгейі | Мөлшерлемелер кестесі— | Контекст токендерінің саны мынадан көп0 | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.006 / 1K токен Шығыс · Шығыс токендері $0.03 / 1K токен Кіріс · Кэшті оқу $0.0006 / 1K токен Кіріс · Кэшке жазу $0.0075 / 1K токен Кіріс · Кэшке жазу, 1 сағ $0.012 / 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": "anthropic/claude-sonnet-4.6", "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='anthropic/claude-sonnet-4.6',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='anthropic/claude-sonnet-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 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 claude-sonnet-4-6
Ailoot Ultra anthropic/claude-sonnet-4.6
Әдіс жолдарының балама атаулары
Жоғарыда көрсетілген әдіс жолдарын пайдаланыңыз.
Шақыруға арналған байланысты ID
Ailoot Ultra · Anthropic хабарламалары POST /v1/messages anthropic/claude-sonnet-4.6
anthropic/claude-sonnet-4.6Бастау
Claude Sonnet 4.6 әзірлеуге, ұзақ құжаттарды түсінуге, жоспарлауға және визуалды деректері бар міндеттерге көмектеседі. Бейімделетін пайымдауды және құралдармен көпқадамды жұмысты қолдайды.
- Қабылданатын кіріс деректері
- Мәтін
- Нәтижелер
- json · sse
Ailoot жүйесінде қолжетімді · кіріс деректері мен әдістер
Ailoot Ultra · Anthropic хабарламалары POST /v1/messages
- Кіріс
text- Шығыс
json,sse- Шығыс пішімі
- JSON немесе SSE
| Өріс | Түрі | Талап | Мәндер мен шектеулер | Әдепкі |
|---|---|---|---|---|
Өрісmodel | Түріstring | ТалапМіндетті | Мәндер мен шектеулер anthropic/claude-sonnet-4.6 | Әдепкі— |
Өріс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 болғанда
- Ой қорыту деңгейі · medium
- Стандартты тариф Ой қорыту деңгейі medium болғанда
Ailoot мөлшерлемелері
Баптаулар бойынша бағалар
Әр төлемді көрсетілген шарттармен салыстырыңыз. Балама баптаулардың әр жиыны үшін бір мөлшерлемені қолданыңыз.
| Баптау | Мөлшерлемелер кестесі | Контекст токендерінің саны мынадан көп | Контекст токендерінің саны мынадан аспайды, шегі кіреді | Төлем |
|---|---|---|---|---|
| БаптауТокендердің базалық тарифтері | Мөлшерлемелер кестесіНегізгі мөлшерлеме | Контекст токендерінің саны мынадан көп— | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.006 / 1K токен Шығыс · Шығыс токендері $0.03 / 1K токен Кіріс · Кэшті оқу $0.0006 / 1K токен Кіріс · Кэшке жазу $0.0075 / 1K токен Кіріс · Кэшке жазу, 1 сағ $0.012 / 1K токен |
| БаптауСұрау ұзындығының 1-деңгейі | Мөлшерлемелер кестесі— | Контекст токендерінің саны мынадан көп0 | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.006 / 1K токен Шығыс · Шығыс токендері $0.03 / 1K токен Кіріс · Кэшті оқу $0.0006 / 1K токен Кіріс · Кэшке жазу $0.0075 / 1K токен Кіріс · Кэшке жазу, 1 сағ $0.012 / 1K токен |
Ailoot сұрау алдында болжамды соманы резервтейді. Нәтижеден кейін өлшенген пайдалану көлемі бойынша қорытынды төлемді шегереді. Ағындық жауап үшін төлем соңғы пайдалану жазбасы негізінде шегеріледі. Резервтеу мен төлемді есептеу тәртібі →
Сұрау мысалдары
Ailoot Ultra · Anthropic хабарламалары
{
"model": "anthropic/claude-sonnet-4.6",
"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': 'anthropic/claude-sonnet-4.6', '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': 'anthropic/claude-sonnet-4.6', '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 claude-sonnet-4-6
Ailoot Ultra anthropic/claude-sonnet-4.6
Әдіс жолдарының балама атаулары
Жоғарыда көрсетілген әдіс жолдарын пайдаланыңыз.
Шақыруға арналған байланысты ID
FAQ · Anthropic: Claude Sonnet 4.6
- Қандай кіріс деректері мен нәтижелер қолжетімді?
POST /v1/messages·claude-sonnet-4-6:text,image→textPOST /v1/responses·claude-sonnet-4-6:text,image→textPOST /v1/chat/completions·claude-sonnet-4-6:text,image→textPOST /v1/chat/completions·anthropic/claude-sonnet-4.6:text→textPOST /v1/messages·anthropic/claude-sonnet-4.6:text→json,sse- Сұрау қандай өрістерді пайдаланады?
POST /v1/messages·claude-sonnet-4-6:model,messages,system,max_tokens,stream,metadataPOST /v1/responses·claude-sonnet-4-6:model,input,instructions,streamPOST /v1/chat/completions·claude-sonnet-4-6:model,messages,streamPOST /v1/chat/completions·anthropic/claude-sonnet-4.6:model,messages,stream,modalities,providerPOST /v1/messages·anthropic/claude-sonnet-4.6:model,messages,max_tokens,stream- Қандай шектеулер қолданылады?
POST /v1/messages·claude-sonnet-4-6:ctx:1000000;max_out:131072;messages.min_items:1;max_tokens.minimum:1POST /v1/responses·claude-sonnet-4-6:ctx:1000000;max_out:131072POST /v1/chat/completions·claude-sonnet-4-6:ctx:1000000;max_out:131072;messages.min_items:1POST /v1/chat/completions·anthropic/claude-sonnet-4.6:messages.min_items:1