modellar

Google: Gemini 2.5 Pro

Markdown · JSON

Google: Gemini 2.5 Pro

Gemini 2.5 Pro — Google’ning murakkab kod, matematika, STEM va uzun kontekstli tahlil uchun barqaror fikrlash modeli. U matn, tasvir, audio, video va PDF qabul qilib, vositalar va tuzilgan chiqish bilan matn qaytaradi. Uning dinamik mulohaza limiti 128–32,768 tokenni qo‘llab-quvvatlaydi va uni to‘liq o‘chirib bo‘lmaydi.

Model haqida

Bu tavsif model imkoniyatlarini yoritadi. Ailoot da tanlangan usul uchun mavjud kirish, chiqish va parametrlar quyida keltirilgan.

Gemini 2.5 Pro — Google’ning ilg‘or dasturlash, matematika, STEM va uzun kontekstli tahlil uchun barqaror fikrlash profili. U matn, audio, tasvir, video va butun kod repozitoriylarini tushuna oladi, Gemini API profili esa PDF kirishini ham qabul qiladi. Chiqish — matn, jumladan kod, yozma tahlil yoki tuzilgan yozuv. Foydali topshiriq dalillarni beradi va izohlangan yechim, kod bazasidagi topilma yoki bir nechta hujjatni solishtirish kabi tekshirish mumkin bo‘lgan natijani so‘raydi.

Dasturlash uchun tegishli fayllar, kuzatilgan xatti-harakat va muhim o‘zgarish yoki savolni bering. Uzun kontekst modelga bitta ajratilgan parcha asosida mulohaza yuritish o‘rniga modullarni o‘zaro bog‘lashga yordam berishi mumkin. Kod yo‘lini tekshirish uchun identifikatorni kirish formasidan qayta ishlash va saqlashgacha kuzatishni, dasturiy kontrakt qayerda o‘zgarishini aniqlashni hamda maqsadli tuzatish taklif qilishni so‘rang. Cheklovlarni saqlang va asoslovchi havolalarni so‘rang. Taklif etilgan tuzatishni haqiqiy kod va ulangan vositalar orqali bajarilgan har qanday tekshiruv bilan solishtirish kerak.

Matematik yoki ilmiy tahlil uchun masala, taxminlar, o‘lchov birliklari va javobning zarur shaklini belgilang. Hisob-kitob bog‘liq bo‘lgan ma’lumot yoki chizmalarni bering. Asoslangan natija va uni baholashga imkon beradigan tekshiruvlarni, masalan, chegaraviy holatlar yoki asl qiymatlar bilan solishtirishni so‘rang. Modelning mulohaza yuritish qobiliyati masala shartidagi noaniqlikni yo‘qotmaydi. Noma’lum miqdor yoki asoslanmagan taxminni qulay qiymat bilan almashtirish o‘rniga ochiq ko‘rsating.

Dinamik fikrlash hujjatlashtirilgan standart hisoblanadi. Gemini 2.5 GenerateContent qo‘llanmasi Pro uchun 128 dan 32,768 tokengacha aniq mulohaza limitini yoki moslashuvchan fikrlash uchun -1 qiymatini qo‘llab-quvvatlaydi. Ushbu nashrda fikrlashni to‘liq o‘chirib bo‘lmaydi. Bu boshqaruvlar Flash’ning nol limitli variantidan va Gemini 3 fikrlash darajalari sozlamalaridan farq qiladi. Fikrlash limiti ichki tokenlarning aniq sonini kafolatlashdan ko‘ra mulohazaga yo‘l ko‘rsatadi, javob chegarasi esa yakuniy material uchun ham joy qoldirishi kerak.

Multimodal hujjat ishlarida javobni asoslaydigan sahifalar, grafik, tasvir hududi yoki yozuv hodisasini aniqlang. Amaliy umumlashtirish vazifasi bir nechta manba hujjatlaridagi qarama-qarshi da’volarni, ularni asoslovchi parchalarni va bitta qaror uchun muhim farqlarni so‘rashi mumkin. Modeldan bayon etilgan faktni xulosaviy talqindan ajratishni so‘rang. Video yoki audio uchun natija tavsif, transkript, qisqacha mazmun yoki solishtirish bo‘lishini belgilang. Ushbu profilda tasvir va ovoz matnli natija uchun dalildir.

Aynan shu API sahifasida funksiya chaqirish, kod bajarish, fayl qidirish, qidiruv manbalari bilan asoslash, Maps manbalari bilan asoslash, URL konteksti va tuzilgan chiqishlar hujjatlashtirilgan. Funksiyalar maqsadi va parametr maydonlarini belgilang hamda keyingi suhbat navbatlarida haqiqiy natijalarni saqlang. Sxema bilan cheklangan yozuv uchun majburiy maydonlarni va yetishmayotgan ma’lumot qanday ifodalanishini ko‘rsating. Asosiy arxitektura — multimodal siyrak ekspertlar aralashmasi transformeri; modelning bu tuzilishi o‘z-o‘zidan tashqi vosita bajarilishini yoki qaytarilgan matn yoxud koddan tashqari tayyor ilovani ta’minlamaydi.

Asosiy kartada 1M kirish konteksti va 64K matn chiqishi ko‘rsatilgan; API jadvalida esa 1,048,576 kirish tokeni va 65,536 chiqish tokeni belgilangan. Ko‘rsatmalar, manba mazmuni va saqlangan tarix kirishni tayyorlash hajmiga qo‘shiladi. Maksimal javob limiti mulohaza tokenlarini ham o‘z ichiga oladi, shu sababli haddan tashqari kichik chegara yakuniy javobni uzib qo‘yishi mumkin. Keshlash va paketli ishlov, shuningdek Flex va Priority variantlari hujjatlashtirilgan. Mustaqil uzun kontekstli vazifalarni tayyorlashda har bir manba identifikatori va so‘ralgan yakuniy shaklni saqlang.

Barqaror identifikator umumiy Pro model kartasida alohida muhokama qilingan Experimental va Preview nashrlaridan farq qiladi. Faqat Pro nomi umumiy bo‘lgani uchun ularning versiyaga xos natijalarini ushbu profilga tegishli deb hisoblamang. Kartada mumkin bo‘lgan gallyutsinatsiyalar va sababiy tushunish, murakkab xulosa chiqarish hamda kontrfaktual mulohaza cheklovlari qayd etilgan, bilimlarning oxirgi sanasi esa 2025-yil yanvar deb ko‘rsatilgan. Muhim bo‘lsa dolzarb dalillarni bering, manba havolalari, hisob-kitoblar va taklif etilgan o‘zgartirishlarni tekshiring. Foydali chiqish — vazifa so‘ragan, asoslangan matn yoki kod materiali.

Amaliy vazifa

Amaliy vazifa

Ingliz tilidagi texnik misol

Trace an identifier through storage

Trace this identifier through three excerpts: form sends {customer_id:'0017'}; service computes id=Number(body.customer_id); repository stores String(id). Requirement: preserve leading zeros. Identify where the contract changes, propose a minimal consistent correction and give tests for '0017', '17' and a missing ID. Do not claim the tests were executed.

Kutiladigan natija

A source-path explanation, a proposed patch and a three-case regression-test plan.

Natijani tekshirish

Check that the proposed path preserves distinct strings 0017 and 17 while specifying missing-ID behavior.
Ailoot · Anthropic Messages POST /v1/messages gemini-2.5-pro

gemini-2.5-pro

Google /gemini-2.5-pro

Boshlash

Gemini 2.5 Pro — Google’ning murakkab kod, matematika, STEM va uzun kontekstli tahlil uchun barqaror fikrlash modeli. U matn, tasvir, audio, video va PDF qabul qilib, vositalar va tuzilgan chiqish bilan matn qaytaradi. Uning dinamik mulohaza limiti 128–32,768 tokenni qo‘llab-quvvatlaydi va uni to‘liq o‘chirib bo‘lmaydi.

Qabul qilinadigan kirish ma’lumotlari
Matn · Rasmlar
Natijalar
Matn

Ailoot da mavjud · kirish ma’lumotlari va usullar

