Source: https://ailoot.ai/models/uz/gemini-pro-agent/
Canonical: https://ailoot.ai/models/uz/gemini-pro-agent/
Language: uz

# Gemini Pro Agent

[Markdown](https://ailoot.ai/models/uz/gemini-pro-agent/index.md) · [JSON](https://ailoot.ai/models/uz/gemini-pro-agent/facts.json)

## [Gemini Pro Agent](https://ailoot.ai/models/uz/gemini-pro-agent/)

Murakkab dasturlash vazifalari, katta materiallar tahlili va vositalar bilan aniq ko‘p bosqichli ishlash uchun Google’ning multimodal modeli.

- [**Ailoot · Anthropic Messages** `POST /v1/messages` `gemini-pro-agent`](https://ailoot.ai/models/uz/gemini-pro-agent/#method-0)
- [**Ailoot · Gemini generateContent** `POST /v1beta/models/{model}:generateContent` `gemini-pro-agent`](https://ailoot.ai/models/uz/gemini-pro-agent/#method-1)

Model haqida

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

Gemini 3.1 Pro Preview murakkab material va bir nechta ketma-ket qaror talab qiladigan vazifalar bilan ishlash uchun mo‘ljallangan. Google dasturiy muhandislik, vositalardan foydalanish va faktlarga oid javoblarning izchilligini ta’kidlaydi. Model katta ma’lumotlar to‘plamlari, butun dasturiy repozitoriylar va matn vizual yoki ovozli materiallar bilan bog‘langan vazifalarni tahlil qilishga yordam beradi.

#### Model qanday materiallarni tushunadi

Google xususiyatlarida **matn, tasvirlar, video, audio va PDF** sanab o‘tilgan. Ailoot API’ning joriy katalogida matnli metodlar uchun kirishda **matn va tasvirlar**, chiqishda esa matn e’lon qilingan. Video, audio va PDF bu kirishlar to‘plamiga kiritilmagan. Uzun kontekst **1 048 576 tagacha kirish tokeni**ni, matnli javob esa **65 536 tagacha chiqish tokeni**ni sig‘diradi. Tasvir va audioni tushunish ularni yaratishni anglatmaydi: bu versiyaning chiqishi matnli bo‘lib qoladi.

#### Mulohaza yuritish va qadamma-qadam ishlash

Thinking ichki mulohazaga qo‘shimcha sa’y-harakat ajratishga imkon beradi. Google tavsiflagan bazaviy model rejimida standart daraja — `high`; `low`, `medium`, `high` mavjud. Bu qiymatlar Google’ning bazaviy modelini tavsiflaydi; Ailoot API orqali boshqarish rejimi va mavjudligi tanlangan metod hamda model variantiga bog‘liq. Asosiy ssenariylar murakkab dasturlash, algoritmlar yaratish, strategik rejalashtirish va yechimni qadamma-qadam yaxshilashni o‘z ichiga oladi. Bu, ayniqsa, bir nechta o‘zaro bog‘liq talabni hisobga olish va oraliq natijalarga qaytish kerak bo‘lganda foydali.

Model imkoniyatlari funksiya chaqiruvlari, kod bajarish va tuzilmali javoblarni o‘z ichiga oladi. Kontekstni keshlash, qidiruv natijalari bilan asoslash, Google Maps va veb-manzillar mazmunidan foydalanish qo‘llab-quvvatlanadi; paketli qayta ishlash ko‘zda tutilgan. Bunday to‘plam model ma’lumotlarni tahlil qilib, keyingi vositani tanlaydigan va yakuniy natijani shakllantiradigan jarayonni qurishga imkon beradi. Har bir vositaning haqiqiy mavjudligi model bilan ishlash metodiga bog‘liq.

#### Versiya va xususiyatlar

Karta `gemini-3.1-pro-preview` dastlabki versiyasiga tegishli. Uning asosida Gemini 3 Pro turadi. Ishlab chiqaruvchi buyruq qobig‘i va foydalanuvchi vositalari bilan bog‘liq jarayonlarga yo‘naltirilgan `gemini-3.1-pro-preview-customtools` variantini alohida belgilaydi. Uning vosita tanlashdagi ustuvorliklari va xatti-harakat xususiyatlari oddiy Preview versiyasining xususiyatlari emas.

Modelda bazaviy yo‘nalishning umumiy cheklovlari saqlanadi: javoblarda to‘qima ma’lumotlar bo‘lishi, ayrim so‘rovlar esa sekin bajarilishi yoki kutish vaqti tugashi mumkin. Ko‘p bosqichli mulohaza, katta kontekst va ma’lumotlardan foydalanish murakkab topshiriq bilan ishlashga yordam beradi, lekin har bir yaratilgan xulosani tekshirilgan faktga aylantirmaydi.

Amaliy vazifa

### Amaliy vazifa

Ingliz tilidagi texnik misol

```
Design a dependency-aware work order

Plan execution for these tasks: A has no dependency; B depends on A; C depends on A; D depends on both B and C. At most two tasks may run together, and each takes one hour. Give the earliest valid schedule, a general scheduling algorithm and a test that catches starting D before C finishes.
```

#### Kutiladigan natija

```
A time-slot schedule, algorithm pseudocode and a dependency-violation test case.
```

#### Natijani tekshirish

```
Check that the proposed schedule respects both dependencies and the two-task concurrency limit.
```

**Ailoot · Anthropic Messages** `POST /v1/messages` `gemini-pro-agent`

[`gemini-pro-agent`](https://ailoot.ai/models/uz/#m=gemini-pro-agent&route=Core&caller=gemini-pro-agent&fmt=messages)

Google /`gemini-pro-agent`

### Boshlash

Murakkab dasturlash vazifalari, katta materiallar tahlili va vositalar bilan aniq ko‘p bosqichli ishlash uchun Google’ning multimodal modeli.

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

| Maydon | Tur | Talab | Qiymatlar va cheklovlar | Standart |
| --- | --- | --- | --- | --- |
| Maydon`model` | Tur`string` | TalabMajburiy | Qiymatlar va cheklovlar gemini-pro-agent | Standart— |
| Maydon`messages` | Tur`message[]` | TalabMajburiy | Qiymatlar va cheklovlar Elementlarning eng kam soni: 1 | Standart— |
| Maydon`messages[].role` | Tur`string` | TalabMajburiy | Qiymatlar va cheklovlar user, assistant | Standart— |
| Maydon`messages[].content` | Tur`string\|content_block[]` | TalabMajburiy | Qiymatlar va cheklovlar | Standart— |
| Maydon`system` | Tur`string\|content_block[]` | TalabIxtiyoriy | Qiymatlar va cheklovlar | Standart— |
| Maydon`max_tokens` | Tur`integer` | TalabMajburiy | Qiymatlar va cheklovlar Eng kam: 1 Cheklov qo‘llanadigan obyekt: Tanlangan model yoki kartaning aniq yuqori chegarasi | Standart— |
| Maydon`stream` | Tur`boolean` | TalabIxtiyoriy | Qiymatlar va cheklovlar | Standartfalse |
| Maydon`temperature` | Tur`number` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`top_p` | Tur`number` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`stop_sequences` | Tur`string[]` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`tools` | Tur`tool[]` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`tools[].name` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar Quyidagi holatda qo‘llanadi: Vosita taqdim etilgan | Standart— |
| Maydon`tools[].description` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar | Standart— |
| Maydon`tools[].input_schema` | Tur`JSON_schema` | TalabIxtiyoriy | Qiymatlar va cheklovlar | Standart— |
| Maydon`tool_choice` | Tur`object` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`thinking.type` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`thinking.budget_tokens` | Tur`integer` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`output_config.effort` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`metadata` | Tur`object` | TalabIxtiyoriy | Qiymatlar va cheklovlar | Standart— |
| Maydon`cache_control` | Tur`object` | TalabIxtiyoriy | Qiymatlar 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

| Parametr | Parametr talablari |
| --- | --- |
| Parametr`material_types` | Parametr talablaritext, image |
| Parametr`required` | Parametr talablarimodel, messages, max\_tokens |
| Parametr`optional_controls` | Parametr talablarinull |
| Parametr`content_type` | Parametr talablariapplication/json |
| Parametr`text_file_material` | Parametr 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

Kirish

0,002 US$ */ 1K*

Chiqish

0,012 US$ */ 1K*

Keshdan o‘qish

0,0002 US$ */ 1K*

#### So‘rov uzunligiga qarab narxlar · Anthropic Messages

| So‘rov hajmi, tokenlarda | Kirish | Chiqish | Keshdan o‘qish | Keshga yozish | Kesh 5 daqiqa | Kesh 1 soat |
| --- | --- | --- | --- | --- | --- | --- |
| So‘rov hajmi, tokenlarda(0; 200 000\] | Kirish0,002 US$ | Chiqish0,012 US$ | Keshdan o‘qish0,0002 US$ | Keshga yozishAsosiy: — | Kesh 5 daqiqaAsosiy: — | Kesh 1 soatAsosiy: — |
| So‘rov hajmi, tokenlarda(200 000; ∞) | Kirish0,004 US$ | Chiqish0,018 US$ | Keshdan o‘qish0,0004 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 →](https://ailoot.ai/docs/uz/billing/reserve/)

### So‘rov namunalari

#### Ailoot · Anthropic Messages

Matn namunasiKirish, rasmPython SDKNode.js SDKPython oqimi

```bash
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-pro-agent", "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
```

```bash
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-pro-agent", "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
```

```python
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-pro-agent",
    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"))
```

```js
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-pro-agent",
  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);
```

```python
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-pro-agent',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

| Maydon | Tur |
| --- | --- |
| Maydon`id` | Turstring |
| Maydon`model` | Turstring |
| Maydon`content[]` | Turtext\|thinking\|tool\_use\|other content block |
| Maydon`stop_reason` | Turstring\|null |
| Maydon`usage` | Turobject |

Xatolar va keyingi qadamlar

| Javob | Shart | Keyingi qadam |
| --- | --- | --- |
| Javob400 · `invalid_request_error` | ShartMajburiy maydonlar, material ifodasi yoki parametr qiymati noto‘g‘ri | Keyingi qadamYangi yaratish so‘rovidan oldin ko‘rsatilgan maydonlarni tuzating. |

### Taxalluslar

#### Model taxalluslari

**Ailoot** [`gemini-pro-agent`](https://ailoot.ai/models/uz/#m=gemini-pro-agent&route=Core&caller=gemini-pro-agent&fmt=messages)

#### Usul yo‘llari taxalluslari

Yuqorida ko‘rsatilgan usul yo‘llaridan foydalaning.

#### Chaqirish uchun tegishli ID lar

[`gemini-pro-agent`](https://ailoot.ai/models/uz/#m=gemini-pro-agent&route=Core&caller=gemini-pro-agent&fmt=messages)

**Ailoot · Gemini generateContent** `POST /v1beta/models/{model}:generateContent` `gemini-pro-agent`

[`gemini-pro-agent`](https://ailoot.ai/models/uz/#m=gemini-pro-agent&route=Core&caller=gemini-pro-agent&fmt=gemini)

Google /`gemini-pro-agent`

### Boshlash

Murakkab dasturlash vazifalari, katta materiallar tahlili va vositalar bilan aniq ko‘p bosqichli ishlash uchun Google’ning multimodal modeli.

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

| Maydon | Tur | Talab | Qiymatlar va cheklovlar | Standart |
| --- | --- | --- | --- | --- |
| Maydon`path.model` | Tur`string` | TalabMajburiy | Qiymatlar va cheklovlar gemini-pro-agent | Standart— |
| Maydon`contents` | Tur`content[]` | TalabMajburiy | Qiymatlar va cheklovlar Elementlarning eng kam soni: 1 | Standart— |
| Maydon`contents[].role` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar user, model | Standart— |
| Maydon`contents[].parts` | Tur`part[]` | TalabMajburiy | Qiymatlar va cheklovlar | Standart— |
| Maydon`systemInstruction` | Tur`content` | TalabIxtiyoriy | Qiymatlar va cheklovlar | Standart— |
| Maydon`generationConfig.maxOutputTokens` | Tur`integer` | TalabIxtiyoriy | Qiymatlar va cheklovlar Eng kam: 1 Modelga bogʻliq | Standart— |
| Maydon`generationConfig.temperature` | Tur`number` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`generationConfig.topP` | Tur`number` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`generationConfig.topK` | Tur`integer` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`generationConfig.stopSequences` | Tur`string[]` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`generationConfig.thinkingConfig.includeThoughts` | Tur`boolean` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`generationConfig.thinkingConfig.thinkingBudget` | Tur`integer` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`tools[].functionDeclarations` | Tur`function_declaration[]` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`toolConfig.functionCallingConfig.mode` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`safetySettings` | Tur`object[]` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`sessionId` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar | Standart— |

Kirish materiallari birikmalari

**Matn** · UTF8 matni

`contents[].parts[].text`

**Matn + rasm**

`parts[].inlineData={mimeType,data}`

Usul parametrlari va hayot sikli

| Parametr | Parametr talablari |
| --- | --- |
| Parametr`material_types` | Parametr talablaritext, image |
| Parametr`required` | Parametr talablaricontents |
| Parametr`optional_controls` | Parametr talablarinull |
| Parametr`content_type` | Parametr talablariapplication/json |
| Parametr`text_file_material` | Parametr 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

Kirish

0,002 US$ */ 1K*

Chiqish

0,012 US$ */ 1K*

Keshdan o‘qish

0,0002 US$ */ 1K*

#### So‘rov uzunligiga qarab narxlar · Gemini generateContent

| So‘rov hajmi, tokenlarda | Kirish | Chiqish | Keshdan o‘qish | Keshga yozish | Kesh 5 daqiqa | Kesh 1 soat |
| --- | --- | --- | --- | --- | --- | --- |
| So‘rov hajmi, tokenlarda(0; 200 000\] | Kirish0,002 US$ | Chiqish0,012 US$ | Keshdan o‘qish0,0002 US$ | Keshga yozishAsosiy: — | Kesh 5 daqiqaAsosiy: — | Kesh 1 soatAsosiy: — |
| So‘rov hajmi, tokenlarda(200 000; ∞) | Kirish0,004 US$ | Chiqish0,018 US$ | Keshdan o‘qish0,0004 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 →](https://ailoot.ai/docs/uz/billing/reserve/)

### So‘rov namunalari

#### Ailoot · Gemini generateContent

Matn namunasiKirish, rasmPython SDKNode.js SDKPython oqimi

```bash
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-pro-agent: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
```

```bash
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-pro-agent: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
```

```python
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-pro-agent", 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())
```

```js
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-pro-agent", 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);
```

```python
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-pro-agent',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

| Maydon | Tur |
| --- | --- |
| Maydon`responseId` | Turstring |
| Maydon`modelVersion` | Turstring |
| Maydon`candidates[].content.parts[]` | Turtext\|inlineData\|functionCall\|other part |
| Maydon`candidates[].finishReason` | Turstring |
| Maydon`usageMetadata` | Turobject |

Xatolar va keyingi qadamlar

| Javob | Shart | Keyingi qadam |
| --- | --- | --- |
| Javob400 · `invalid_request_error` | ShartMajburiy maydonlar, material ifodasi yoki parametr qiymati noto‘g‘ri | Keyingi qadamYangi yaratish so‘rovidan oldin ko‘rsatilgan maydonlarni tuzating. |

### Taxalluslar

#### Model taxalluslari

**Ailoot** [`gemini-pro-agent`](https://ailoot.ai/models/uz/#m=gemini-pro-agent&route=Core&caller=gemini-pro-agent&fmt=gemini)

#### Usul yo‘llari taxalluslari

Yuqorida ko‘rsatilgan usul yo‘llaridan foydalaning.

#### Chaqirish uchun tegishli ID lar

[`gemini-pro-agent`](https://ailoot.ai/models/uz/#m=gemini-pro-agent&route=Core&caller=gemini-pro-agent&fmt=gemini)

FAQ · Gemini Pro Agent

Qanday kirish ma’lumotlari va natijalar mavjud?

`POST /v1/messages` · `gemini-pro-agent`: `text`, `image` → `text` `POST /v1beta/models/{model}:generateContent` · `gemini-pro-agent`: `text`, `image` → `text`

So‘rov qaysi maydonlardan foydalanadi?

`POST /v1/messages` · `gemini-pro-agent`: `model`, `messages`, `system`, `max_tokens`, `stream`, `metadata` `POST /v1beta/models/{model}:generateContent` · `gemini-pro-agent`: `contents`, `systemInstruction`, `sessionId`

Qanday cheklovlar amal qiladi?

`POST /v1/messages` · `gemini-pro-agent`: `ctx`: `1048576`; `max_out`: `65536`; `messages.min_items`: `1`; `max_tokens.minimum`: `1` `POST /v1beta/models/{model}:generateContent` · `gemini-pro-agent`: `ctx`: `1048576`; `max_out`: `65536`; `contents.min_items`: `1`

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](https://ailoot.ai/docs/uz/billing/subscriptions/) · [Model narxlarini ko‘rish](https://ailoot.ai/models/uz/)

## 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](mailto:support@ailoot.ai) · [Oferta va litsenziya shartnomasi](https://ailoot.ai/legal/offer?lang=uz)

## Ailoot · Kompaniya va uning loyihalar portfeli





Ailoot to‘plangan faoliyat tajribasi, keng mijozlar bazasi, barqaror xizmat va doimiy KPI nazoratiga tayanadi.





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





Ailoot bu faoliyat tajribasini mijozlar mahsulotlari, agentlar, ilovalar va avtomatlashtirishlarda AI imkoniyatlariga API orqali kirishni ta’minlashda qo‘llaydi.