Ailoot · Anthropic Messages POST /v1/messages
Kirish
text, image
Chiqish
text
Kontekst
1 048 576 tokens
Eng katta chiqish
65 536 tokens
Chiqish formati
json yoki SSE
MaydonTurTalabQiymatlar va cheklovlarStandart
MaydonmodelTurstringTalabMajburiyQiymatlar va cheklovlar
gemini-2.5-pro
Standart—
MaydonmessagesTurmessage[]TalabMajburiyQiymatlar va cheklovlar
Elementlarning eng kam soni: 1
Standart—
Maydonmessages[].roleTurstringTalabMajburiyQiymatlar va cheklovlar
user, assistant
Standart—
Maydonmessages[].contentTurstring|content_block[]TalabMajburiyQiymatlar va cheklovlarStandart—
MaydonsystemTurstring|content_block[]TalabIxtiyoriyQiymatlar va cheklovlarStandart—
Maydonmax_tokensTurintegerTalabMajburiyQiymatlar va cheklovlar
Eng kam: 1
Cheklov qo‘llanadigan obyekt: Tanlangan model yoki kartaning aniq yuqori chegarasi
Standart—
MaydonstreamTurbooleanTalabIxtiyoriyQiymatlar va cheklovlarStandartfalse
MaydontemperatureTurnumberTalabIxtiyoriyQiymatlar va cheklovlar
Modelga bogʻliq
Standart—
Maydontop_pTurnumberTalabIxtiyoriyQiymatlar va cheklovlar
Modelga bogʻliq
Standart—
Maydonstop_sequencesTurstring[]TalabIxtiyoriyQiymatlar va cheklovlar
Modelga bogʻliq
Standart—
MaydontoolsTurtool[]TalabIxtiyoriyQiymatlar va cheklovlar
Modelga bogʻliq
Standart—
Maydontools[].nameTurstringTalabIxtiyoriyQiymatlar va cheklovlar
Quyidagi holatda qo‘llanadi: Vosita taqdim etilgan
Standart—
Maydontools[].descriptionTurstringTalabIxtiyoriyQiymatlar va cheklovlarStandart—
Maydontools[].input_schemaTurJSON_schemaTalabIxtiyoriyQiymatlar va cheklovlarStandart—
Maydontool_choiceTurobjectTalabIxtiyoriyQiymatlar va cheklovlar
Modelga bogʻliq
Standart—
Maydonthinking.typeTurstringTalabIxtiyoriyQiymatlar va cheklovlar
Modelga bogʻliq
Standart—
Maydonthinking.budget_tokensTurintegerTalabIxtiyoriyQiymatlar va cheklovlar
Modelga bogʻliq
Standart—
Maydonoutput_config.effortTurstringTalabIxtiyoriyQiymatlar va cheklovlar
Modelga bogʻliq
Standart—
MaydonmetadataTurobjectTalabIxtiyoriyQiymatlar va cheklovlarStandart—
Maydoncache_controlTurobjectTalabIxtiyoriyQiymatlar va cheklovlar
Modelga bogʻliq
Standart—
Kirish materiallari birikmalari

Matn · UTF8 matni

messages[].content yoki type=text bloki

Matn + rasm

{type:image,source:{type:base64,media_type,data}} yoki type=url turidagi manba

Usul parametrlari va hayot sikli
ParametrParametr talablari
Parametrmaterial_typesParametr talablaritext, image
ParametrrequiredParametr talablarimodel, messages, max_tokens
Parametroptional_controlsParametr talablarinull
Parametrcontent_typeParametr talablariapplication/json
Parametrtext_file_materialParametr talablariHaqiqiy UTF-8 kontenti matn sifatida kiritiladi; fayl IDlari/URLs uchun alohida aniq qo‘llab-quvvatlash kerak

Hayot sikli: exact retained published method

Metod tuzilishlari va IDlari aniq; yetkazib beruvchining imkoniyati so‘rovni qabul qilishga ruxsatdan alohida.

Tariflar

Ailoot usullari tariflari

Ailoot Anthropic MessagesPOST /v1/messages
Kirish
0,00125 US$ / 1K
Chiqish
0,01 US$ / 1K
Keshdan o‘qish
0,000125 US$ / 1K

So‘rov uzunligiga qarab narxlar · Anthropic Messages

So‘rov hajmi, tokenlardaKirishChiqishKeshdan o‘qishKeshga yozishKesh 5 daqiqaKesh 1 soat
So‘rov hajmi, tokenlarda(0; 200 000]Kirish0,00125 US$Chiqish0,01 US$Keshdan o‘qish0,000125 US$Keshga yozishAsosiy: —Kesh 5 daqiqaAsosiy: —Kesh 1 soatAsosiy: —
So‘rov hajmi, tokenlarda(200 000; ∞)Kirish0,0025 US$Chiqish0,015 US$Keshdan o‘qish0,00025 US$Keshga yozishAsosiy: —Kesh 5 daqiqaAsosiy: —Kesh 1 soatAsosiy: —

1K token uchun USD tariflari. Tarif belgilanmagan bo‘lsa, ushbu usulning asosiy tarifi qo‘llanadi; «—» asosiy tarif belgilanmaganini bildiradi.

Ailoot so‘rovdan oldin taxminiy summani band qiladi. Natijadan keyin o‘lchangan sarf asosidagi yakuniy to‘lovni yechadi. Oqimli javob bo‘yicha yakuniy hisob-kitob yakuniy sarf yozuviga asoslanadi. Summani band qilish va to‘lovni hisoblash tartibi →

Ma’lumot uchun tarif tafsilotlari

Modelning ma’lumot jadvallari usul tanlash, narx hisobi yoki to‘lovlarni o‘zgartirmaydi. Amaldagi to‘lovlar tanlangan Ailoot usuli tariflari bo‘yicha hisoblanadi.

Modelning ma’lumot jadvallari

Sozlamalar bo‘yicha narxlar

Har bir to‘lovni ko‘rsatilgan shartlarga moslang. Har bir muqobil sozlamalar to‘plami uchun bitta tarifdan foydalaning.

SozlamaTariflar jadvaliKontekst tokenlari soni bundan ko‘pKontekst tokenlari soni bundan oshmaydi, chegara kiradiTo‘lov
SozlamaOpenAI Chat · Tokenlar uchun asosiy tariflarTariflar jadvaliAsosiy tarifKontekst tokenlari soni bundan ko‘p—Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘qTo‘lov
Kirish · Kirish tokenlari $0.0025 / 1K token
Chiqish · Chiqish tokenlari $0.02 / 1K token
Kirish · Keshdan o‘qish $0.00025 / 1K token
Kirish · Keshga yozish $0.00075 / 1K token
Kirish · Keshga yozish, 1 soat — / 1K token
Chiqish · Mantiqiy fikrlashning chiqish tokenlari $0.02 / 1K token
SozlamaOpenAI Chat · So‘rov uzunligi bo‘yicha 1-darajaTariflar jadvali—Kontekst tokenlari soni bundan ko‘p0Kontekst tokenlari soni bundan oshmaydi, chegara kiradi200 000To‘lov
Kirish · Kirish tokenlari $0.0025 / 1K token
Chiqish · Chiqish tokenlari $0.02 / 1K token
Kirish · Keshdan o‘qish $0.00025 / 1K token
Kirish · Keshga yozish $0.00075 / 1K token
Kirish · Keshga yozish, 1 soat — / 1K token
SozlamaOpenAI Chat · So‘rov uzunligi bo‘yicha 2-darajaTariflar jadvali—Kontekst tokenlari soni bundan ko‘p200 000Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘qTo‘lov
Kirish · Kirish tokenlari $0.005 / 1K token
Chiqish · Chiqish tokenlari $0.03 / 1K token
Kirish · Keshdan o‘qish $0.0005 / 1K token
Kirish · Keshga yozish $0.00075 / 1K token
Kirish · Keshga yozish, 1 soat — / 1K token
SozlamaAnthropic Messages · Tokenlar uchun asosiy tariflarTariflar jadvaliAsosiy tarifKontekst tokenlari soni bundan ko‘p—Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘qTo‘lov
Kirish · Kirish tokenlari $0.0025 / 1K token
Chiqish · Chiqish tokenlari $0.02 / 1K token
Kirish · Keshdan o‘qish $0.00025 / 1K token
Kirish · Keshga yozish $0.00075 / 1K token
Kirish · Keshga yozish, 1 soat — / 1K token
Chiqish · Mantiqiy fikrlashning chiqish tokenlari $0.02 / 1K token
SozlamaAnthropic Messages · So‘rov uzunligi bo‘yicha 1-darajaTariflar jadvali—Kontekst tokenlari soni bundan ko‘p0Kontekst tokenlari soni bundan oshmaydi, chegara kiradi200 000To‘lov
Kirish · Kirish tokenlari $0.0025 / 1K token
Chiqish · Chiqish tokenlari $0.02 / 1K token
Kirish · Keshdan o‘qish $0.00025 / 1K token
Kirish · Keshga yozish $0.00075 / 1K token
Kirish · Keshga yozish, 1 soat — / 1K token
SozlamaAnthropic Messages · So‘rov uzunligi bo‘yicha 2-darajaTariflar jadvali—Kontekst tokenlari soni bundan ko‘p200 000Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘qTo‘lov
Kirish · Kirish tokenlari $0.005 / 1K token
Chiqish · Chiqish tokenlari $0.03 / 1K token
Kirish · Keshdan o‘qish $0.0005 / 1K token
Kirish · Keshga yozish $0.00075 / 1K token
Kirish · Keshga yozish, 1 soat — / 1K token

So‘rov namunalari

Ailoot · Anthropic Messages

Matn namunasiKirish, rasmPython SDKNode.js SDKPython oqimi
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": "gemini-2.5-pro", "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": "gemini-2.5-pro", "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="gemini-2.5-pro",
    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: "gemini-2.5-pro",
  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='gemini-2.5-pro',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")

Natijalarni olish va saqlash

Ailoot · Anthropic Messages

json yoki SSE

Barcha tayyor natijalarni saqlash

Qaytarilgan har bir to‘liq javob, fayl va kontent qismini saqlang.

Barcha kontent bloklari, fikrlash imzolari va haqiqiy vosita ishlatish IDlarini saqlang. SSE bloklarining barcha o‘zgarish qismlarini yig‘ing; birinchi matn bloki to‘liq chiqish emas.

Asl javobni tekshirish kerak bo‘lsa

So‘rov va javob IDlari hamda sarlavhalarini saqlang. Matn vazifasini olish uchun umumiy URL taqdim etilmagan.

Javob maydonlari
MaydonTur
MaydonidTurstring
MaydonmodelTurstring
Maydoncontent[]Turtext|thinking|tool_use|other content block
Maydonstop_reasonTurstring|null
MaydonusageTurobject
Xatolar va keyingi qadamlar
JavobShartKeyingi qadam
Javob400 · invalid_request_errorShartMajburiy maydonlar, material ifodasi yoki parametr qiymati noto‘g‘riKeyingi qadamYangi yaratish so‘rovidan oldin ko‘rsatilgan maydonlarni tuzating.

Taxalluslar

Model taxalluslari

Ailoot gemini-2.5-pro
Ailoot Ultra gemini-2.5-pro, google/gemini-2.5-pro

Usul yo‘llari taxalluslari

/chat/completions

Chaqirish uchun tegishli ID lar

google/gemini-2.5-pro, gemini-2.5-pro, gemini-2.5-pro

Ailoot · Gemini generateContent POST /v1beta/models/{model}:generateContent gemini-2.5-pro

gemini-2.5-pro

Google /gemini-2.5-pro

Boshlash

Gemini 2.5 Pro — Google’ning murakkab kod, matematika, STEM va uzun kontekstli tahlil uchun barqaror fikrlash modeli. U matn, tasvir, audio, video va PDF qabul qilib, vositalar va tuzilgan chiqish bilan matn qaytaradi. Uning dinamik mulohaza limiti 128–32,768 tokenni qo‘llab-quvvatlaydi va uni to‘liq o‘chirib bo‘lmaydi.

Qabul qilinadigan kirish ma’lumotlari
Matn · Rasmlar
Natijalar
Matn

Ailoot da mavjud · kirish ma’lumotlari va usullar

Ailoot · Gemini generateContent POST /v1beta/models/{model}:generateContent
Kirish
text, image
Chiqish
text
Kontekst
1 048 576 tokens
Eng katta chiqish
65 536 tokens
Chiqish formati
json yoki qo‘llab-quvvatlanadigan oqimli uzatish
MaydonTurTalabQiymatlar va cheklovlarStandart
Maydonpath.modelTurstringTalabMajburiyQiymatlar va cheklovlar
gemini-2.5-pro
Standart—
MaydoncontentsTurcontent[]TalabMajburiyQiymatlar va cheklovlar
Elementlarning eng kam soni: 1
Standart—
Maydoncontents[].roleTurstringTalabIxtiyoriyQiymatlar va cheklovlar
user, model
Standart—
Maydoncontents[].partsTurpart[]TalabMajburiyQiymatlar va cheklovlarStandart—
MaydonsystemInstructionTurcontentTalabIxtiyoriyQiymatlar va cheklovlarStandart—
MaydongenerationConfig.maxOutputTokensTurintegerTalabIxtiyoriyQiymatlar va cheklovlar
Eng kam: 1
Modelga bogʻliq
Standart—
MaydongenerationConfig.temperatureTurnumberTalabIxtiyoriyQiymatlar va cheklovlar
Modelga bogʻliq
Standart—
MaydongenerationConfig.topPTurnumberTalabIxtiyoriyQiymatlar va cheklovlar
Modelga bogʻliq
Standart—
MaydongenerationConfig.topKTurintegerTalabIxtiyoriyQiymatlar va cheklovlar
Modelga bogʻliq
Standart—
MaydongenerationConfig.stopSequencesTurstring[]TalabIxtiyoriyQiymatlar va cheklovlar
Modelga bogʻliq
Standart—
MaydongenerationConfig.thinkingConfig.includeThoughtsTurbooleanTalabIxtiyoriyQiymatlar va cheklovlar
Modelga bogʻliq
Standart—
MaydongenerationConfig.thinkingConfig.thinkingBudgetTurintegerTalabIxtiyoriyQiymatlar va cheklovlar
Modelga bogʻliq
Standart—
Maydontools[].functionDeclarationsTurfunction_declaration[]TalabIxtiyoriyQiymatlar va cheklovlar
Modelga bogʻliq
Standart—
MaydontoolConfig.functionCallingConfig.modeTurstringTalabIxtiyoriyQiymatlar va cheklovlar
Modelga bogʻliq
Standart—
MaydonsafetySettingsTurobject[]TalabIxtiyoriyQiymatlar va cheklovlar
Modelga bogʻliq
Standart—
MaydonsessionIdTurstringTalabIxtiyoriyQiymatlar va cheklovlarStandart—
Kirish materiallari birikmalari

Matn · UTF8 matni

contents[].parts[].text

Matn + rasm

parts[].inlineData={mimeType,data}

Usul parametrlari va hayot sikli
ParametrParametr talablari
Parametrmaterial_typesParametr talablaritext, image
ParametrrequiredParametr talablaricontents
Parametroptional_controlsParametr talablarinull
Parametrcontent_typeParametr talablariapplication/json
Parametrtext_file_materialParametr talablariHaqiqiy UTF-8 kontenti matn sifatida kiritiladi; fayl IDlari/URLs uchun alohida aniq qo‘llab-quvvatlash kerak

Hayot sikli: exact retained published method

Metod tuzilishlari va IDlari aniq; yetkazib beruvchining imkoniyati so‘rovni qabul qilishga ruxsatdan alohida.

Tariflar

Ailoot usullari tariflari

Ailoot Gemini generateContentPOST /v1beta/models/{model}:generateContent
Kirish
0,00125 US$ / 1K
Chiqish
0,01 US$ / 1K
Keshdan o‘qish
0,000125 US$ / 1K

So‘rov uzunligiga qarab narxlar · Gemini generateContent

So‘rov hajmi, tokenlardaKirishChiqishKeshdan o‘qishKeshga yozishKesh 5 daqiqaKesh 1 soat
So‘rov hajmi, tokenlarda(0; 200 000]Kirish0,00125 US$Chiqish0,01 US$Keshdan o‘qish0,000125 US$Keshga yozishAsosiy: —Kesh 5 daqiqaAsosiy: —Kesh 1 soatAsosiy: —
So‘rov hajmi, tokenlarda(200 000; ∞)Kirish0,0025 US$Chiqish0,015 US$Keshdan o‘qish0,00025 US$Keshga yozishAsosiy: —Kesh 5 daqiqaAsosiy: —Kesh 1 soatAsosiy: —

1K token uchun USD tariflari. Tarif belgilanmagan bo‘lsa, ushbu usulning asosiy tarifi qo‘llanadi; «—» asosiy tarif belgilanmaganini bildiradi.

Ailoot so‘rovdan oldin taxminiy summani band qiladi. Natijadan keyin o‘lchangan sarf asosidagi yakuniy to‘lovni yechadi. Oqimli javob bo‘yicha yakuniy hisob-kitob yakuniy sarf yozuviga asoslanadi. Summani band qilish va to‘lovni hisoblash tartibi →

Ma’lumot uchun tarif tafsilotlari

Modelning ma’lumot jadvallari usul tanlash, narx hisobi yoki to‘lovlarni o‘zgartirmaydi. Amaldagi to‘lovlar tanlangan Ailoot usuli tariflari bo‘yicha hisoblanadi.

Modelning ma’lumot jadvallari

Sozlamalar bo‘yicha narxlar

Har bir to‘lovni ko‘rsatilgan shartlarga moslang. Har bir muqobil sozlamalar to‘plami uchun bitta tarifdan foydalaning.

SozlamaTariflar jadvaliKontekst tokenlari soni bundan ko‘pKontekst tokenlari soni bundan oshmaydi, chegara kiradiTo‘lov
SozlamaOpenAI Chat · Tokenlar uchun asosiy tariflarTariflar jadvaliAsosiy tarifKontekst tokenlari soni bundan ko‘p—Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘qTo‘lov
Kirish · Kirish tokenlari $0.0025 / 1K token
Chiqish · Chiqish tokenlari $0.02 / 1K token
Kirish · Keshdan o‘qish $0.00025 / 1K token
Kirish · Keshga yozish $0.00075 / 1K token
Kirish · Keshga yozish, 1 soat — / 1K token
Chiqish · Mantiqiy fikrlashning chiqish tokenlari $0.02 / 1K token
SozlamaOpenAI Chat · So‘rov uzunligi bo‘yicha 1-darajaTariflar jadvali—Kontekst tokenlari soni bundan ko‘p0Kontekst tokenlari soni bundan oshmaydi, chegara kiradi200 000To‘lov
Kirish · Kirish tokenlari $0.0025 / 1K token
Chiqish · Chiqish tokenlari $0.02 / 1K token
Kirish · Keshdan o‘qish $0.00025 / 1K token
Kirish · Keshga yozish $0.00075 / 1K token
Kirish · Keshga yozish, 1 soat — / 1K token
SozlamaOpenAI Chat · So‘rov uzunligi bo‘yicha 2-darajaTariflar jadvali—Kontekst tokenlari soni bundan ko‘p200 000Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘qTo‘lov
Kirish · Kirish tokenlari $0.005 / 1K token
Chiqish · Chiqish tokenlari $0.03 / 1K token
Kirish · Keshdan o‘qish $0.0005 / 1K token
Kirish · Keshga yozish $0.00075 / 1K token
Kirish · Keshga yozish, 1 soat — / 1K token
SozlamaAnthropic Messages · Tokenlar uchun asosiy tariflarTariflar jadvaliAsosiy tarifKontekst tokenlari soni bundan ko‘p—Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘qTo‘lov
Kirish · Kirish tokenlari $0.0025 / 1K token
Chiqish · Chiqish tokenlari $0.02 / 1K token
Kirish · Keshdan o‘qish $0.00025 / 1K token
Kirish · Keshga yozish $0.00075 / 1K token
Kirish · Keshga yozish, 1 soat — / 1K token
Chiqish · Mantiqiy fikrlashning chiqish tokenlari $0.02 / 1K token
SozlamaAnthropic Messages · So‘rov uzunligi bo‘yicha 1-darajaTariflar jadvali—Kontekst tokenlari soni bundan ko‘p0Kontekst tokenlari soni bundan oshmaydi, chegara kiradi200 000To‘lov
Kirish · Kirish tokenlari $0.0025 / 1K token
Chiqish · Chiqish tokenlari $0.02 / 1K token
Kirish · Keshdan o‘qish $0.00025 / 1K token
Kirish · Keshga yozish $0.00075 / 1K token
Kirish · Keshga yozish, 1 soat — / 1K token
SozlamaAnthropic Messages · So‘rov uzunligi bo‘yicha 2-darajaTariflar jadvali—Kontekst tokenlari soni bundan ko‘p200 000Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘qTo‘lov
Kirish · Kirish tokenlari $0.005 / 1K token
Chiqish · Chiqish tokenlari $0.03 / 1K token
Kirish · Keshdan o‘qish $0.0005 / 1K token
Kirish · Keshga yozish $0.00075 / 1K token
Kirish · Keshga yozish, 1 soat — / 1K token

So‘rov namunalari

Ailoot · Gemini generateContent

Matn namunasiKirish, rasmPython SDKNode.js SDKPython oqimi
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('{"contents": []}')
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["contents"]=[{"role":"user","parts":[{"text":"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/v1beta/models/gemini-2.5-pro:generateContent \
  -H "x-goog-api-key: $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('{"contents": [{"role": "user", "parts": [{"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["contents"][0]["parts"].append({"inlineData":{"mimeType":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/v1beta/models/gemini-2.5-pro:generateContent \
  -H "x-goog-api-key: $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 google import genai
from google.genai import types
import os

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client = genai.Client(
    api_key=os.environ["AILOOT_API_KEY"],
    http_options=types.HttpOptions(base_url="https://api.ailoot.ai"),
)
resp = client.models.generate_content(model="gemini-2.5-pro", contents="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_json_dict())
import { GoogleGenAI } from "@google/genai";

if (!process.env.AILOOT_API_KEY?.trim()) throw new Error("Set AILOOT_API_KEY before making a request");
const ai = new GoogleGenAI({ apiKey: process.env.AILOOT_API_KEY, httpOptions: { baseUrl: "https://api.ailoot.ai" } });
const resp = await ai.models.generateContent({ model: "gemini-2.5-pro", contents: "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 google import genai
from google.genai import types
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=genai.Client(api_key=os.environ["AILOOT_API_KEY"],http_options=types.HttpOptions(base_url="https://api.ailoot.ai"))
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))

count=0
with Path("stream-events.jsonl").open("w",encoding="utf-8") as log:
    for chunk in client.models.generate_content_stream(model='gemini-2.5-pro',contents="Explain observations and hypotheses in three sentences."):
        payload=chunk.to_json_dict()
        log.write(json.dumps(payload,ensure_ascii=False)+"\n"); log.flush()
        save_result(payload,"stream-chunk-"+str(count))
        count+=1

Natijalarni olish va saqlash

Ailoot · Gemini generateContent

json yoki qo‘llab-quvvatlanadigan oqimli uzatish

Barcha tayyor natijalarni saqlash

Qaytarilgan har bir to‘liq javob, fayl va kontent qismini saqlang.

Funksiya chaqiruvlari, fikrlash imzolari va sarf ma’lumotlari bilan birga barcha nomzod javoblar va qismlarni saqlang; oqim qismlarini tartib bilan yig‘ing.

Asl javobni tekshirish kerak bo‘lsa

So‘rov va javob IDlari hamda sarlavhalarini saqlang. Matn vazifasini olish uchun umumiy URL taqdim etilmagan.

Javob maydonlari
MaydonTur
MaydonresponseIdTurstring
MaydonmodelVersionTurstring
Maydoncandidates[].content.parts[]Turtext|inlineData|functionCall|other part
Maydoncandidates[].finishReasonTurstring
MaydonusageMetadataTurobject
Xatolar va keyingi qadamlar
JavobShartKeyingi qadam
Javob400 · invalid_request_errorShartMajburiy maydonlar, material ifodasi yoki parametr qiymati noto‘g‘riKeyingi qadamYangi yaratish so‘rovidan oldin ko‘rsatilgan maydonlarni tuzating.

Taxalluslar

Model taxalluslari

Ailoot gemini-2.5-pro
Ailoot Ultra gemini-2.5-pro, google/gemini-2.5-pro

Usul yo‘llari taxalluslari

/chat/completions

Chaqirish uchun tegishli ID lar

google/gemini-2.5-pro, gemini-2.5-pro, gemini-2.5-pro

Ailoot Ultra · OpenAI Chat POST /v1/chat/completions gemini-2.5-pro

gemini-2.5-pro

Google /gemini-2.5-pro
Model ID
  • gemini-2.5-pro
  • google/gemini-2.5-pro

Boshlash

Gemini 2.5 Pro — Google’ning murakkab kod, matematika, STEM va uzun kontekstli tahlil uchun barqaror fikrlash modeli. U matn, tasvir, audio, video va PDF qabul qilib, vositalar va tuzilgan chiqish bilan matn qaytaradi. Uning dinamik mulohaza limiti 128–32,768 tokenni qo‘llab-quvvatlaydi va uni to‘liq o‘chirib bo‘lmaydi.

Qabul qilinadigan kirish ma’lumotlari
Matn
Natijalar
Matn

Ailoot da mavjud · kirish ma’lumotlari va usullar

Ailoot Ultra · OpenAI Chat POST /v1/chat/completions
Kirish
text
Chiqish
text
Chiqish formati
json yoki SSE
MaydonTurTalabQiymatlar va cheklovlarStandart
MaydonmodelTurstringTalabMajburiyQiymatlar va cheklovlar
gemini-2.5-pro
Standart—
MaydonmessagesTurmessage[]TalabMajburiyQiymatlar va cheklovlar
Elementlarning eng kam soni: 1
Standart—
Maydonmessages[].roleTurstringTalabMajburiyQiymatlar va cheklovlar
Modelga bogʻliq
Standart—
Maydonmessages[].contentTurstringTalabIxtiyoriyQiymatlar va cheklovlar
Quyidagi holatda qo‘llanadi: Matnli suhbat
Standart—
MaydonstreamTurbooleanTalabIxtiyoriyQiymatlar va cheklovlarStandartfalse
Kirish materiallari birikmalari

Matn · UTF8 matni

messages[].content

Usul parametrlari va hayot sikli
ParametrParametr talablari
Parametrcontent_typeParametr talablariapplication/json
ParametrrequiredParametr talablarimodel, messages
Parametrmaterial_typesParametr talablaritext
ParametrmessagesParametr talablarirole/content tuzilishidagi xabarlar massivi
Parametrfile_materialParametr talablariHaqiqiy UTF-8 hujjati aynan matn sifatida kiritiladi; fayl IDsi faraz qilinmaydi
Parametroptional_controlsParametr talablaristream
Parametrcontrol_scopeParametr talablariMatnli suhbat; stream mantiqiy qiymat bo‘lib, standart holatda false.
Parametroutput_modalitiesParametr talablaritext
Parametrhosted_operationsParametr talablarifalse
Parametrmultimodal_input_bindingParametr talablarinull

Usul taxalluslari: /chat/completions

Hayot sikli: synchronous_or_streamed

Aniq model IDsini messages bilan yuboring.

Kontekst uzunligi chiqishning yuqori chegarasi emas.

Matn fayli aynan matnni taqdim etishi mumkin; tasvir, audio va fayl obyekti kirishlari aniq bog‘lashni talab qiladi.

Tariflar

Tarif ma’lumotlari so‘rov imkoniyatlarini qo‘shmaydi. Qo‘llab-quvvatlanadigan parametrlar tanlangan usulda ko‘rsatilgan.

Tezkor rejim
Standart tarif Tezkor rejim tanlanganda
Flex rejimi
Standart tarif flex rejimi tanlanganda
Maksimal fikrlash darajasi
Standart tarif Maksimal fikrlash darajasi uchun standart (default) tuzatish qo‘llanganda
Ochiq ko‘rsatilgan keshlash narxlari
Yoqilmagan Ochiq ko‘rsatilgan keshlash so‘ralganda
Mulohaza yuritish chiqishi
Mulohaza yuritish uchun jamlangan chiqish ichida ko‘rsatilgan qism tarifi ishlatiladi; bu tokenlarni ikki marta qo‘shmang. Chiqishga mulohaza yuritish tokenlari kirganda

Ailoot tariflari

Sozlamalar bo‘yicha narxlar

Har bir to‘lovni ko‘rsatilgan shartlarga moslang. Har bir muqobil sozlamalar to‘plami uchun bitta tarifdan foydalaning.

SozlamaTariflar jadvaliKontekst tokenlari soni bundan ko‘pKontekst tokenlari soni bundan oshmaydi, chegara kiradiTo‘lov
SozlamaTokenlar uchun bazaviy tariflarTariflar jadvaliAsosiy tarifKontekst tokenlari soni bundan ko‘p—Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘qTo‘lov
Kirish · Kirish tokenlari $0.0025 / 1K token
Chiqish · Chiqish tokenlari $0.02 / 1K token
Kirish · Keshdan o‘qish $0.00025 / 1K token
Kirish · Keshga yozish $0.00075 / 1K token
Kirish · Keshga yozish, 1 soat — / 1K token
Chiqish · Mantiqiy fikrlashning chiqish tokenlari $0.02 / 1K token
SozlamaSo‘rov uzunligi bo‘yicha 1-darajaTariflar jadvali—Kontekst tokenlari soni bundan ko‘p0Kontekst tokenlari soni bundan oshmaydi, chegara kiradi200 000To‘lov
Kirish · Kirish tokenlari $0.0025 / 1K token
Chiqish · Chiqish tokenlari $0.02 / 1K token
Kirish · Keshdan o‘qish $0.00025 / 1K token
Kirish · Keshga yozish $0.00075 / 1K token
Kirish · Keshga yozish, 1 soat — / 1K token
SozlamaSo‘rov uzunligi bo‘yicha 2-darajaTariflar jadvali—Kontekst tokenlari soni bundan ko‘p200 000Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘qTo‘lov
Kirish · Kirish tokenlari $0.005 / 1K token
Chiqish · Chiqish tokenlari $0.03 / 1K token
Kirish · Keshdan o‘qish $0.0005 / 1K token
Kirish · Keshga yozish $0.00075 / 1K token
Kirish · Keshga yozish, 1 soat — / 1K token

Ailoot so‘rovdan oldin taxminiy summani band qiladi. Natijadan keyin o‘lchangan sarf asosidagi yakuniy to‘lovni yechadi. Oqimli javob bo‘yicha yakuniy hisob-kitob yakuniy sarf yozuviga asoslanadi. Summani band qilish va to‘lovni hisoblash tartibi →

So‘rov namunalari

Ailoot Ultra · OpenAI Chat

curlPython SDK
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model":"gemini-2.5-pro","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="gemini-2.5-pro", 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"))

Natijalarni olish va saqlash

Ailoot Ultra · OpenAI Chat

json yoki SSE

Barcha tayyor natijalarni saqlash

Qaytarilgan har bir to‘liq javob, fayl va kontent qismini saqlang.

Har bir javob variantini va uning kontenti, vosita chaqiruvlari hamda fikrlash ma’lumotlarini saqlang. SSEda o‘zgarish qismlarini variant va vosita indeksi bo‘yicha yig‘ing, yakuniy tugash sababi va sarf ma’lumotlarini saqlang.

Asl javobni tekshirish kerak bo‘lsa

So‘rov va javob IDlari hamda sarlavhalarini saqlang. Matn vazifasini olish uchun umumiy URL taqdim etilmagan.

Javob maydonlari
MaydonTur
Maydonchoices[].indexTurinteger
Maydonchoices[].message.contentTurstring|null
Maydonchoices[].message.tool_callsTurtool_call[]
Maydonchoices[].message.reasoning_contentTurstring
Maydonchoices[].message.reasoning_detailsTurobject|array
Maydonchoices[].finish_reasonTurstring|null
MaydonusageTurobject
Xatolar va keyingi qadamlar
JavobShartKeyingi qadam
Javob400 · invalid_request_errorShartMajburiy maydonlar, material ifodasi yoki parametr qiymati noto‘g‘riKeyingi qadamYangi yaratish so‘rovidan oldin ko‘rsatilgan maydonlarni tuzating.

Taxalluslar

Model taxalluslari

Ailoot gemini-2.5-pro
Ailoot Ultra gemini-2.5-pro, google/gemini-2.5-pro

Usul yo‘llari taxalluslari

/chat/completions

Chaqirish uchun tegishli ID lar

google/gemini-2.5-pro, gemini-2.5-pro, gemini-2.5-pro

Ailoot Ultra · Anthropic Messages POST /v1/messages gemini-2.5-pro

gemini-2.5-pro

Google /gemini-2.5-pro
Model ID
  • gemini-2.5-pro
  • google/gemini-2.5-pro

Boshlash

Gemini 2.5 Pro — Google’ning murakkab kod, matematika, STEM va uzun kontekstli tahlil uchun barqaror fikrlash modeli. U matn, tasvir, audio, video va PDF qabul qilib, vositalar va tuzilgan chiqish bilan matn qaytaradi. Uning dinamik mulohaza limiti 128–32,768 tokenni qo‘llab-quvvatlaydi va uni to‘liq o‘chirib bo‘lmaydi.

Qabul qilinadigan kirish ma’lumotlari
Matn
Natijalar
json · sse

Ailoot da mavjud · kirish ma’lumotlari va usullar

Ailoot Ultra · Anthropic Messages POST /v1/messages
Kirish
text
Chiqish
json, sse
Chiqish formati
JSON yoki SSE
MaydonTurTalabQiymatlar va cheklovlarStandart
MaydonmodelTurstringTalabMajburiyQiymatlar va cheklovlar
gemini-2.5-pro
Standart—
MaydonmessagesTurmessage[]TalabMajburiyQiymatlar va cheklovlarStandart—
Maydonmessages[].roleTurstringTalabMajburiyQiymatlar va cheklovlar
user, assistant
Standart—
Maydonmessages[].contentTurstringTalabMajburiyQiymatlar va cheklovlarStandart—
Maydonmax_tokensTurintegerTalabMajburiyQiymatlar va cheklovlarStandart—
MaydonstreamTurbooleanTalabIxtiyoriyQiymatlar va cheklovlarStandartfalse
Kirish materiallari birikmalari

Matn · UTF-8 matni

messages[].content satri

Usul parametrlari va hayot sikli
ParametrParametr talablari
Parametrcontent_typeParametr talablariapplication/json
ParametrrequiredParametr talablarimodel, messages, max_tokens
Parametroptional_controlsParametr talablaristream
Parametrmaterial_typesParametr talablaritext
Parametrtext_file_materialParametr talablariHaqiqiy UTF-8 hujjatini o‘qing va uning matnini ko‘rsatilgan kirish yoki xabar kontenti satriga joylashtiring.

Hayot sikli: synchronous_or_streamed

Tariflar

Tarif ma’lumotlari so‘rov imkoniyatlarini qo‘shmaydi. Qo‘llab-quvvatlanadigan parametrlar tanlangan usulda ko‘rsatilgan.

Tezkor rejim
Standart tarif Tezkor rejim tanlanganda
Flex rejimi
Standart tarif flex rejimi tanlanganda
Maksimal fikrlash darajasi
Standart tarif Maksimal fikrlash darajasi uchun standart (default) tuzatish qo‘llanganda
Ochiq ko‘rsatilgan keshlash narxlari
Yoqilmagan Ochiq ko‘rsatilgan keshlash so‘ralganda
Mulohaza yuritish chiqishi
Mulohaza yuritish uchun jamlangan chiqish ichida ko‘rsatilgan qism tarifi ishlatiladi; bu tokenlarni ikki marta qo‘shmang. Chiqishga mulohaza yuritish tokenlari kirganda

Ailoot tariflari

Sozlamalar bo‘yicha narxlar

Har bir to‘lovni ko‘rsatilgan shartlarga moslang. Har bir muqobil sozlamalar to‘plami uchun bitta tarifdan foydalaning.

SozlamaTariflar jadvaliKontekst tokenlari soni bundan ko‘pKontekst tokenlari soni bundan oshmaydi, chegara kiradiTo‘lov
SozlamaTokenlar uchun bazaviy tariflarTariflar jadvaliAsosiy tarifKontekst tokenlari soni bundan ko‘p—Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘qTo‘lov
Kirish · Kirish tokenlari $0.0025 / 1K token
Chiqish · Chiqish tokenlari $0.02 / 1K token
Kirish · Keshdan o‘qish $0.00025 / 1K token
Kirish · Keshga yozish $0.00075 / 1K token
Kirish · Keshga yozish, 1 soat — / 1K token
Chiqish · Mantiqiy fikrlashning chiqish tokenlari $0.02 / 1K token
SozlamaSo‘rov uzunligi bo‘yicha 1-darajaTariflar jadvali—Kontekst tokenlari soni bundan ko‘p0Kontekst tokenlari soni bundan oshmaydi, chegara kiradi200 000To‘lov
Kirish · Kirish tokenlari $0.0025 / 1K token
Chiqish · Chiqish tokenlari $0.02 / 1K token
Kirish · Keshdan o‘qish $0.00025 / 1K token
Kirish · Keshga yozish $0.00075 / 1K token
Kirish · Keshga yozish, 1 soat — / 1K token
SozlamaSo‘rov uzunligi bo‘yicha 2-darajaTariflar jadvali—Kontekst tokenlari soni bundan ko‘p200 000Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘qTo‘lov
Kirish · Kirish tokenlari $0.005 / 1K token
Chiqish · Chiqish tokenlari $0.03 / 1K token
Kirish · Keshdan o‘qish $0.0005 / 1K token
Kirish · Keshga yozish $0.00075 / 1K token
Kirish · Keshga yozish, 1 soat — / 1K token

Ailoot so‘rovdan oldin taxminiy summani band qiladi. Natijadan keyin o‘lchangan sarf asosidagi yakuniy to‘lovni yechadi. Oqimli javob bo‘yicha yakuniy hisob-kitob yakuniy sarf yozuviga asoslanadi. Summani band qilish va to‘lovni hisoblash tartibi →

So‘rov namunalari

Ailoot Ultra · Anthropic Messages

To‘liq minimal JSON so‘rov tanasicurl · O‘zingizning UTF-8 hujjatingizdan foydalaningPython · Natijani to‘liq saqlang
{
  "model": "gemini-2.5-pro",
  "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': 'gemini-2.5-pro', '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': 'gemini-2.5-pro', '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))

Natijalarni olish va saqlash

Ailoot Ultra · Anthropic Messages

JSON yoki SSE

Barcha tayyor natijalarni saqlash

Qaytarilgan har bir to‘liq javob, fayl va kontent qismini saqlang.

Barcha kontent bloklari, fikrlash imzolari va haqiqiy vosita ishlatish IDlarini saqlang. SSE bloklarining barcha o‘zgarish qismlarini yig‘ing; birinchi matn bloki to‘liq chiqish emas.

Asl javobni tekshirish kerak bo‘lsa

So‘rov va javob IDlari hamda sarlavhalarini saqlang. Matn vazifasini olish uchun umumiy URL taqdim etilmagan.

Javob maydonlari
MaydonTur
MaydonidTurstring
MaydonmodelTurstring
Maydoncontent[]Turtext|thinking|tool_use|other content block
Maydonstop_reasonTurstring|null
MaydonusageTurobject
Xatolar va keyingi qadamlar
JavobShartKeyingi qadam
Javob400 · invalid_request_errorShartMajburiy maydonlar, material ifodasi yoki parametr qiymati noto‘g‘riKeyingi qadamYangi yaratish so‘rovidan oldin ko‘rsatilgan maydonlarni tuzating.

Taxalluslar

Model taxalluslari

Ailoot gemini-2.5-pro
Ailoot Ultra gemini-2.5-pro, google/gemini-2.5-pro

Usul yo‘llari taxalluslari

/chat/completions

Chaqirish uchun tegishli ID lar

google/gemini-2.5-pro, gemini-2.5-pro, gemini-2.5-pro

Ailoot Ultra · OpenAI Chat POST /v1/chat/completions google/gemini-2.5-pro

google/gemini-2.5-pro

Google /google/gemini-2.5-pro
Model ID
  • gemini-2.5-pro
  • google/gemini-2.5-pro

Boshlash

Gemini 2.5 Pro — Google’ning murakkab kod, matematika, STEM va uzun kontekstli tahlil uchun barqaror fikrlash modeli. U matn, tasvir, audio, video va PDF qabul qilib, vositalar va tuzilgan chiqish bilan matn qaytaradi. Uning dinamik mulohaza limiti 128–32,768 tokenni qo‘llab-quvvatlaydi va uni to‘liq o‘chirib bo‘lmaydi.

Qabul qilinadigan kirish ma’lumotlari
Matn
Natijalar
Matn

Ailoot da mavjud · kirish ma’lumotlari va usullar

Ailoot Ultra · OpenAI Chat POST /v1/chat/completions
Kirish
text
Chiqish
text
Chiqish formati
json yoki SSE
MaydonTurTalabQiymatlar va cheklovlarStandart
MaydonmodelTurstringTalabMajburiyQiymatlar va cheklovlar
google/gemini-2.5-pro
Standart—
MaydonmessagesTurmessage[]TalabMajburiyQiymatlar va cheklovlar
Elementlarning eng kam soni: 1
Standart—
Maydonmessages[].roleTurstringTalabMajburiyQiymatlar va cheklovlar
Namunalar: system, user, assistant, tool, function
Shartlar: Bu rollar manba kodining moslik turlarida ochiq ifodalangan; aniq rollar to‘plami har bir modelga xos bo‘lib qoladi.
Modelga bogʻliq
Standart—
Maydonmessages[].contentTurstring|content_part[]|nullTalabIxtiyoriyQiymatlar va cheklovlarStandart—
Maydonmessages[].tool_callsTurtool_call[]TalabIxtiyoriyQiymatlar va cheklovlarStandart—
Maydonmessages[].tool_call_idTurstringTalabIxtiyoriyQiymatlar va cheklovlar
Quyidagi holatda qo‘llanadi: role=tool; haqiqatan qaytarilgan IDdan foydalaning
Standart—
Maydonmessages[].nameTurstringTalabIxtiyoriyQiymatlar va cheklovlarStandart—
Maydonmessages[].reasoning_contentTurstringTalabIxtiyoriyQiymatlar va cheklovlar
Quyidagi holatda qo‘llanadi: Ushbu model foydalanganda, haqiqatan qaytarilgan fikrlash ma’lumotlarini keyingi so‘rovda qayta yuboring
Standart—
Maydonmessages[].reasoning_detailsTurobject|arrayTalabIxtiyoriyQiymatlar va cheklovlar
Modelga bogʻliq
Standart—
Maydonmax_tokensTurintegerTalabIxtiyoriyQiymatlar va cheklovlar
Eng kam: 1
Modelga bogʻliq
Standart—
Maydonmax_completion_tokensTurintegerTalabIxtiyoriyQiymatlar va cheklovlar
Eng kam: 1
Modelga bogʻliq
Standart—
MaydonstreamTurbooleanTalabIxtiyoriyQiymatlar va cheklovlarStandartfalse
Maydonstream_options.include_usageTurbooleanTalabIxtiyoriyQiymatlar va cheklovlar
Modelga bogʻliq
Standart—
MaydontemperatureTurnumberTalabIxtiyoriyQiymatlar va cheklovlar
Modelga bogʻliq
Standart—
Maydontop_pTurnumberTalabIxtiyoriyQiymatlar va cheklovlar
Modelga bogʻliq
Standart—
MaydonstopTurstring|string[]TalabIxtiyoriyQiymatlar va cheklovlar
Modelga bogʻliq
Standart—
MaydontoolsTurfunction_tool[]TalabIxtiyoriyQiymatlar va cheklovlar
Modelga bogʻliq
Standart—
Maydontools[].typeTurstringTalabIxtiyoriyQiymatlar va cheklovlar
function
Modelga bogʻliq
Standart—
Maydontools[].function.nameTurstringTalabMajburiyQiymatlar va cheklovlar
Quyidagi holatda qo‘llanadi: Funksiya vositasi taqdim etilgan
Standart—
Maydontools[].function.descriptionTurstringTalabIxtiyoriyQiymatlar va cheklovlarStandart—
Maydontools[].function.parametersTurJSON_schemaTalabIxtiyoriyQiymatlar va cheklovlarStandart—
Maydontool_choiceTurstring|objectTalabIxtiyoriyQiymatlar va cheklovlar
Modelga bogʻliq
Standart—
Maydonparallel_tool_callsTurbooleanTalabIxtiyoriyQiymatlar va cheklovlar
Modelga bogʻliq
Standart—
Maydonresponse_formatTurobjectTalabIxtiyoriyQiymatlar va cheklovlar
Modelga bogʻliq
Standart—
Maydonreasoning_effortTurstringTalabIxtiyoriyQiymatlar va cheklovlar
Modelga bogʻliq
Standart—
MaydonreasoningTurobjectTalabIxtiyoriyQiymatlar va cheklovlar
Modelga bogʻliq
Standart—
Maydonservice_tierTurstringTalabIxtiyoriyQiymatlar va cheklovlar
Modelga bogʻliq
Standart—
MaydoninstructionsTurstringTalabIxtiyoriyQiymatlar va cheklovlar
Moslik maydoni
Standart—
MaydonfunctionsTurfunction[]TalabIxtiyoriyQiymatlar va cheklovlar
Modelga bogʻliq
Standart—
Maydonfunction_callTurstring|objectTalabIxtiyoriyQiymatlar va cheklovlar
Modelga bogʻliq
Standart—
Maydonprompt_cache_optionsTurobjectTalabIxtiyoriyQiymatlar va cheklovlar
Modelga bogʻliq
Standart—
MaydonmodalitiesTurstring[]TalabIxtiyoriyQiymatlar va cheklovlar
text
Standart—
MaydonproviderTurobjectTalabIxtiyoriyQiymatlar va cheklovlar
Shartlar: Ushbu Ultra matn marshrutida provider.options rad etiladi
Standart—
Maydoncache_control.ttlTurstringTalabIxtiyoriyQiymatlar va cheklovlar
Shartlar: Haqiqiy prompt-kesh joylarida 1h rad etiladi
Standart—
Kirish materiallari birikmalari

Matn · UTF8 matni

messages[].content

Usul parametrlari va hayot sikli
ParametrParametr talablari
Parametrcontent_typeParametr talablariapplication/json
ParametrrequiredParametr talablarimodel, messages
Parametrmaterial_typesParametr talablaritext
ParametrmessagesParametr talablarirole/content tuzilishidagi xabarlar massivi
Parametrfile_materialParametr talablariHaqiqiy UTF-8 hujjati aynan matn sifatida kiritiladi; fayl IDsi faraz qilinmaydi
Parametroptional_controlsParametr talablaristream, temperature, top_p, stop, max_tokens, max_completion_tokens, reasoning, response_format, tools, tool_choice
Parametrcontrol_scopeParametr talablariModelga xos; foydalanuvchi funksiya vositalari hostingdagi vositalardan farq qiladi
Parametroutput_modalitiesParametr talablaritext
Parametrhosted_operationsParametr talablarifalse
Parametrmultimodal_input_bindingParametr talablarinull

Hayot sikli: synchronous_or_streamed

Aniq model IDsini messages bilan yuboring.

Kontekst uzunligi chiqishning yuqori chegarasi emas.

Matn fayli aynan matnni taqdim etishi mumkin; tasvir, audio va fayl obyekti kirishlari aniq bog‘lashni talab qiladi.

Tariflar

Tarif ma’lumotlari so‘rov imkoniyatlarini qo‘shmaydi. Qo‘llab-quvvatlanadigan parametrlar tanlangan usulda ko‘rsatilgan.

Tezkor rejim
Standart tarif Tezkor rejim tanlanganda
Flex rejimi
Standart tarif flex rejimi tanlanganda
Maksimal fikrlash darajasi
Standart tarif Maksimal fikrlash darajasi uchun standart (default) tuzatish qo‘llanganda
Ochiq ko‘rsatilgan keshlash narxlari
Yoqilmagan Ochiq ko‘rsatilgan keshlash so‘ralganda
Mulohaza yuritish chiqishi
Mulohaza yuritish uchun jamlangan chiqish ichida ko‘rsatilgan qism tarifi ishlatiladi; bu tokenlarni ikki marta qo‘shmang. Chiqishga mulohaza yuritish tokenlari kirganda

Ailoot tariflari

Sozlamalar bo‘yicha narxlar

Har bir to‘lovni ko‘rsatilgan shartlarga moslang. Har bir muqobil sozlamalar to‘plami uchun bitta tarifdan foydalaning.

SozlamaTariflar jadvaliKontekst tokenlari soni bundan ko‘pKontekst tokenlari soni bundan oshmaydi, chegara kiradiTo‘lov
SozlamaTokenlar uchun bazaviy tariflarTariflar jadvaliAsosiy tarifKontekst tokenlari soni bundan ko‘p—Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘qTo‘lov
Kirish · Kirish tokenlari $0.0025 / 1K token
Chiqish · Chiqish tokenlari $0.02 / 1K token
Kirish · Keshdan o‘qish $0.00025 / 1K token
Kirish · Keshga yozish $0.00075 / 1K token
Kirish · Keshga yozish, 1 soat — / 1K token
Chiqish · Mantiqiy fikrlashning chiqish tokenlari $0.02 / 1K token
SozlamaSo‘rov uzunligi bo‘yicha 1-darajaTariflar jadvali—Kontekst tokenlari soni bundan ko‘p0Kontekst tokenlari soni bundan oshmaydi, chegara kiradi200 000To‘lov
Kirish · Kirish tokenlari $0.0025 / 1K token
Chiqish · Chiqish tokenlari $0.02 / 1K token
Kirish · Keshdan o‘qish $0.00025 / 1K token
Kirish · Keshga yozish $0.00075 / 1K token
Kirish · Keshga yozish, 1 soat — / 1K token
SozlamaSo‘rov uzunligi bo‘yicha 2-darajaTariflar jadvali—Kontekst tokenlari soni bundan ko‘p200 000Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘qTo‘lov
Kirish · Kirish tokenlari $0.005 / 1K token
Chiqish · Chiqish tokenlari $0.03 / 1K token
Kirish · Keshdan o‘qish $0.0005 / 1K token
Kirish · Keshga yozish $0.00075 / 1K token
Kirish · Keshga yozish, 1 soat — / 1K token

Ailoot so‘rovdan oldin taxminiy summani band qiladi. Natijadan keyin o‘lchangan sarf asosidagi yakuniy to‘lovni yechadi. Oqimli javob bo‘yicha yakuniy hisob-kitob yakuniy sarf yozuviga asoslanadi. Summani band qilish va to‘lovni hisoblash tartibi →

So‘rov namunalari

Ailoot Ultra · OpenAI Chat

curlPython SDKPython oqimi
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "google/gemini-2.5-pro", "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='google/gemini-2.5-pro',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='google/gemini-2.5-pro',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")

Natijalarni olish va saqlash

Ailoot Ultra · OpenAI Chat

json yoki SSE

Barcha tayyor natijalarni saqlash

Qaytarilgan har bir to‘liq javob, fayl va kontent qismini saqlang.

Har bir javob variantini va uning kontenti, vosita chaqiruvlari hamda fikrlash ma’lumotlarini saqlang. SSEda o‘zgarish qismlarini variant va vosita indeksi bo‘yicha yig‘ing, yakuniy tugash sababi va sarf ma’lumotlarini saqlang.

Asl javobni tekshirish kerak bo‘lsa

So‘rov va javob IDlari hamda sarlavhalarini saqlang. Matn vazifasini olish uchun umumiy URL taqdim etilmagan.

Javob maydonlari
MaydonTur
Maydonchoices[].indexTurinteger
Maydonchoices[].message.contentTurstring|null
Maydonchoices[].message.tool_callsTurtool_call[]
Maydonchoices[].message.reasoning_contentTurstring
Maydonchoices[].message.reasoning_detailsTurobject|array
Maydonchoices[].finish_reasonTurstring|null
MaydonusageTurobject
Xatolar va keyingi qadamlar
JavobShartKeyingi qadam
Javob400 · invalid_request_errorShartMajburiy maydonlar, material ifodasi yoki parametr qiymati noto‘g‘riKeyingi qadamYangi yaratish so‘rovidan oldin ko‘rsatilgan maydonlarni tuzating.

Taxalluslar

Model taxalluslari

Ailoot gemini-2.5-pro
Ailoot Ultra gemini-2.5-pro, google/gemini-2.5-pro

Usul yo‘llari taxalluslari

/chat/completions

Chaqirish uchun tegishli ID lar

google/gemini-2.5-pro, gemini-2.5-pro, gemini-2.5-pro

Ailoot Ultra · Anthropic Messages POST /v1/messages google/gemini-2.5-pro

google/gemini-2.5-pro

Google /google/gemini-2.5-pro
Model ID
  • gemini-2.5-pro
  • google/gemini-2.5-pro

Boshlash

Gemini 2.5 Pro — Google’ning murakkab kod, matematika, STEM va uzun kontekstli tahlil uchun barqaror fikrlash modeli. U matn, tasvir, audio, video va PDF qabul qilib, vositalar va tuzilgan chiqish bilan matn qaytaradi. Uning dinamik mulohaza limiti 128–32,768 tokenni qo‘llab-quvvatlaydi va uni to‘liq o‘chirib bo‘lmaydi.

Qabul qilinadigan kirish ma’lumotlari
Matn
Natijalar
json · sse

Ailoot da mavjud · kirish ma’lumotlari va usullar

Ailoot Ultra · Anthropic Messages POST /v1/messages
Kirish
text
Chiqish
json, sse
Chiqish formati
JSON yoki SSE
MaydonTurTalabQiymatlar va cheklovlarStandart
MaydonmodelTurstringTalabMajburiyQiymatlar va cheklovlar
google/gemini-2.5-pro
Standart—
MaydonmessagesTurmessage[]TalabMajburiyQiymatlar va cheklovlarStandart—
Maydonmessages[].roleTurstringTalabMajburiyQiymatlar va cheklovlar
user, assistant
Standart—
Maydonmessages[].contentTurstringTalabMajburiyQiymatlar va cheklovlarStandart—
Maydonmax_tokensTurintegerTalabMajburiyQiymatlar va cheklovlarStandart—
MaydonstreamTurbooleanTalabIxtiyoriyQiymatlar va cheklovlarStandartfalse
Kirish materiallari birikmalari

Matn · UTF-8 matni

messages[].content satri

Usul parametrlari va hayot sikli
ParametrParametr talablari
Parametrcontent_typeParametr talablariapplication/json
ParametrrequiredParametr talablarimodel, messages, max_tokens
Parametroptional_controlsParametr talablaristream
Parametrmaterial_typesParametr talablaritext
Parametrtext_file_materialParametr talablariHaqiqiy UTF-8 hujjatini o‘qing va uning matnini ko‘rsatilgan kirish yoki xabar kontenti satriga joylashtiring.

Hayot sikli: synchronous_or_streamed

Tariflar

Tarif ma’lumotlari so‘rov imkoniyatlarini qo‘shmaydi. Qo‘llab-quvvatlanadigan parametrlar tanlangan usulda ko‘rsatilgan.

Tezkor rejim
Standart tarif Tezkor rejim tanlanganda
Flex rejimi
Standart tarif flex rejimi tanlanganda
Maksimal fikrlash darajasi
Standart tarif Maksimal fikrlash darajasi uchun standart (default) tuzatish qo‘llanganda
Ochiq ko‘rsatilgan keshlash narxlari
Yoqilmagan Ochiq ko‘rsatilgan keshlash so‘ralganda
Mulohaza yuritish chiqishi
Mulohaza yuritish uchun jamlangan chiqish ichida ko‘rsatilgan qism tarifi ishlatiladi; bu tokenlarni ikki marta qo‘shmang. Chiqishga mulohaza yuritish tokenlari kirganda

Ailoot tariflari

Sozlamalar bo‘yicha narxlar

Har bir to‘lovni ko‘rsatilgan shartlarga moslang. Har bir muqobil sozlamalar to‘plami uchun bitta tarifdan foydalaning.

SozlamaTariflar jadvaliKontekst tokenlari soni bundan ko‘pKontekst tokenlari soni bundan oshmaydi, chegara kiradiTo‘lov
SozlamaTokenlar uchun bazaviy tariflarTariflar jadvaliAsosiy tarifKontekst tokenlari soni bundan ko‘p—Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘qTo‘lov
Kirish · Kirish tokenlari $0.0025 / 1K token
Chiqish · Chiqish tokenlari $0.02 / 1K token
Kirish · Keshdan o‘qish $0.00025 / 1K token
Kirish · Keshga yozish $0.00075 / 1K token
Kirish · Keshga yozish, 1 soat — / 1K token
Chiqish · Mantiqiy fikrlashning chiqish tokenlari $0.02 / 1K token
SozlamaSo‘rov uzunligi bo‘yicha 1-darajaTariflar jadvali—Kontekst tokenlari soni bundan ko‘p0Kontekst tokenlari soni bundan oshmaydi, chegara kiradi200 000To‘lov
Kirish · Kirish tokenlari $0.0025 / 1K token
Chiqish · Chiqish tokenlari $0.02 / 1K token
Kirish · Keshdan o‘qish $0.00025 / 1K token
Kirish · Keshga yozish $0.00075 / 1K token
Kirish · Keshga yozish, 1 soat — / 1K token
SozlamaSo‘rov uzunligi bo‘yicha 2-darajaTariflar jadvali—Kontekst tokenlari soni bundan ko‘p200 000Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘qTo‘lov
Kirish · Kirish tokenlari $0.005 / 1K token
Chiqish · Chiqish tokenlari $0.03 / 1K token
Kirish · Keshdan o‘qish $0.0005 / 1K token
Kirish · Keshga yozish $0.00075 / 1K token
Kirish · Keshga yozish, 1 soat — / 1K token

Ailoot so‘rovdan oldin taxminiy summani band qiladi. Natijadan keyin o‘lchangan sarf asosidagi yakuniy to‘lovni yechadi. Oqimli javob bo‘yicha yakuniy hisob-kitob yakuniy sarf yozuviga asoslanadi. Summani band qilish va to‘lovni hisoblash tartibi →

So‘rov namunalari

Ailoot Ultra · Anthropic Messages

To‘liq minimal JSON so‘rov tanasicurl · O‘zingizning UTF-8 hujjatingizdan foydalaningPython · Natijani to‘liq saqlang
{
  "model": "google/gemini-2.5-pro",
  "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': 'google/gemini-2.5-pro', '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': 'google/gemini-2.5-pro', '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))

Natijalarni olish va saqlash

Ailoot Ultra · Anthropic Messages

JSON yoki SSE

Barcha tayyor natijalarni saqlash

Qaytarilgan har bir to‘liq javob, fayl va kontent qismini saqlang.

Barcha kontent bloklari, fikrlash imzolari va haqiqiy vosita ishlatish IDlarini saqlang. SSE bloklarining barcha o‘zgarish qismlarini yig‘ing; birinchi matn bloki to‘liq chiqish emas.

Asl javobni tekshirish kerak bo‘lsa

So‘rov va javob IDlari hamda sarlavhalarini saqlang. Matn vazifasini olish uchun umumiy URL taqdim etilmagan.

Javob maydonlari
MaydonTur
MaydonidTurstring
MaydonmodelTurstring
Maydoncontent[]Turtext|thinking|tool_use|other content block
Maydonstop_reasonTurstring|null
MaydonusageTurobject
Xatolar va keyingi qadamlar
JavobShartKeyingi qadam
Javob400 · invalid_request_errorShartMajburiy maydonlar, material ifodasi yoki parametr qiymati noto‘g‘riKeyingi qadamYangi yaratish so‘rovidan oldin ko‘rsatilgan maydonlarni tuzating.

Taxalluslar

Model taxalluslari

Ailoot gemini-2.5-pro
Ailoot Ultra gemini-2.5-pro, google/gemini-2.5-pro

Usul yo‘llari taxalluslari

/chat/completions

Chaqirish uchun tegishli ID lar

google/gemini-2.5-pro, gemini-2.5-pro, gemini-2.5-pro

FAQ · Google: Gemini 2.5 Pro
Qanday kirish ma’lumotlari va natijalar mavjud?

POST /v1/messages · gemini-2.5-pro: text, image → text

POST /v1beta/models/{model}:generateContent · gemini-2.5-pro: text, image → text

POST /v1/chat/completions · gemini-2.5-pro: text → text

POST /v1/messages · gemini-2.5-pro: text → json, sse

POST /v1/chat/completions · google/gemini-2.5-pro: text → text

POST /v1/messages · google/gemini-2.5-pro: text → json, sse

So‘rov qaysi maydonlardan foydalanadi?

POST /v1/messages · gemini-2.5-pro: model, messages, system, max_tokens, stream, metadata

POST /v1beta/models/{model}:generateContent · gemini-2.5-pro: contents, systemInstruction, sessionId

POST /v1/chat/completions · gemini-2.5-pro: model, messages, stream

POST /v1/messages · gemini-2.5-pro: model, messages, max_tokens, stream

POST /v1/chat/completions · google/gemini-2.5-pro: model, messages, stream, modalities, provider

POST /v1/messages · google/gemini-2.5-pro: model, messages, max_tokens, stream

Qanday cheklovlar amal qiladi?

POST /v1/messages · gemini-2.5-pro: ctx: 1048576; max_out: 65536; messages.min_items: 1; max_tokens.minimum: 1

POST /v1beta/models/{model}:generateContent · gemini-2.5-pro: ctx: 1048576; max_out: 65536; contents.min_items: 1

POST /v1/chat/completions · gemini-2.5-pro: messages.min_items: 1

POST /v1/chat/completions · google/gemini-2.5-pro: messages.min_items: 1

Batafsil

Ailoot’ni Claude Code, OpenCode, Hermes yoki ilovangizga ulang.

Kompaniya va uning loyihalar portfeli

Kompaniya va uning loyihalar portfeli: millionlab mijozlar; oylik sotuvlar hajmi milliardlarda.

Tokenlarni chegirma bilan xarid qiling.

Muntazam ish uchun obuna chegirmasi. Token xaridiga promokodlar — 50% gacha.

Obuna
Muntazam so‘rovlaringiz uchun chegirmali tarif tanlang.
50% gacha promokod
Xaridda kod kiriting. Narx amaldagi aksiya bilan qayta hisoblanadi.
Tarixdagi xarajatlar
Har so‘rov uchun model, token va summa saqlanadi.

Obuna tanlash · Model narxlarini ko‘rish

API’ni sotadigan mahsulotingizga ulang.

SaaS, ilova va botlar Ailoot ofertasi hamda litsenziya shartnomasiga muvofiq. Qayta sotishga reseller litsenziyasi so‘rang.

Tijorat ilovasi
Xizmatingizning pullik funksiyalariga matn, rasm, video va ovoz yaratishni qo‘shing.
Reseller litsenziyasi
Loyiha tavsifi va kirish sxemasini yuboring. Foydalanish va qayta sotishga yozma shartlarni so‘rang.
Saytdagi hujjatlar
Oferta, litsenziya shartnomasi va ma’lumotlar siyosati ulashdan oldin ochiq.

Reseller litsenziyasini so‘rash · Oferta va litsenziya shartnomasi