Source: https://ailoot.ai/models/uz/gpt-6-astra/
Canonical: https://ailoot.ai/models/uz/gpt-6-astra/
Language: uz

# OpenAI: GPT-6 Astra

[Markdown](https://ailoot.ai/models/uz/gpt-6-astra/index.md) · [JSON](https://ailoot.ai/models/uz/gpt-6-astra/facts.json)

## [OpenAI: GPT-6 Astra](https://ailoot.ai/models/uz/gpt-6-astra/)

GPT-6 Astra murakkab mulohaza, dasturlash, tadqiqotlar va hujjat tayyorlash uchun mo‘ljallangan. Ko‘p bosqichli vazifalarda matn, tasvirlar va vositalar bilan ishlaydi.

- [**Ailoot · Anthropic Messages** `POST /v1/messages` `gpt-6-astra`](https://ailoot.ai/models/uz/gpt-6-astra/#method-0)
- [**Ailoot · OpenAI Responses** `POST /v1/responses` `gpt-6-astra`](https://ailoot.ai/models/uz/gpt-6-astra/#method-1)
- [**Ailoot · OpenAI Chat** `POST /v1/chat/completions` `gpt-6-astra`](https://ailoot.ai/models/uz/gpt-6-astra/#method-2)
- [**Ailoot Ultra · OpenAI Chat** `POST /v1/chat/completions` `gpt-6-astra`](https://ailoot.ai/models/uz/gpt-6-astra/#method-3)
- [**Ailoot Ultra · Anthropic Messages** `POST /v1/messages` `gpt-6-astra`](https://ailoot.ai/models/uz/gpt-6-astra/#method-4)
- [**Ailoot · Anthropic Messages** `POST /v1/messages` `gpt`](https://ailoot.ai/models/uz/gpt-6-astra/#method-5)
- [**Ailoot · OpenAI Responses** `POST /v1/responses` `gpt`](https://ailoot.ai/models/uz/gpt-6-astra/#method-6)
- [**Ailoot · OpenAI Chat** `POST /v1/chat/completions` `gpt`](https://ailoot.ai/models/uz/gpt-6-astra/#method-7)
- [**Ailoot · Anthropic Messages** `POST /v1/messages` `gpt-latest`](https://ailoot.ai/models/uz/gpt-6-astra/#method-8)
- [**Ailoot · OpenAI Responses** `POST /v1/responses` `gpt-latest`](https://ailoot.ai/models/uz/gpt-6-astra/#method-9)
- [**Ailoot · OpenAI Chat** `POST /v1/chat/completions` `gpt-latest`](https://ailoot.ai/models/uz/gpt-6-astra/#method-10)
- [**Ailoot Ultra · OpenAI Responses** `POST /v1/responses` `gpt-6-astra`](https://ailoot.ai/models/uz/gpt-6-astra/#method-11)
- [**Ailoot Ultra · OpenAI Chat** `POST /v1/chat/completions` `openai/gpt-6-astra`](https://ailoot.ai/models/uz/gpt-6-astra/#method-12)
- [**Ailoot Ultra · Anthropic Messages** `POST /v1/messages` `openai/gpt-6-astra`](https://ailoot.ai/models/uz/gpt-6-astra/#method-13)
- [**Ailoot Ultra · OpenAI Responses** `POST /v1/responses` `openai/gpt-6-astra`](https://ailoot.ai/models/uz/gpt-6-astra/#method-14)
- [**Ailoot Ultra · OpenAI Chat** `POST /v1/chat/completions` `~openai/gpt-astra-latest`](https://ailoot.ai/models/uz/gpt-6-astra/#method-15)
- [**Ailoot Ultra · Anthropic Messages** `POST /v1/messages` `~openai/gpt-astra-latest`](https://ailoot.ai/models/uz/gpt-6-astra/#method-16)
- [**Ailoot Ultra · OpenAI Responses** `POST /v1/responses` `~openai/gpt-astra-latest`](https://ailoot.ai/models/uz/gpt-6-astra/#method-17)

Model haqida

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

#### Tadqiqotlar, dasturlash va hujjat yaratish

GPT-6 Astra — yuqori talab qo‘yadigan mulohaza, dasturlash, tadqiqot va professional ish vazifalari uchun OpenAI modeli. Ishlab chiqaruvchi hujjat yaratish va kompyuter interfeysi bilan ishlashni alohida ta’kidlaydi. Model ma’lumot yig‘ish, ishni bajarish va oldingi qadamlar natijalarini hisobga olish kerak bo‘lgan amallar ketma-ketligi uchun mo‘ljallangan.

OpenAI ma’lumotiga ko‘ra, Astra talablar o‘zgarganda umumiy g‘oyani saqlaydi: qo‘shimchalarni hisobga oladi, ish jarayonini tuzatadi va bog‘liq savollarga javob beradi. Ma’lumotlarni turlicha talqin qilish mumkin bo‘lsa, unga vazifa chegaralari, yakunlash mezonlari va aniqlashtirish so‘rash qoidasini belgilash foydali. Natija ohangi va tuzilmasini ham aniq tavsiflash mumkin: model batafsil, tartiblangan javoblarga moyil.

#### Mulohaza ishning bir qismi sifatida

`low`, `medium`, `high`, `xhigh` va `max` darajalari qo‘llab-quvvatlanadi. `none` orqali mulohazani o‘chirish ko‘zda tutilmagan. Sa’y-harakat darajasi yechish jarayonini boshqaradi, yakuniy matn hajmi esa alohida belgilanadi. Aynan shunday natija kerak bo‘lsa, murakkab mulohaza qisqa javob bilan yakunlanishi mumkin.

OpenAI tahlil chuqurligidan mustaqil ikkita bajarish rejimini ko‘zda tutadi: oddiy va kengaytirilgan. Standart holatda oddiy rejim qo‘llanadi. Kengaytirilgan rejim qo‘shimcha vaqt va ko‘proq token ishlatish mumkin bo‘lgan qiyin vazifalar uchun mo‘ljallangan. Rejim bajarish usulini, sa’y-harakat darajasi esa uning ichidagi mulohaza chuqurligini belgilaydi. Tanlov `Responses` uchun tavsiflangan va ilova qo‘llab-quvvatlashini talab qiladi; ishlab chiqaruvchining e’lon qilingan qobiliyati uning joriy Ailoot metodida yoqilganini tasdiqlamaydi.

GPT-6 oilasida avvalgi so‘rov prefiksini saqlagan holda suhbatni davom ettirishlar orasida mulohaza darajasini o‘zgartirish ko‘zda tutilgan. Ishni davom ettirish tegishli holatni yuborishni talab qiladi. Davomli topshiriqni boshqarish imkoniyatlari muloqot formati va ilova bu amallarni qo‘llab-quvvatlashiga bog‘liq.

#### Matnli va vizual materiallar

Model matn va tasvirlarni qabul qiladi, matn qaytaradi, oqimli chiqish va tuzilmali natijani qo‘llab-quvvatlaydi. OpenAI 1 050 000 token kontekst, 922 000 maksimal kirish va 128 000 token maksimal chiqishni ko‘rsatadi. Bilimlar davri — 2026-yil 30-aprel.

Tasvir ko‘rinadigan mazmunni tahlil qilish, matn o‘qish va tafsilotlar haqidagi savollar uchun ishlatiladi. Batafsil tahlil uchun turli batafsillik darajalari ko‘zda tutilgan. Kontekst hajmi va javob chegarasi farq qiladi: uzun boshlang‘ich material avtomatik ravishda xuddi shunday uzun natijaga aylanmaydi.

#### Bitta vazifa ichidagi bir nechta amal

Rasmiy imkoniyatlar to‘plamida funksiya chaqirish, fayllar va internetda qidiruv, kod va buyruqlarni bajarish, fayllarni o‘zgartirish, kompyuterdagi amallar va kerakli vositani qidirish bor. Vositalarni chaqirish uchun `Responses` ishlatiladi; `Chat Completions` vositalarsiz matn almashinuvini qo‘llab-quvvatlaydi.

Tegishli ulanishda ishlab chiqaruvchi alohida tasvir yaratish vositasi, ko‘nikmalar bilan ishlash va MCP orqali tashqi vositalarni ham ko‘zda tutadi. Modelning bevosita javobi matnli bo‘lib qoladi; rasm yaratish natijasini alohida vosita hosil qiladi. Uning ishlab chiqaruvchida mavjudligi bu imkoniyatlar har qanday Ailoot metodida ulanganini anglatmaydi.

Oila hujjatlari asinxron chaqiruvlarni tavsiflaydi: ilova bitta funksiyani bajarayotganda model ishning mustaqil qismini davom ettirishi mumkin. Ular bajarish vaqtida topshiriqni aniqlashtirish va allaqachon yakunlangan amallar bilan davom ettirishni ham ko‘zda tutadi. Bu ssenariylar uchun ilova tegishli muloqotni qo‘llab-quvvatlashi va chaqiruvlar natijalarini qaytarishi kerak.

#### Natija shakli va takroriy kontekst

Tuzilmali chiqish belgilangan sxema bo‘yicha natija, masalan, muayyan maydonlar va turlarga ega ma’lumotlar tayyorlashga yordam beradi. Sxema natijani tartiblaydi, ma’lumotlar to‘g‘riligi esa mazmuniy tekshiruvni talab qiladi. Davomli ishda mavjud mulohaza holatini saqlash va to‘plangan kontekstni qisqartirish ko‘zda tutilgan.

Keshlash kirishning takrorlanuvchi prefiksi uchun mo‘ljallangan. Qidiruv, buyruqlar yoki kompyuterdagi amallarni qo‘llab-quvvatlash kerakli vositalar ulangandagi model qobiliyatlarini tavsiflaydi; aniq so‘rovdagi funksiyalar to‘plami tanlangan metod va mavjud ulanishlarga bog‘liq.

Amaliy vazifa

### Amaliy vazifa

Ingliz tilidagi texnik misol

```
Prepare a source-backed decision memo

Prepare a one-page decision memo from these findings. F1: The legacy system exports CSV but has no audit log. F2: The replacement imports CSV and records changes. F3: A pilot imported 40 of 50 records; 10 failed because owner_id was missing. Recommend the next migration step, define acceptance criteria and preserve what the pilot has actually proved.
```

#### Kutiladigan natija

```
A memo with recommendation, evidence references, unresolved data issue and acceptance criteria for a later full migration.
```

#### Natijani tekshirish

```
Check that the 40-record result is not reported as a completed 50-record migration and that missing owner_id remains a blocker.
```

**Ailoot · Anthropic Messages** `POST /v1/messages` `gpt-6-astra`

[`gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt-6-astra&fmt=messages)

OpenAI /`gpt-6-astra`

Model ID

- `gpt-6-astra`
- `gpt`
- `gpt-latest`

### Boshlash

GPT-6 Astra murakkab mulohaza, dasturlash, tadqiqotlar va hujjat tayyorlash uchun mo‘ljallangan. Ko‘p bosqichli vazifalarda matn, tasvirlar va vositalar bilan ishlaydi.

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 050 000 tokens

Eng katta chiqish

128 000 tokens

Chiqish formati

json yoki SSE

| Maydon | Tur | Talab | Qiymatlar va cheklovlar | Standart |
| --- | --- | --- | --- | --- |
| Maydon`model` | Tur`string` | TalabMajburiy | Qiymatlar va cheklovlar gpt-6-astra | 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,01 US$ */ 1K*

Chiqish

0,05 US$ */ 1K*

Keshdan o‘qish

0,001 US$ */ 1K*

Keshga yozish

0,0125 US$ */ 1K*

Keshga yozish, 5 daqiqa

0,0125 US$ */ 1K tokens*

fast ko‘paytirgichi

×2

flex ko‘paytirgichi

×0.5

#### 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; 272 000\] | Kirish0,01 US$ | Chiqish0,05 US$ | Keshdan o‘qish0,001 US$ | Keshga yozish0,0125 US$ | Kesh 5 daqiqa0,0125 US$ | Kesh 1 soatAsosiy: — |
| So‘rov hajmi, tokenlarda(272 000; ∞) | Kirish0,02 US$ | Chiqish0,075 US$ | Keshdan o‘qish0,002 US$ | Keshga yozish0,025 US$ | Kesh 5 daqiqa0,025 US$ | 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/)

#### 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.

| Sozlama | Tariflar jadvali | Kontekst tokenlari soni bundan ko‘p | Kontekst tokenlari soni bundan oshmaydi, chegara kiradi | To‘lov |
| --- | --- | --- | --- | --- |
| SozlamaOpenAI Chat · Tokenlar uchun asosiy tariflar | Tariflar jadvaliAsosiy tarif | Kontekst tokenlari soni bundan ko‘p— | Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘q | To‘lov Kirish · Kirish tokenlari **$0.02** / 1K token Chiqish · Chiqish tokenlari **$0.1** / 1K token Kirish · Keshdan o‘qish **$0.002** / 1K token Kirish · Keshga yozish **$0.025** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaOpenAI Chat · So‘rov uzunligi bo‘yicha 1-daraja | Tariflar jadvali— | Kontekst tokenlari soni bundan ko‘p0 | Kontekst tokenlari soni bundan oshmaydi, chegara kiradi272 000 | To‘lov Kirish · Kirish tokenlari **$0.02** / 1K token Chiqish · Chiqish tokenlari **$0.1** / 1K token Kirish · Keshdan o‘qish **$0.002** / 1K token Kirish · Keshga yozish **$0.025** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaOpenAI Chat · So‘rov uzunligi bo‘yicha 2-daraja | Tariflar jadvali— | Kontekst tokenlari soni bundan ko‘p272 000 | Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘q | To‘lov Kirish · Kirish tokenlari **$0.04** / 1K token Chiqish · Chiqish tokenlari **$0.15** / 1K token Kirish · Keshdan o‘qish **$0.004** / 1K token Kirish · Keshga yozish **$0.05** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaAnthropic Messages · Tokenlar uchun asosiy tariflar | Tariflar jadvaliAsosiy tarif | Kontekst tokenlari soni bundan ko‘p— | Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘q | To‘lov Kirish · Kirish tokenlari **$0.02** / 1K token Chiqish · Chiqish tokenlari **$0.1** / 1K token Kirish · Keshdan o‘qish **$0.002** / 1K token Kirish · Keshga yozish **$0.025** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaAnthropic Messages · So‘rov uzunligi bo‘yicha 1-daraja | Tariflar jadvali— | Kontekst tokenlari soni bundan ko‘p0 | Kontekst tokenlari soni bundan oshmaydi, chegara kiradi272 000 | To‘lov Kirish · Kirish tokenlari **$0.02** / 1K token Chiqish · Chiqish tokenlari **$0.1** / 1K token Kirish · Keshdan o‘qish **$0.002** / 1K token Kirish · Keshga yozish **$0.025** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaAnthropic Messages · So‘rov uzunligi bo‘yicha 2-daraja | Tariflar jadvali— | Kontekst tokenlari soni bundan ko‘p272 000 | Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘q | To‘lov Kirish · Kirish tokenlari **$0.04** / 1K token Chiqish · Chiqish tokenlari **$0.15** / 1K token Kirish · Keshdan o‘qish **$0.004** / 1K token Kirish · Keshga yozish **$0.05** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaOpenAI Responses · Tokenlar uchun asosiy tariflar | Tariflar jadvaliAsosiy tarif | Kontekst tokenlari soni bundan ko‘p— | Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘q | To‘lov Kirish · Kirish tokenlari **$0.02** / 1K token Chiqish · Chiqish tokenlari **$0.1** / 1K token Kirish · Keshdan o‘qish **$0.002** / 1K token Kirish · Keshga yozish **$0.025** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaOpenAI Responses · So‘rov uzunligi bo‘yicha 1-daraja | Tariflar jadvali— | Kontekst tokenlari soni bundan ko‘p0 | Kontekst tokenlari soni bundan oshmaydi, chegara kiradi272 000 | To‘lov Kirish · Kirish tokenlari **$0.02** / 1K token Chiqish · Chiqish tokenlari **$0.1** / 1K token Kirish · Keshdan o‘qish **$0.002** / 1K token Kirish · Keshga yozish **$0.025** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaOpenAI Responses · So‘rov uzunligi bo‘yicha 2-daraja | Tariflar jadvali— | Kontekst tokenlari soni bundan ko‘p272 000 | Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘q | To‘lov Kirish · Kirish tokenlari **$0.04** / 1K token Chiqish · Chiqish tokenlari **$0.15** / 1K token Kirish · Keshdan o‘qish **$0.004** / 1K token Kirish · Keshga yozish **$0.05** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |

### 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": "gpt-6-astra", "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": "gpt-6-astra", "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="gpt-6-astra",
    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: "gpt-6-astra",
  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='gpt-6-astra',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

<strong>Ailoot</strong> [`gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt-6-astra&fmt=messages), [`gpt`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt&fmt=messages), [`gpt-latest`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt-latest&fmt=messages)
**Ailoot Ultra** [`gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=gpt-6-astra&fmt=messages), [`openai/gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=openai%2Fgpt-6-astra&fmt=messages), [`~openai/gpt-astra-latest`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=~openai%2Fgpt-astra-latest&fmt=messages)

#### Usul yo‘llari taxalluslari

`/chat/completions`

#### Chaqirish uchun tegishli ID lar

[`openai/gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=openai%2Fgpt-6-astra&fmt=messages), [`gpt`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt&fmt=messages), [`gpt-latest`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt-latest&fmt=messages), [`~openai/gpt-astra-latest`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=~openai%2Fgpt-astra-latest&fmt=messages), [`gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt-6-astra&fmt=messages), [`gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=gpt-6-astra&fmt=messages)

**Ailoot · OpenAI Responses** `POST /v1/responses` `gpt-6-astra`

[`gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt-6-astra&fmt=responses)

OpenAI /`gpt-6-astra`

Model ID

- `gpt-6-astra`
- `gpt`
- `gpt-latest`

### Boshlash

GPT-6 Astra murakkab mulohaza, dasturlash, tadqiqotlar va hujjat tayyorlash uchun mo‘ljallangan. Ko‘p bosqichli vazifalarda matn, tasvirlar va vositalar bilan ishlaydi.

Qabul qilinadigan kirish ma’lumotlari

Matn · Rasmlar

Natijalar

Matn

### Ailoot da mavjud · kirish ma’lumotlari va usullar

**Ailoot · OpenAI Responses** `POST /v1/responses`

Kirish

`text`, `image`

Chiqish

`text`

Kontekst

1 050 000 tokens

Eng katta chiqish

128 000 tokens

Chiqish formati

json yoki SSE

| Maydon | Tur | Talab | Qiymatlar va cheklovlar | Standart |
| --- | --- | --- | --- | --- |
| Maydon`model` | Tur`string` | TalabMajburiy | Qiymatlar va cheklovlar gpt-6-astra | Standart— |
| Maydon`input` | Tur`string\|input_item[]` | TalabMajburiy | Qiymatlar va cheklovlar | Standart— |
| Maydon`instructions` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar | Standart— |
| Maydon`input[].type` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar message, reasoning, function\_call, function\_call\_output | Standart— |
| Maydon`input[].content` | Tur`string\|content_part[]` | TalabIxtiyoriy | Qiymatlar va cheklovlar | Standart— |
| Maydon`input[].call_id` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar Quyidagi holatda qo‘llanadi: function\_call\_output; haqiqatan qaytarilgan call\_id qiymatini saqlang | Standart— |
| Maydon`input[].output` | Tur`string\|content_part[]` | TalabIxtiyoriy | Qiymatlar va cheklovlar Quyidagi holatda qo‘llanadi: function\_call\_output | Standart— |
| Maydon`max_output_tokens` | Tur`integer` | TalabIxtiyoriy | Qiymatlar va cheklovlar Eng kam: 1 Modelga bogʻliq | 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`tools` | Tur`tool[]` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`tool_choice` | Tur`string\|object` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`parallel_tool_calls` | Tur`boolean` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`reasoning.effort` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`reasoning.summary` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`text.format` | Tur`object` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`text.verbosity` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`include` | Tur`string[]` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`store` | Tur`boolean` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`previous_response_id` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar ID talabi: Faqat qo‘llab-quvvatlanadigan davom ettirishdan olingan haqiqiy javob IDsi Modelga bogʻliq | Standart— |
| Maydon`service_tier` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`prompt_cache_key` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`prompt_cache_options` | Tur`object` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |

Kirish materiallari birikmalari

**Matn** · UTF8 matni

`Kirish matni yoki input_text qismi`

**Matn + rasm**

`{type:input_image,image_url}`

Usul parametrlari va hayot sikli

| Parametr | Parametr talablari |
| --- | --- |
| Parametr`material_types` | Parametr talablaritext, image |
| Parametr`required` | Parametr talablarimodel, input |
| 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,01 US$ */ 1K*

Chiqish

0,05 US$ */ 1K*

Keshdan o‘qish

0,001 US$ */ 1K*

Keshga yozish

0,0125 US$ */ 1K*

Keshga yozish, 5 daqiqa

0,0125 US$ */ 1K tokens*

fast ko‘paytirgichi

×2

flex ko‘paytirgichi

×0.5

#### So‘rov uzunligiga qarab narxlar · OpenAI Responses

| So‘rov hajmi, tokenlarda | Kirish | Chiqish | Keshdan o‘qish | Keshga yozish | Kesh 5 daqiqa | Kesh 1 soat |
| --- | --- | --- | --- | --- | --- | --- |
| So‘rov hajmi, tokenlarda(0; 272 000\] | Kirish0,01 US$ | Chiqish0,05 US$ | Keshdan o‘qish0,001 US$ | Keshga yozish0,0125 US$ | Kesh 5 daqiqa0,0125 US$ | Kesh 1 soatAsosiy: — |
| So‘rov hajmi, tokenlarda(272 000; ∞) | Kirish0,02 US$ | Chiqish0,075 US$ | Keshdan o‘qish0,002 US$ | Keshga yozish0,025 US$ | Kesh 5 daqiqa0,025 US$ | 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/)

#### 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.

| Sozlama | Tariflar jadvali | Kontekst tokenlari soni bundan ko‘p | Kontekst tokenlari soni bundan oshmaydi, chegara kiradi | To‘lov |
| --- | --- | --- | --- | --- |
| SozlamaOpenAI Chat · Tokenlar uchun asosiy tariflar | Tariflar jadvaliAsosiy tarif | Kontekst tokenlari soni bundan ko‘p— | Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘q | To‘lov Kirish · Kirish tokenlari **$0.02** / 1K token Chiqish · Chiqish tokenlari **$0.1** / 1K token Kirish · Keshdan o‘qish **$0.002** / 1K token Kirish · Keshga yozish **$0.025** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaOpenAI Chat · So‘rov uzunligi bo‘yicha 1-daraja | Tariflar jadvali— | Kontekst tokenlari soni bundan ko‘p0 | Kontekst tokenlari soni bundan oshmaydi, chegara kiradi272 000 | To‘lov Kirish · Kirish tokenlari **$0.02** / 1K token Chiqish · Chiqish tokenlari **$0.1** / 1K token Kirish · Keshdan o‘qish **$0.002** / 1K token Kirish · Keshga yozish **$0.025** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaOpenAI Chat · So‘rov uzunligi bo‘yicha 2-daraja | Tariflar jadvali— | Kontekst tokenlari soni bundan ko‘p272 000 | Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘q | To‘lov Kirish · Kirish tokenlari **$0.04** / 1K token Chiqish · Chiqish tokenlari **$0.15** / 1K token Kirish · Keshdan o‘qish **$0.004** / 1K token Kirish · Keshga yozish **$0.05** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaAnthropic Messages · Tokenlar uchun asosiy tariflar | Tariflar jadvaliAsosiy tarif | Kontekst tokenlari soni bundan ko‘p— | Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘q | To‘lov Kirish · Kirish tokenlari **$0.02** / 1K token Chiqish · Chiqish tokenlari **$0.1** / 1K token Kirish · Keshdan o‘qish **$0.002** / 1K token Kirish · Keshga yozish **$0.025** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaAnthropic Messages · So‘rov uzunligi bo‘yicha 1-daraja | Tariflar jadvali— | Kontekst tokenlari soni bundan ko‘p0 | Kontekst tokenlari soni bundan oshmaydi, chegara kiradi272 000 | To‘lov Kirish · Kirish tokenlari **$0.02** / 1K token Chiqish · Chiqish tokenlari **$0.1** / 1K token Kirish · Keshdan o‘qish **$0.002** / 1K token Kirish · Keshga yozish **$0.025** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaAnthropic Messages · So‘rov uzunligi bo‘yicha 2-daraja | Tariflar jadvali— | Kontekst tokenlari soni bundan ko‘p272 000 | Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘q | To‘lov Kirish · Kirish tokenlari **$0.04** / 1K token Chiqish · Chiqish tokenlari **$0.15** / 1K token Kirish · Keshdan o‘qish **$0.004** / 1K token Kirish · Keshga yozish **$0.05** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaOpenAI Responses · Tokenlar uchun asosiy tariflar | Tariflar jadvaliAsosiy tarif | Kontekst tokenlari soni bundan ko‘p— | Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘q | To‘lov Kirish · Kirish tokenlari **$0.02** / 1K token Chiqish · Chiqish tokenlari **$0.1** / 1K token Kirish · Keshdan o‘qish **$0.002** / 1K token Kirish · Keshga yozish **$0.025** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaOpenAI Responses · So‘rov uzunligi bo‘yicha 1-daraja | Tariflar jadvali— | Kontekst tokenlari soni bundan ko‘p0 | Kontekst tokenlari soni bundan oshmaydi, chegara kiradi272 000 | To‘lov Kirish · Kirish tokenlari **$0.02** / 1K token Chiqish · Chiqish tokenlari **$0.1** / 1K token Kirish · Keshdan o‘qish **$0.002** / 1K token Kirish · Keshga yozish **$0.025** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaOpenAI Responses · So‘rov uzunligi bo‘yicha 2-daraja | Tariflar jadvali— | Kontekst tokenlari soni bundan ko‘p272 000 | Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘q | To‘lov Kirish · Kirish tokenlari **$0.04** / 1K token Chiqish · Chiqish tokenlari **$0.15** / 1K token Kirish · Keshdan o‘qish **$0.004** / 1K token Kirish · Keshga yozish **$0.05** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |

### So‘rov namunalari

#### Ailoot · OpenAI Responses

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": "gpt-6-astra", "input": ""}')
f=Path(os.environ["AILOOT_TEXT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 source material")
text=f.read_text(encoding="utf-8")
if not text.strip():raise SystemExit("Source material must contain text")
p["input"]="Summarize this material and quote supporting source passages.\n\n"+text
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/responses \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import base64, json
from pathlib import Path

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

save_result(json.loads(Path("result.json").read_text(encoding="utf-8")))
PY_RESULT
```

```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": "gpt-6-astra", "input": [{"role": "user", "content": [{"type": "input_text", "text": "Read labels and numbers in this image; flag unreadable text."}]}]}')
import base64
f=Path(os.environ["AILOOT_IMAGE_FILE"])
if not f.is_file():raise SystemExit("Choose an actual PNG JPEG or WebP image")
raw=f.read_bytes()
mime="image/png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "image/jpeg" if raw.startswith(b"\xff\xd8") else "image/webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else None
if not mime:raise SystemExit("Use PNG JPEG or WebP")
b64=base64.b64encode(raw).decode()
p["input"][0]["content"].append({"type":"input_image","image_url":"data:"+mime+";base64,"+b64})
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/responses \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import base64, json
from pathlib import Path

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

save_result(json.loads(Path("result.json").read_text(encoding="utf-8")))
PY_RESULT
```

```python
from openai import OpenAI
import os

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

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

save_result(resp.to_dict(mode="json"))
```

```js
import OpenAI from "openai";

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

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

saveResult(resp);
```

```python
from openai import OpenAI
import os
from pathlib import Path
import base64, json
from pathlib import Path

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

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

### Natijalarni olish va saqlash

#### Ailoot · OpenAI Responses

json yoki SSE

##### Barcha tayyor natijalarni saqlash

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

Har bir chiqish elementi va kontent qismini, funksiyaning haqiqiy call\_id qiymatini, shifrlangan fikrlash ma’lumotlari va sarfni saqlang. Oqimli uzatishda hodisa va elementning to‘liq identifikatsiyasini 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

| Maydon | Tur |
| --- | --- |
| Maydon`id` | Turstring |
| Maydon`status` | Turstring |
| Maydon`output[]` | Turmessage\|reasoning\|function\_call\|other item |
| Maydon`output[].content[]` | Turcontent part |
| 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

<strong>Ailoot</strong> [`gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt-6-astra&fmt=responses), [`gpt`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt&fmt=responses), [`gpt-latest`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt-latest&fmt=responses)
**Ailoot Ultra** [`gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=gpt-6-astra&fmt=responses), [`openai/gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=openai%2Fgpt-6-astra&fmt=responses), [`~openai/gpt-astra-latest`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=~openai%2Fgpt-astra-latest&fmt=responses)

#### Usul yo‘llari taxalluslari

`/chat/completions`

#### Chaqirish uchun tegishli ID lar

[`openai/gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=openai%2Fgpt-6-astra&fmt=responses), [`gpt`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt&fmt=responses), [`gpt-latest`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt-latest&fmt=responses), [`~openai/gpt-astra-latest`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=~openai%2Fgpt-astra-latest&fmt=responses), [`gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt-6-astra&fmt=responses), [`gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=gpt-6-astra&fmt=responses)

**Ailoot · OpenAI Chat** `POST /v1/chat/completions` `gpt-6-astra`

[`gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt-6-astra&fmt=chat)

OpenAI /`gpt-6-astra`

Model ID

- `gpt-6-astra`
- `gpt`
- `gpt-latest`

### Boshlash

GPT-6 Astra murakkab mulohaza, dasturlash, tadqiqotlar va hujjat tayyorlash uchun mo‘ljallangan. Ko‘p bosqichli vazifalarda matn, tasvirlar va vositalar bilan ishlaydi.

Qabul qilinadigan kirish ma’lumotlari

Matn · Rasmlar

Natijalar

Matn

### Ailoot da mavjud · kirish ma’lumotlari va usullar

**Ailoot · OpenAI Chat** `POST /v1/chat/completions`

Kirish

`text`, `image`

Chiqish

`text`

Kontekst

1 050 000 tokens

Eng katta chiqish

128 000 tokens

Chiqish formati

json yoki SSE

| Maydon | Tur | Talab | Qiymatlar va cheklovlar | Standart |
| --- | --- | --- | --- | --- |
| Maydon`model` | Tur`string` | TalabMajburiy | Qiymatlar va cheklovlar gpt-6-astra | Standart— |
| Maydon`messages` | Tur`message[]` | TalabMajburiy | Qiymatlar va cheklovlar Elementlarning eng kam soni: 1 | Standart— |
| Maydon`messages[].role` | Tur`string` | TalabMajburiy | Qiymatlar 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— |
| Maydon`messages[].content` | Tur`string\|content_part[]\|null` | TalabIxtiyoriy | Qiymatlar va cheklovlar | Standart— |
| Maydon`messages[].tool_calls` | Tur`tool_call[]` | TalabIxtiyoriy | Qiymatlar va cheklovlar | Standart— |
| Maydon`messages[].tool_call_id` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar Quyidagi holatda qo‘llanadi: role=tool; haqiqatan qaytarilgan IDdan foydalaning | Standart— |
| Maydon`messages[].name` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar | Standart— |
| Maydon`messages[].reasoning_content` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar Quyidagi holatda qo‘llanadi: Ushbu model foydalanganda, haqiqatan qaytarilgan fikrlash ma’lumotlarini keyingi so‘rovda qayta yuboring | Standart— |
| Maydon`messages[].reasoning_details` | Tur`object\|array` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`max_tokens` | Tur`integer` | TalabIxtiyoriy | Qiymatlar va cheklovlar Eng kam: 1 Modelga bogʻliq | Standart— |
| Maydon`max_completion_tokens` | Tur`integer` | TalabIxtiyoriy | Qiymatlar va cheklovlar Eng kam: 1 Modelga bogʻliq | Standart— |
| Maydon`stream` | Tur`boolean` | TalabIxtiyoriy | Qiymatlar va cheklovlar | Standartfalse |
| Maydon`stream_options.include_usage` | Tur`boolean` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| 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` | Tur`string\|string[]` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`tools` | Tur`function_tool[]` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`tools[].type` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`tools[].function.name` | Tur`string` | TalabMajburiy | Qiymatlar va cheklovlar Quyidagi holatda qo‘llanadi: Funksiya vositasi taqdim etilgan | Standart— |
| Maydon`tools[].function.description` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar | Standart— |
| Maydon`tools[].function.parameters` | Tur`JSON_schema` | TalabIxtiyoriy | Qiymatlar va cheklovlar | Standart— |
| Maydon`tool_choice` | Tur`string\|object` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`parallel_tool_calls` | Tur`boolean` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`response_format` | Tur`object` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`reasoning_effort` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`reasoning` | Tur`object` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`service_tier` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`instructions` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar Moslik maydoni | Standart— |
| Maydon`functions` | Tur`function[]` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`function_call` | Tur`string\|object` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`prompt_cache_options` | Tur`object` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |

Kirish materiallari birikmalari

**Matn** · UTF8 matni

`messages[].content`

**Matn + rasm**

`{type:image_url,image_url:{url,detail}}`

Usul parametrlari va hayot sikli

| Parametr | Parametr talablari |
| --- | --- |
| Parametr`material_types` | Parametr talablaritext, image |
| Parametr`required` | Parametr talablarimodel, messages |
| 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,01 US$ */ 1K*

Chiqish

0,05 US$ */ 1K*

Keshdan o‘qish

0,001 US$ */ 1K*

Keshga yozish

0,0125 US$ */ 1K*

Keshga yozish, 5 daqiqa

0,0125 US$ */ 1K tokens*

fast ko‘paytirgichi

×2

flex ko‘paytirgichi

×0.5

#### So‘rov uzunligiga qarab narxlar · OpenAI Chat

| So‘rov hajmi, tokenlarda | Kirish | Chiqish | Keshdan o‘qish | Keshga yozish | Kesh 5 daqiqa | Kesh 1 soat |
| --- | --- | --- | --- | --- | --- | --- |
| So‘rov hajmi, tokenlarda(0; 272 000\] | Kirish0,01 US$ | Chiqish0,05 US$ | Keshdan o‘qish0,001 US$ | Keshga yozish0,0125 US$ | Kesh 5 daqiqa0,0125 US$ | Kesh 1 soatAsosiy: — |
| So‘rov hajmi, tokenlarda(272 000; ∞) | Kirish0,02 US$ | Chiqish0,075 US$ | Keshdan o‘qish0,002 US$ | Keshga yozish0,025 US$ | Kesh 5 daqiqa0,025 US$ | 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/)

#### 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.

| Sozlama | Tariflar jadvali | Kontekst tokenlari soni bundan ko‘p | Kontekst tokenlari soni bundan oshmaydi, chegara kiradi | To‘lov |
| --- | --- | --- | --- | --- |
| SozlamaOpenAI Chat · Tokenlar uchun asosiy tariflar | Tariflar jadvaliAsosiy tarif | Kontekst tokenlari soni bundan ko‘p— | Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘q | To‘lov Kirish · Kirish tokenlari **$0.02** / 1K token Chiqish · Chiqish tokenlari **$0.1** / 1K token Kirish · Keshdan o‘qish **$0.002** / 1K token Kirish · Keshga yozish **$0.025** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaOpenAI Chat · So‘rov uzunligi bo‘yicha 1-daraja | Tariflar jadvali— | Kontekst tokenlari soni bundan ko‘p0 | Kontekst tokenlari soni bundan oshmaydi, chegara kiradi272 000 | To‘lov Kirish · Kirish tokenlari **$0.02** / 1K token Chiqish · Chiqish tokenlari **$0.1** / 1K token Kirish · Keshdan o‘qish **$0.002** / 1K token Kirish · Keshga yozish **$0.025** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaOpenAI Chat · So‘rov uzunligi bo‘yicha 2-daraja | Tariflar jadvali— | Kontekst tokenlari soni bundan ko‘p272 000 | Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘q | To‘lov Kirish · Kirish tokenlari **$0.04** / 1K token Chiqish · Chiqish tokenlari **$0.15** / 1K token Kirish · Keshdan o‘qish **$0.004** / 1K token Kirish · Keshga yozish **$0.05** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaAnthropic Messages · Tokenlar uchun asosiy tariflar | Tariflar jadvaliAsosiy tarif | Kontekst tokenlari soni bundan ko‘p— | Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘q | To‘lov Kirish · Kirish tokenlari **$0.02** / 1K token Chiqish · Chiqish tokenlari **$0.1** / 1K token Kirish · Keshdan o‘qish **$0.002** / 1K token Kirish · Keshga yozish **$0.025** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaAnthropic Messages · So‘rov uzunligi bo‘yicha 1-daraja | Tariflar jadvali— | Kontekst tokenlari soni bundan ko‘p0 | Kontekst tokenlari soni bundan oshmaydi, chegara kiradi272 000 | To‘lov Kirish · Kirish tokenlari **$0.02** / 1K token Chiqish · Chiqish tokenlari **$0.1** / 1K token Kirish · Keshdan o‘qish **$0.002** / 1K token Kirish · Keshga yozish **$0.025** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaAnthropic Messages · So‘rov uzunligi bo‘yicha 2-daraja | Tariflar jadvali— | Kontekst tokenlari soni bundan ko‘p272 000 | Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘q | To‘lov Kirish · Kirish tokenlari **$0.04** / 1K token Chiqish · Chiqish tokenlari **$0.15** / 1K token Kirish · Keshdan o‘qish **$0.004** / 1K token Kirish · Keshga yozish **$0.05** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaOpenAI Responses · Tokenlar uchun asosiy tariflar | Tariflar jadvaliAsosiy tarif | Kontekst tokenlari soni bundan ko‘p— | Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘q | To‘lov Kirish · Kirish tokenlari **$0.02** / 1K token Chiqish · Chiqish tokenlari **$0.1** / 1K token Kirish · Keshdan o‘qish **$0.002** / 1K token Kirish · Keshga yozish **$0.025** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaOpenAI Responses · So‘rov uzunligi bo‘yicha 1-daraja | Tariflar jadvali— | Kontekst tokenlari soni bundan ko‘p0 | Kontekst tokenlari soni bundan oshmaydi, chegara kiradi272 000 | To‘lov Kirish · Kirish tokenlari **$0.02** / 1K token Chiqish · Chiqish tokenlari **$0.1** / 1K token Kirish · Keshdan o‘qish **$0.002** / 1K token Kirish · Keshga yozish **$0.025** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaOpenAI Responses · So‘rov uzunligi bo‘yicha 2-daraja | Tariflar jadvali— | Kontekst tokenlari soni bundan ko‘p272 000 | Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘q | To‘lov Kirish · Kirish tokenlari **$0.04** / 1K token Chiqish · Chiqish tokenlari **$0.15** / 1K token Kirish · Keshdan o‘qish **$0.004** / 1K token Kirish · Keshga yozish **$0.05** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |

### So‘rov namunalari

#### Ailoot · OpenAI Chat

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": "gpt-6-astra", "messages": []}')
f=Path(os.environ["AILOOT_TEXT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 source material")
text=f.read_text(encoding="utf-8")
if not text.strip():raise SystemExit("Source material must contain text")
p["messages"]=[{"role":"user","content":"Summarize this material and quote supporting source passages.\n\n"+text}]
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/chat/completions \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
print(json.dumps(json.loads(Path("result.json").read_text()),ensure_ascii=False,indent=2))
PY_RESULT
```

```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": "gpt-6-astra", "messages": [{"role": "user", "content": [{"type": "text", "text": "Read labels and numbers in this image; flag unreadable text."}]}]}')
import base64
f=Path(os.environ["AILOOT_IMAGE_FILE"])
if not f.is_file():raise SystemExit("Choose an actual PNG JPEG or WebP image")
raw=f.read_bytes()
mime="image/png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "image/jpeg" if raw.startswith(b"\xff\xd8") else "image/webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else None
if not mime:raise SystemExit("Use PNG JPEG or WebP")
b64=base64.b64encode(raw).decode()
p["messages"][0]["content"].append({"type":"image_url","image_url":{"url":"data:"+mime+";base64,"+b64}})
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/chat/completions \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
print(json.dumps(json.loads(Path("result.json").read_text()),ensure_ascii=False,indent=2))
PY_RESULT
```

```python
from openai import OpenAI
import os

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

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

save_result(resp.to_dict(mode="json"))
```

```js
import OpenAI from "openai";

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

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

saveResult(resp);
```

```python
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='gpt-6-astra',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 · 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

| Maydon | Tur |
| --- | --- |
| Maydon`choices[].index` | Turinteger |
| Maydon`choices[].message.content` | Turstring\|null |
| Maydon`choices[].message.tool_calls` | Turtool\_call\[\] |
| Maydon`choices[].message.reasoning_content` | Turstring |
| Maydon`choices[].message.reasoning_details` | Turobject\|array |
| Maydon`choices[].finish_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

<strong>Ailoot</strong> [`gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt-6-astra&fmt=chat), [`gpt`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt&fmt=chat), [`gpt-latest`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt-latest&fmt=chat)
**Ailoot Ultra** [`gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=gpt-6-astra&fmt=chat), [`openai/gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=openai%2Fgpt-6-astra&fmt=chat), [`~openai/gpt-astra-latest`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=~openai%2Fgpt-astra-latest&fmt=chat)

#### Usul yo‘llari taxalluslari

`/chat/completions`

#### Chaqirish uchun tegishli ID lar

[`openai/gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=openai%2Fgpt-6-astra&fmt=chat), [`gpt`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt&fmt=chat), [`gpt-latest`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt-latest&fmt=chat), [`~openai/gpt-astra-latest`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=~openai%2Fgpt-astra-latest&fmt=chat), [`gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt-6-astra&fmt=chat), [`gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=gpt-6-astra&fmt=chat)

**Ailoot Ultra · OpenAI Chat** `POST /v1/chat/completions` `gpt-6-astra`

[`gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=gpt-6-astra&fmt=chat)

OpenAI /`gpt-6-astra`

Model ID

- `gpt-6-astra`
- `openai/gpt-6-astra`
- `~openai/gpt-astra-latest`

### Boshlash

GPT-6 Astra murakkab mulohaza, dasturlash, tadqiqotlar va hujjat tayyorlash uchun mo‘ljallangan. Ko‘p bosqichli vazifalarda matn, tasvirlar va vositalar bilan ishlaydi.

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

| Maydon | Tur | Talab | Qiymatlar va cheklovlar | Standart |
| --- | --- | --- | --- | --- |
| Maydon`model` | Tur`string` | TalabMajburiy | Qiymatlar va cheklovlar gpt-6-astra | Standart— |
| Maydon`messages` | Tur`message[]` | TalabMajburiy | Qiymatlar va cheklovlar Elementlarning eng kam soni: 1 | Standart— |
| Maydon`messages[].role` | Tur`string` | TalabMajburiy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`messages[].content` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar Quyidagi holatda qo‘llanadi: Matnli suhbat | Standart— |
| Maydon`stream` | Tur`boolean` | TalabIxtiyoriy | Qiymatlar va cheklovlar | Standartfalse |

Kirish materiallari birikmalari

**Matn** · UTF8 matni

`messages[].content`

Usul parametrlari va hayot sikli

| Parametr | Parametr talablari |
| --- | --- |
| Parametr`content_type` | Parametr talablariapplication/json |
| Parametr`required` | Parametr talablarimodel, messages |
| Parametr`material_types` | Parametr talablaritext |
| Parametr`messages` | Parametr talablarirole/content tuzilishidagi xabarlar massivi |
| Parametr`file_material` | Parametr talablariHaqiqiy UTF-8 hujjati aynan matn sifatida kiritiladi; fayl IDsi faraz qilinmaydi |
| Parametr`optional_controls` | Parametr talablaristream |
| Parametr`control_scope` | Parametr talablariMatnli suhbat; stream mantiqiy qiymat bo‘lib, standart holatda false. |
| Parametr`output_modalities` | Parametr talablaritext |
| Parametr`hosted_operations` | Parametr talablarifalse |
| Parametr`multimodal_input_binding` | Parametr 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

Fikrlash darajasi · yuqori

Standart tarif Fikrlash darajasi yuqori bo‘lganda

Fikrlash darajasi · past

Standart tarif Fikrlash darajasi past bo‘lganda

Fikrlash darajasi · maksimal

Standart tarif Fikrlash darajasi maksimal bo‘lganda

Fikrlash darajasi · o‘rtacha

Standart tarif Fikrlash darajasi o‘rtacha bo‘lganda

Fikrlash darajasi · xhigh

Standart tarif Fikrlash darajasi xhigh bo‘lganda

#### Ailoot tariflari

#### Sozlamalar bo‘yicha narxlar

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

| Sozlama | Tariflar jadvali | Kontekst tokenlari soni bundan ko‘p | Kontekst tokenlari soni bundan oshmaydi, chegara kiradi | To‘lov |
| --- | --- | --- | --- | --- |
| SozlamaTokenlar uchun bazaviy tariflar | Tariflar jadvaliAsosiy tarif | Kontekst tokenlari soni bundan ko‘p— | Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘q | To‘lov Kirish · Kirish tokenlari **$0.02** / 1K token Chiqish · Chiqish tokenlari **$0.1** / 1K token Kirish · Keshdan o‘qish **$0.002** / 1K token Kirish · Keshga yozish **$0.025** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaSo‘rov uzunligi bo‘yicha 1-daraja | Tariflar jadvali— | Kontekst tokenlari soni bundan ko‘p0 | Kontekst tokenlari soni bundan oshmaydi, chegara kiradi272 000 | To‘lov Kirish · Kirish tokenlari **$0.02** / 1K token Chiqish · Chiqish tokenlari **$0.1** / 1K token Kirish · Keshdan o‘qish **$0.002** / 1K token Kirish · Keshga yozish **$0.025** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaSo‘rov uzunligi bo‘yicha 2-daraja | Tariflar jadvali— | Kontekst tokenlari soni bundan ko‘p272 000 | Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘q | To‘lov Kirish · Kirish tokenlari **$0.04** / 1K token Chiqish · Chiqish tokenlari **$0.15** / 1K token Kirish · Keshdan o‘qish **$0.004** / 1K token Kirish · Keshga yozish **$0.05** / 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 →](https://ailoot.ai/docs/uz/billing/reserve/)

### So‘rov namunalari

#### Ailoot Ultra · OpenAI Chat

curlPython SDK

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model":"gpt-6-astra","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
```

```python
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="gpt-6-astra", 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

| Maydon | Tur |
| --- | --- |
| Maydon`choices[].index` | Turinteger |
| Maydon`choices[].message.content` | Turstring\|null |
| Maydon`choices[].message.tool_calls` | Turtool\_call\[\] |
| Maydon`choices[].message.reasoning_content` | Turstring |
| Maydon`choices[].message.reasoning_details` | Turobject\|array |
| Maydon`choices[].finish_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

<strong>Ailoot</strong> [`gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt-6-astra&fmt=chat), [`gpt`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt&fmt=chat), [`gpt-latest`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt-latest&fmt=chat)
**Ailoot Ultra** [`gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=gpt-6-astra&fmt=chat), [`openai/gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=openai%2Fgpt-6-astra&fmt=chat), [`~openai/gpt-astra-latest`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=~openai%2Fgpt-astra-latest&fmt=chat)

#### Usul yo‘llari taxalluslari

`/chat/completions`

#### Chaqirish uchun tegishli ID lar

[`openai/gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=openai%2Fgpt-6-astra&fmt=chat), [`gpt`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt&fmt=chat), [`gpt-latest`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt-latest&fmt=chat), [`~openai/gpt-astra-latest`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=~openai%2Fgpt-astra-latest&fmt=chat), [`gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt-6-astra&fmt=chat), [`gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=gpt-6-astra&fmt=chat)

**Ailoot Ultra · Anthropic Messages** `POST /v1/messages` `gpt-6-astra`

[`gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=gpt-6-astra&fmt=messages)

OpenAI /`gpt-6-astra`

Model ID

- `gpt-6-astra`
- `openai/gpt-6-astra`
- `~openai/gpt-astra-latest`

### Boshlash

GPT-6 Astra murakkab mulohaza, dasturlash, tadqiqotlar va hujjat tayyorlash uchun mo‘ljallangan. Ko‘p bosqichli vazifalarda matn, tasvirlar va vositalar bilan ishlaydi.

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

| Maydon | Tur | Talab | Qiymatlar va cheklovlar | Standart |
| --- | --- | --- | --- | --- |
| Maydon`model` | Tur`string` | TalabMajburiy | Qiymatlar va cheklovlar gpt-6-astra | Standart— |
| Maydon`messages` | Tur`message[]` | TalabMajburiy | Qiymatlar va cheklovlar | Standart— |
| Maydon`messages[].role` | Tur`string` | TalabMajburiy | Qiymatlar va cheklovlar user, assistant | Standart— |
| Maydon`messages[].content` | Tur`string` | TalabMajburiy | Qiymatlar va cheklovlar | Standart— |
| Maydon`max_tokens` | Tur`integer` | TalabMajburiy | Qiymatlar va cheklovlar | Standart— |
| Maydon`stream` | Tur`boolean` | TalabIxtiyoriy | Qiymatlar va cheklovlar | Standartfalse |

Kirish materiallari birikmalari

**Matn** · UTF-8 matni

`messages[].content satri`

Usul parametrlari va hayot sikli

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

Fikrlash darajasi · yuqori

Standart tarif Fikrlash darajasi yuqori bo‘lganda

Fikrlash darajasi · past

Standart tarif Fikrlash darajasi past bo‘lganda

Fikrlash darajasi · maksimal

Standart tarif Fikrlash darajasi maksimal bo‘lganda

Fikrlash darajasi · o‘rtacha

Standart tarif Fikrlash darajasi o‘rtacha bo‘lganda

Fikrlash darajasi · xhigh

Standart tarif Fikrlash darajasi xhigh bo‘lganda

#### Ailoot tariflari

#### Sozlamalar bo‘yicha narxlar

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

| Sozlama | Tariflar jadvali | Kontekst tokenlari soni bundan ko‘p | Kontekst tokenlari soni bundan oshmaydi, chegara kiradi | To‘lov |
| --- | --- | --- | --- | --- |
| SozlamaTokenlar uchun bazaviy tariflar | Tariflar jadvaliAsosiy tarif | Kontekst tokenlari soni bundan ko‘p— | Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘q | To‘lov Kirish · Kirish tokenlari **$0.02** / 1K token Chiqish · Chiqish tokenlari **$0.1** / 1K token Kirish · Keshdan o‘qish **$0.002** / 1K token Kirish · Keshga yozish **$0.025** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaSo‘rov uzunligi bo‘yicha 1-daraja | Tariflar jadvali— | Kontekst tokenlari soni bundan ko‘p0 | Kontekst tokenlari soni bundan oshmaydi, chegara kiradi272 000 | To‘lov Kirish · Kirish tokenlari **$0.02** / 1K token Chiqish · Chiqish tokenlari **$0.1** / 1K token Kirish · Keshdan o‘qish **$0.002** / 1K token Kirish · Keshga yozish **$0.025** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaSo‘rov uzunligi bo‘yicha 2-daraja | Tariflar jadvali— | Kontekst tokenlari soni bundan ko‘p272 000 | Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘q | To‘lov Kirish · Kirish tokenlari **$0.04** / 1K token Chiqish · Chiqish tokenlari **$0.15** / 1K token Kirish · Keshdan o‘qish **$0.004** / 1K token Kirish · Keshga yozish **$0.05** / 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 →](https://ailoot.ai/docs/uz/billing/reserve/)

### So‘rov namunalari

#### Ailoot Ultra · Anthropic Messages

To‘liq minimal JSON so‘rov tanasicurl · O‘zingizning UTF-8 hujjatingizdan foydalaningPython · Natijani to‘liq saqlang

```json
{
  "model": "gpt-6-astra",
  "max_tokens": 128,
  "messages": [
    {
      "role": "user",
      "content": "Summarize the incident report."
    }
  ],
  "stream": false
}
```

```bash
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': 'gpt-6-astra', '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
```

```python
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': 'gpt-6-astra', '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

| 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

<strong>Ailoot</strong> [`gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt-6-astra&fmt=messages), [`gpt`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt&fmt=messages), [`gpt-latest`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt-latest&fmt=messages)
**Ailoot Ultra** [`gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=gpt-6-astra&fmt=messages), [`openai/gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=openai%2Fgpt-6-astra&fmt=messages), [`~openai/gpt-astra-latest`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=~openai%2Fgpt-astra-latest&fmt=messages)

#### Usul yo‘llari taxalluslari

`/chat/completions`

#### Chaqirish uchun tegishli ID lar

[`openai/gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=openai%2Fgpt-6-astra&fmt=messages), [`gpt`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt&fmt=messages), [`gpt-latest`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt-latest&fmt=messages), [`~openai/gpt-astra-latest`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=~openai%2Fgpt-astra-latest&fmt=messages), [`gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt-6-astra&fmt=messages), [`gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=gpt-6-astra&fmt=messages)

**Ailoot · Anthropic Messages** `POST /v1/messages` `gpt`

[`gpt`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt&fmt=messages)

OpenAI /`gpt`

Model ID

- `gpt-6-astra`
- `gpt`
- `gpt-latest`

### Boshlash

GPT-6 Astra murakkab mulohaza, dasturlash, tadqiqotlar va hujjat tayyorlash uchun mo‘ljallangan. Ko‘p bosqichli vazifalarda matn, tasvirlar va vositalar bilan ishlaydi.

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 050 000 tokens

Eng katta chiqish

128 000 tokens

Chiqish formati

json yoki SSE

| Maydon | Tur | Talab | Qiymatlar va cheklovlar | Standart |
| --- | --- | --- | --- | --- |
| Maydon`model` | Tur`string` | TalabMajburiy | Qiymatlar va cheklovlar gpt | 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,01 US$ */ 1K*

Chiqish

0,05 US$ */ 1K*

Keshdan o‘qish

0,001 US$ */ 1K*

Keshga yozish

0,0125 US$ */ 1K*

Keshga yozish, 5 daqiqa

0,0125 US$ */ 1K tokens*

fast ko‘paytirgichi

×2

flex ko‘paytirgichi

×0.5

#### 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; 272 000\] | Kirish0,01 US$ | Chiqish0,05 US$ | Keshdan o‘qish0,001 US$ | Keshga yozish0,0125 US$ | Kesh 5 daqiqa0,0125 US$ | Kesh 1 soatAsosiy: — |
| So‘rov hajmi, tokenlarda(272 000; ∞) | Kirish0,02 US$ | Chiqish0,075 US$ | Keshdan o‘qish0,002 US$ | Keshga yozish0,025 US$ | Kesh 5 daqiqa0,025 US$ | 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/)

#### 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.

| Sozlama | Tariflar jadvali | Kontekst tokenlari soni bundan ko‘p | Kontekst tokenlari soni bundan oshmaydi, chegara kiradi | To‘lov |
| --- | --- | --- | --- | --- |
| SozlamaOpenAI Chat · Tokenlar uchun asosiy tariflar | Tariflar jadvaliAsosiy tarif | Kontekst tokenlari soni bundan ko‘p— | Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘q | To‘lov Kirish · Kirish tokenlari **$0.02** / 1K token Chiqish · Chiqish tokenlari **$0.1** / 1K token Kirish · Keshdan o‘qish **$0.002** / 1K token Kirish · Keshga yozish **$0.025** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaOpenAI Chat · So‘rov uzunligi bo‘yicha 1-daraja | Tariflar jadvali— | Kontekst tokenlari soni bundan ko‘p0 | Kontekst tokenlari soni bundan oshmaydi, chegara kiradi272 000 | To‘lov Kirish · Kirish tokenlari **$0.02** / 1K token Chiqish · Chiqish tokenlari **$0.1** / 1K token Kirish · Keshdan o‘qish **$0.002** / 1K token Kirish · Keshga yozish **$0.025** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaOpenAI Chat · So‘rov uzunligi bo‘yicha 2-daraja | Tariflar jadvali— | Kontekst tokenlari soni bundan ko‘p272 000 | Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘q | To‘lov Kirish · Kirish tokenlari **$0.04** / 1K token Chiqish · Chiqish tokenlari **$0.15** / 1K token Kirish · Keshdan o‘qish **$0.004** / 1K token Kirish · Keshga yozish **$0.05** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaAnthropic Messages · Tokenlar uchun asosiy tariflar | Tariflar jadvaliAsosiy tarif | Kontekst tokenlari soni bundan ko‘p— | Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘q | To‘lov Kirish · Kirish tokenlari **$0.02** / 1K token Chiqish · Chiqish tokenlari **$0.1** / 1K token Kirish · Keshdan o‘qish **$0.002** / 1K token Kirish · Keshga yozish **$0.025** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaAnthropic Messages · So‘rov uzunligi bo‘yicha 1-daraja | Tariflar jadvali— | Kontekst tokenlari soni bundan ko‘p0 | Kontekst tokenlari soni bundan oshmaydi, chegara kiradi272 000 | To‘lov Kirish · Kirish tokenlari **$0.02** / 1K token Chiqish · Chiqish tokenlari **$0.1** / 1K token Kirish · Keshdan o‘qish **$0.002** / 1K token Kirish · Keshga yozish **$0.025** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaAnthropic Messages · So‘rov uzunligi bo‘yicha 2-daraja | Tariflar jadvali— | Kontekst tokenlari soni bundan ko‘p272 000 | Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘q | To‘lov Kirish · Kirish tokenlari **$0.04** / 1K token Chiqish · Chiqish tokenlari **$0.15** / 1K token Kirish · Keshdan o‘qish **$0.004** / 1K token Kirish · Keshga yozish **$0.05** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaOpenAI Responses · Tokenlar uchun asosiy tariflar | Tariflar jadvaliAsosiy tarif | Kontekst tokenlari soni bundan ko‘p— | Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘q | To‘lov Kirish · Kirish tokenlari **$0.02** / 1K token Chiqish · Chiqish tokenlari **$0.1** / 1K token Kirish · Keshdan o‘qish **$0.002** / 1K token Kirish · Keshga yozish **$0.025** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaOpenAI Responses · So‘rov uzunligi bo‘yicha 1-daraja | Tariflar jadvali— | Kontekst tokenlari soni bundan ko‘p0 | Kontekst tokenlari soni bundan oshmaydi, chegara kiradi272 000 | To‘lov Kirish · Kirish tokenlari **$0.02** / 1K token Chiqish · Chiqish tokenlari **$0.1** / 1K token Kirish · Keshdan o‘qish **$0.002** / 1K token Kirish · Keshga yozish **$0.025** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaOpenAI Responses · So‘rov uzunligi bo‘yicha 2-daraja | Tariflar jadvali— | Kontekst tokenlari soni bundan ko‘p272 000 | Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘q | To‘lov Kirish · Kirish tokenlari **$0.04** / 1K token Chiqish · Chiqish tokenlari **$0.15** / 1K token Kirish · Keshdan o‘qish **$0.004** / 1K token Kirish · Keshga yozish **$0.05** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |

### 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": "gpt", "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": "gpt", "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="gpt",
    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: "gpt",
  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='gpt',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

<strong>Ailoot</strong> [`gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt-6-astra&fmt=messages), [`gpt`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt&fmt=messages), [`gpt-latest`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt-latest&fmt=messages)
**Ailoot Ultra** [`gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=gpt-6-astra&fmt=messages), [`openai/gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=openai%2Fgpt-6-astra&fmt=messages), [`~openai/gpt-astra-latest`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=~openai%2Fgpt-astra-latest&fmt=messages)

#### Usul yo‘llari taxalluslari

`/chat/completions`

#### Chaqirish uchun tegishli ID lar

[`openai/gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=openai%2Fgpt-6-astra&fmt=messages), [`gpt`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt&fmt=messages), [`gpt-latest`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt-latest&fmt=messages), [`~openai/gpt-astra-latest`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=~openai%2Fgpt-astra-latest&fmt=messages), [`gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt-6-astra&fmt=messages), [`gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=gpt-6-astra&fmt=messages)

**Ailoot · OpenAI Responses** `POST /v1/responses` `gpt`

[`gpt`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt&fmt=responses)

OpenAI /`gpt`

Model ID

- `gpt-6-astra`
- `gpt`
- `gpt-latest`

### Boshlash

GPT-6 Astra murakkab mulohaza, dasturlash, tadqiqotlar va hujjat tayyorlash uchun mo‘ljallangan. Ko‘p bosqichli vazifalarda matn, tasvirlar va vositalar bilan ishlaydi.

Qabul qilinadigan kirish ma’lumotlari

Matn · Rasmlar

Natijalar

Matn

### Ailoot da mavjud · kirish ma’lumotlari va usullar

**Ailoot · OpenAI Responses** `POST /v1/responses`

Kirish

`text`, `image`

Chiqish

`text`

Kontekst

1 050 000 tokens

Eng katta chiqish

128 000 tokens

Chiqish formati

json yoki SSE

| Maydon | Tur | Talab | Qiymatlar va cheklovlar | Standart |
| --- | --- | --- | --- | --- |
| Maydon`model` | Tur`string` | TalabMajburiy | Qiymatlar va cheklovlar gpt | Standart— |
| Maydon`input` | Tur`string\|input_item[]` | TalabMajburiy | Qiymatlar va cheklovlar | Standart— |
| Maydon`instructions` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar | Standart— |
| Maydon`input[].type` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar message, reasoning, function\_call, function\_call\_output | Standart— |
| Maydon`input[].content` | Tur`string\|content_part[]` | TalabIxtiyoriy | Qiymatlar va cheklovlar | Standart— |
| Maydon`input[].call_id` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar Quyidagi holatda qo‘llanadi: function\_call\_output; haqiqatan qaytarilgan call\_id qiymatini saqlang | Standart— |
| Maydon`input[].output` | Tur`string\|content_part[]` | TalabIxtiyoriy | Qiymatlar va cheklovlar Quyidagi holatda qo‘llanadi: function\_call\_output | Standart— |
| Maydon`max_output_tokens` | Tur`integer` | TalabIxtiyoriy | Qiymatlar va cheklovlar Eng kam: 1 Modelga bogʻliq | 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`tools` | Tur`tool[]` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`tool_choice` | Tur`string\|object` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`parallel_tool_calls` | Tur`boolean` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`reasoning.effort` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`reasoning.summary` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`text.format` | Tur`object` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`text.verbosity` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`include` | Tur`string[]` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`store` | Tur`boolean` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`previous_response_id` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar ID talabi: Faqat qo‘llab-quvvatlanadigan davom ettirishdan olingan haqiqiy javob IDsi Modelga bogʻliq | Standart— |
| Maydon`service_tier` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`prompt_cache_key` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`prompt_cache_options` | Tur`object` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |

Kirish materiallari birikmalari

**Matn** · UTF8 matni

`Kirish matni yoki input_text qismi`

**Matn + rasm**

`{type:input_image,image_url}`

Usul parametrlari va hayot sikli

| Parametr | Parametr talablari |
| --- | --- |
| Parametr`material_types` | Parametr talablaritext, image |
| Parametr`required` | Parametr talablarimodel, input |
| 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,01 US$ */ 1K*

Chiqish

0,05 US$ */ 1K*

Keshdan o‘qish

0,001 US$ */ 1K*

Keshga yozish

0,0125 US$ */ 1K*

Keshga yozish, 5 daqiqa

0,0125 US$ */ 1K tokens*

fast ko‘paytirgichi

×2

flex ko‘paytirgichi

×0.5

#### So‘rov uzunligiga qarab narxlar · OpenAI Responses

| So‘rov hajmi, tokenlarda | Kirish | Chiqish | Keshdan o‘qish | Keshga yozish | Kesh 5 daqiqa | Kesh 1 soat |
| --- | --- | --- | --- | --- | --- | --- |
| So‘rov hajmi, tokenlarda(0; 272 000\] | Kirish0,01 US$ | Chiqish0,05 US$ | Keshdan o‘qish0,001 US$ | Keshga yozish0,0125 US$ | Kesh 5 daqiqa0,0125 US$ | Kesh 1 soatAsosiy: — |
| So‘rov hajmi, tokenlarda(272 000; ∞) | Kirish0,02 US$ | Chiqish0,075 US$ | Keshdan o‘qish0,002 US$ | Keshga yozish0,025 US$ | Kesh 5 daqiqa0,025 US$ | 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/)

#### 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.

| Sozlama | Tariflar jadvali | Kontekst tokenlari soni bundan ko‘p | Kontekst tokenlari soni bundan oshmaydi, chegara kiradi | To‘lov |
| --- | --- | --- | --- | --- |
| SozlamaOpenAI Chat · Tokenlar uchun asosiy tariflar | Tariflar jadvaliAsosiy tarif | Kontekst tokenlari soni bundan ko‘p— | Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘q | To‘lov Kirish · Kirish tokenlari **$0.02** / 1K token Chiqish · Chiqish tokenlari **$0.1** / 1K token Kirish · Keshdan o‘qish **$0.002** / 1K token Kirish · Keshga yozish **$0.025** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaOpenAI Chat · So‘rov uzunligi bo‘yicha 1-daraja | Tariflar jadvali— | Kontekst tokenlari soni bundan ko‘p0 | Kontekst tokenlari soni bundan oshmaydi, chegara kiradi272 000 | To‘lov Kirish · Kirish tokenlari **$0.02** / 1K token Chiqish · Chiqish tokenlari **$0.1** / 1K token Kirish · Keshdan o‘qish **$0.002** / 1K token Kirish · Keshga yozish **$0.025** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaOpenAI Chat · So‘rov uzunligi bo‘yicha 2-daraja | Tariflar jadvali— | Kontekst tokenlari soni bundan ko‘p272 000 | Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘q | To‘lov Kirish · Kirish tokenlari **$0.04** / 1K token Chiqish · Chiqish tokenlari **$0.15** / 1K token Kirish · Keshdan o‘qish **$0.004** / 1K token Kirish · Keshga yozish **$0.05** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaAnthropic Messages · Tokenlar uchun asosiy tariflar | Tariflar jadvaliAsosiy tarif | Kontekst tokenlari soni bundan ko‘p— | Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘q | To‘lov Kirish · Kirish tokenlari **$0.02** / 1K token Chiqish · Chiqish tokenlari **$0.1** / 1K token Kirish · Keshdan o‘qish **$0.002** / 1K token Kirish · Keshga yozish **$0.025** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaAnthropic Messages · So‘rov uzunligi bo‘yicha 1-daraja | Tariflar jadvali— | Kontekst tokenlari soni bundan ko‘p0 | Kontekst tokenlari soni bundan oshmaydi, chegara kiradi272 000 | To‘lov Kirish · Kirish tokenlari **$0.02** / 1K token Chiqish · Chiqish tokenlari **$0.1** / 1K token Kirish · Keshdan o‘qish **$0.002** / 1K token Kirish · Keshga yozish **$0.025** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaAnthropic Messages · So‘rov uzunligi bo‘yicha 2-daraja | Tariflar jadvali— | Kontekst tokenlari soni bundan ko‘p272 000 | Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘q | To‘lov Kirish · Kirish tokenlari **$0.04** / 1K token Chiqish · Chiqish tokenlari **$0.15** / 1K token Kirish · Keshdan o‘qish **$0.004** / 1K token Kirish · Keshga yozish **$0.05** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaOpenAI Responses · Tokenlar uchun asosiy tariflar | Tariflar jadvaliAsosiy tarif | Kontekst tokenlari soni bundan ko‘p— | Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘q | To‘lov Kirish · Kirish tokenlari **$0.02** / 1K token Chiqish · Chiqish tokenlari **$0.1** / 1K token Kirish · Keshdan o‘qish **$0.002** / 1K token Kirish · Keshga yozish **$0.025** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaOpenAI Responses · So‘rov uzunligi bo‘yicha 1-daraja | Tariflar jadvali— | Kontekst tokenlari soni bundan ko‘p0 | Kontekst tokenlari soni bundan oshmaydi, chegara kiradi272 000 | To‘lov Kirish · Kirish tokenlari **$0.02** / 1K token Chiqish · Chiqish tokenlari **$0.1** / 1K token Kirish · Keshdan o‘qish **$0.002** / 1K token Kirish · Keshga yozish **$0.025** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaOpenAI Responses · So‘rov uzunligi bo‘yicha 2-daraja | Tariflar jadvali— | Kontekst tokenlari soni bundan ko‘p272 000 | Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘q | To‘lov Kirish · Kirish tokenlari **$0.04** / 1K token Chiqish · Chiqish tokenlari **$0.15** / 1K token Kirish · Keshdan o‘qish **$0.004** / 1K token Kirish · Keshga yozish **$0.05** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |

### So‘rov namunalari

#### Ailoot · OpenAI Responses

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": "gpt", "input": ""}')
f=Path(os.environ["AILOOT_TEXT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 source material")
text=f.read_text(encoding="utf-8")
if not text.strip():raise SystemExit("Source material must contain text")
p["input"]="Summarize this material and quote supporting source passages.\n\n"+text
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/responses \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import base64, json
from pathlib import Path

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

save_result(json.loads(Path("result.json").read_text(encoding="utf-8")))
PY_RESULT
```

```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": "gpt", "input": [{"role": "user", "content": [{"type": "input_text", "text": "Read labels and numbers in this image; flag unreadable text."}]}]}')
import base64
f=Path(os.environ["AILOOT_IMAGE_FILE"])
if not f.is_file():raise SystemExit("Choose an actual PNG JPEG or WebP image")
raw=f.read_bytes()
mime="image/png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "image/jpeg" if raw.startswith(b"\xff\xd8") else "image/webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else None
if not mime:raise SystemExit("Use PNG JPEG or WebP")
b64=base64.b64encode(raw).decode()
p["input"][0]["content"].append({"type":"input_image","image_url":"data:"+mime+";base64,"+b64})
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/responses \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import base64, json
from pathlib import Path

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

save_result(json.loads(Path("result.json").read_text(encoding="utf-8")))
PY_RESULT
```

```python
from openai import OpenAI
import os

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

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

save_result(resp.to_dict(mode="json"))
```

```js
import OpenAI from "openai";

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

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

saveResult(resp);
```

```python
from openai import OpenAI
import os
from pathlib import Path
import base64, json
from pathlib import Path

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

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

### Natijalarni olish va saqlash

#### Ailoot · OpenAI Responses

json yoki SSE

##### Barcha tayyor natijalarni saqlash

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

Har bir chiqish elementi va kontent qismini, funksiyaning haqiqiy call\_id qiymatini, shifrlangan fikrlash ma’lumotlari va sarfni saqlang. Oqimli uzatishda hodisa va elementning to‘liq identifikatsiyasini 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

| Maydon | Tur |
| --- | --- |
| Maydon`id` | Turstring |
| Maydon`status` | Turstring |
| Maydon`output[]` | Turmessage\|reasoning\|function\_call\|other item |
| Maydon`output[].content[]` | Turcontent part |
| 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

<strong>Ailoot</strong> [`gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt-6-astra&fmt=responses), [`gpt`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt&fmt=responses), [`gpt-latest`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt-latest&fmt=responses)
**Ailoot Ultra** [`gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=gpt-6-astra&fmt=responses), [`openai/gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=openai%2Fgpt-6-astra&fmt=responses), [`~openai/gpt-astra-latest`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=~openai%2Fgpt-astra-latest&fmt=responses)

#### Usul yo‘llari taxalluslari

`/chat/completions`

#### Chaqirish uchun tegishli ID lar

[`openai/gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=openai%2Fgpt-6-astra&fmt=responses), [`gpt`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt&fmt=responses), [`gpt-latest`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt-latest&fmt=responses), [`~openai/gpt-astra-latest`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=~openai%2Fgpt-astra-latest&fmt=responses), [`gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt-6-astra&fmt=responses), [`gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=gpt-6-astra&fmt=responses)

**Ailoot · OpenAI Chat** `POST /v1/chat/completions` `gpt`

[`gpt`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt&fmt=chat)

OpenAI /`gpt`

Model ID

- `gpt-6-astra`
- `gpt`
- `gpt-latest`

### Boshlash

GPT-6 Astra murakkab mulohaza, dasturlash, tadqiqotlar va hujjat tayyorlash uchun mo‘ljallangan. Ko‘p bosqichli vazifalarda matn, tasvirlar va vositalar bilan ishlaydi.

Qabul qilinadigan kirish ma’lumotlari

Matn · Rasmlar

Natijalar

Matn

### Ailoot da mavjud · kirish ma’lumotlari va usullar

**Ailoot · OpenAI Chat** `POST /v1/chat/completions`

Kirish

`text`, `image`

Chiqish

`text`

Kontekst

1 050 000 tokens

Eng katta chiqish

128 000 tokens

Chiqish formati

json yoki SSE

| Maydon | Tur | Talab | Qiymatlar va cheklovlar | Standart |
| --- | --- | --- | --- | --- |
| Maydon`model` | Tur`string` | TalabMajburiy | Qiymatlar va cheklovlar gpt | Standart— |
| Maydon`messages` | Tur`message[]` | TalabMajburiy | Qiymatlar va cheklovlar Elementlarning eng kam soni: 1 | Standart— |
| Maydon`messages[].role` | Tur`string` | TalabMajburiy | Qiymatlar 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— |
| Maydon`messages[].content` | Tur`string\|content_part[]\|null` | TalabIxtiyoriy | Qiymatlar va cheklovlar | Standart— |
| Maydon`messages[].tool_calls` | Tur`tool_call[]` | TalabIxtiyoriy | Qiymatlar va cheklovlar | Standart— |
| Maydon`messages[].tool_call_id` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar Quyidagi holatda qo‘llanadi: role=tool; haqiqatan qaytarilgan IDdan foydalaning | Standart— |
| Maydon`messages[].name` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar | Standart— |
| Maydon`messages[].reasoning_content` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar Quyidagi holatda qo‘llanadi: Ushbu model foydalanganda, haqiqatan qaytarilgan fikrlash ma’lumotlarini keyingi so‘rovda qayta yuboring | Standart— |
| Maydon`messages[].reasoning_details` | Tur`object\|array` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`max_tokens` | Tur`integer` | TalabIxtiyoriy | Qiymatlar va cheklovlar Eng kam: 1 Modelga bogʻliq | Standart— |
| Maydon`max_completion_tokens` | Tur`integer` | TalabIxtiyoriy | Qiymatlar va cheklovlar Eng kam: 1 Modelga bogʻliq | Standart— |
| Maydon`stream` | Tur`boolean` | TalabIxtiyoriy | Qiymatlar va cheklovlar | Standartfalse |
| Maydon`stream_options.include_usage` | Tur`boolean` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| 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` | Tur`string\|string[]` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`tools` | Tur`function_tool[]` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`tools[].type` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`tools[].function.name` | Tur`string` | TalabMajburiy | Qiymatlar va cheklovlar Quyidagi holatda qo‘llanadi: Funksiya vositasi taqdim etilgan | Standart— |
| Maydon`tools[].function.description` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar | Standart— |
| Maydon`tools[].function.parameters` | Tur`JSON_schema` | TalabIxtiyoriy | Qiymatlar va cheklovlar | Standart— |
| Maydon`tool_choice` | Tur`string\|object` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`parallel_tool_calls` | Tur`boolean` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`response_format` | Tur`object` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`reasoning_effort` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`reasoning` | Tur`object` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`service_tier` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`instructions` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar Moslik maydoni | Standart— |
| Maydon`functions` | Tur`function[]` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`function_call` | Tur`string\|object` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`prompt_cache_options` | Tur`object` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |

Kirish materiallari birikmalari

**Matn** · UTF8 matni

`messages[].content`

**Matn + rasm**

`{type:image_url,image_url:{url,detail}}`

Usul parametrlari va hayot sikli

| Parametr | Parametr talablari |
| --- | --- |
| Parametr`material_types` | Parametr talablaritext, image |
| Parametr`required` | Parametr talablarimodel, messages |
| 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,01 US$ */ 1K*

Chiqish

0,05 US$ */ 1K*

Keshdan o‘qish

0,001 US$ */ 1K*

Keshga yozish

0,0125 US$ */ 1K*

Keshga yozish, 5 daqiqa

0,0125 US$ */ 1K tokens*

fast ko‘paytirgichi

×2

flex ko‘paytirgichi

×0.5

#### So‘rov uzunligiga qarab narxlar · OpenAI Chat

| So‘rov hajmi, tokenlarda | Kirish | Chiqish | Keshdan o‘qish | Keshga yozish | Kesh 5 daqiqa | Kesh 1 soat |
| --- | --- | --- | --- | --- | --- | --- |
| So‘rov hajmi, tokenlarda(0; 272 000\] | Kirish0,01 US$ | Chiqish0,05 US$ | Keshdan o‘qish0,001 US$ | Keshga yozish0,0125 US$ | Kesh 5 daqiqa0,0125 US$ | Kesh 1 soatAsosiy: — |
| So‘rov hajmi, tokenlarda(272 000; ∞) | Kirish0,02 US$ | Chiqish0,075 US$ | Keshdan o‘qish0,002 US$ | Keshga yozish0,025 US$ | Kesh 5 daqiqa0,025 US$ | 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/)

#### 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.

| Sozlama | Tariflar jadvali | Kontekst tokenlari soni bundan ko‘p | Kontekst tokenlari soni bundan oshmaydi, chegara kiradi | To‘lov |
| --- | --- | --- | --- | --- |
| SozlamaOpenAI Chat · Tokenlar uchun asosiy tariflar | Tariflar jadvaliAsosiy tarif | Kontekst tokenlari soni bundan ko‘p— | Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘q | To‘lov Kirish · Kirish tokenlari **$0.02** / 1K token Chiqish · Chiqish tokenlari **$0.1** / 1K token Kirish · Keshdan o‘qish **$0.002** / 1K token Kirish · Keshga yozish **$0.025** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaOpenAI Chat · So‘rov uzunligi bo‘yicha 1-daraja | Tariflar jadvali— | Kontekst tokenlari soni bundan ko‘p0 | Kontekst tokenlari soni bundan oshmaydi, chegara kiradi272 000 | To‘lov Kirish · Kirish tokenlari **$0.02** / 1K token Chiqish · Chiqish tokenlari **$0.1** / 1K token Kirish · Keshdan o‘qish **$0.002** / 1K token Kirish · Keshga yozish **$0.025** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaOpenAI Chat · So‘rov uzunligi bo‘yicha 2-daraja | Tariflar jadvali— | Kontekst tokenlari soni bundan ko‘p272 000 | Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘q | To‘lov Kirish · Kirish tokenlari **$0.04** / 1K token Chiqish · Chiqish tokenlari **$0.15** / 1K token Kirish · Keshdan o‘qish **$0.004** / 1K token Kirish · Keshga yozish **$0.05** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaAnthropic Messages · Tokenlar uchun asosiy tariflar | Tariflar jadvaliAsosiy tarif | Kontekst tokenlari soni bundan ko‘p— | Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘q | To‘lov Kirish · Kirish tokenlari **$0.02** / 1K token Chiqish · Chiqish tokenlari **$0.1** / 1K token Kirish · Keshdan o‘qish **$0.002** / 1K token Kirish · Keshga yozish **$0.025** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaAnthropic Messages · So‘rov uzunligi bo‘yicha 1-daraja | Tariflar jadvali— | Kontekst tokenlari soni bundan ko‘p0 | Kontekst tokenlari soni bundan oshmaydi, chegara kiradi272 000 | To‘lov Kirish · Kirish tokenlari **$0.02** / 1K token Chiqish · Chiqish tokenlari **$0.1** / 1K token Kirish · Keshdan o‘qish **$0.002** / 1K token Kirish · Keshga yozish **$0.025** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaAnthropic Messages · So‘rov uzunligi bo‘yicha 2-daraja | Tariflar jadvali— | Kontekst tokenlari soni bundan ko‘p272 000 | Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘q | To‘lov Kirish · Kirish tokenlari **$0.04** / 1K token Chiqish · Chiqish tokenlari **$0.15** / 1K token Kirish · Keshdan o‘qish **$0.004** / 1K token Kirish · Keshga yozish **$0.05** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaOpenAI Responses · Tokenlar uchun asosiy tariflar | Tariflar jadvaliAsosiy tarif | Kontekst tokenlari soni bundan ko‘p— | Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘q | To‘lov Kirish · Kirish tokenlari **$0.02** / 1K token Chiqish · Chiqish tokenlari **$0.1** / 1K token Kirish · Keshdan o‘qish **$0.002** / 1K token Kirish · Keshga yozish **$0.025** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaOpenAI Responses · So‘rov uzunligi bo‘yicha 1-daraja | Tariflar jadvali— | Kontekst tokenlari soni bundan ko‘p0 | Kontekst tokenlari soni bundan oshmaydi, chegara kiradi272 000 | To‘lov Kirish · Kirish tokenlari **$0.02** / 1K token Chiqish · Chiqish tokenlari **$0.1** / 1K token Kirish · Keshdan o‘qish **$0.002** / 1K token Kirish · Keshga yozish **$0.025** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaOpenAI Responses · So‘rov uzunligi bo‘yicha 2-daraja | Tariflar jadvali— | Kontekst tokenlari soni bundan ko‘p272 000 | Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘q | To‘lov Kirish · Kirish tokenlari **$0.04** / 1K token Chiqish · Chiqish tokenlari **$0.15** / 1K token Kirish · Keshdan o‘qish **$0.004** / 1K token Kirish · Keshga yozish **$0.05** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |

### So‘rov namunalari

#### Ailoot · OpenAI Chat

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": "gpt", "messages": []}')
f=Path(os.environ["AILOOT_TEXT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 source material")
text=f.read_text(encoding="utf-8")
if not text.strip():raise SystemExit("Source material must contain text")
p["messages"]=[{"role":"user","content":"Summarize this material and quote supporting source passages.\n\n"+text}]
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/chat/completions \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
print(json.dumps(json.loads(Path("result.json").read_text()),ensure_ascii=False,indent=2))
PY_RESULT
```

```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": "gpt", "messages": [{"role": "user", "content": [{"type": "text", "text": "Read labels and numbers in this image; flag unreadable text."}]}]}')
import base64
f=Path(os.environ["AILOOT_IMAGE_FILE"])
if not f.is_file():raise SystemExit("Choose an actual PNG JPEG or WebP image")
raw=f.read_bytes()
mime="image/png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "image/jpeg" if raw.startswith(b"\xff\xd8") else "image/webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else None
if not mime:raise SystemExit("Use PNG JPEG or WebP")
b64=base64.b64encode(raw).decode()
p["messages"][0]["content"].append({"type":"image_url","image_url":{"url":"data:"+mime+";base64,"+b64}})
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/chat/completions \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
print(json.dumps(json.loads(Path("result.json").read_text()),ensure_ascii=False,indent=2))
PY_RESULT
```

```python
from openai import OpenAI
import os

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

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

save_result(resp.to_dict(mode="json"))
```

```js
import OpenAI from "openai";

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

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

saveResult(resp);
```

```python
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='gpt',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 · 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

| Maydon | Tur |
| --- | --- |
| Maydon`choices[].index` | Turinteger |
| Maydon`choices[].message.content` | Turstring\|null |
| Maydon`choices[].message.tool_calls` | Turtool\_call\[\] |
| Maydon`choices[].message.reasoning_content` | Turstring |
| Maydon`choices[].message.reasoning_details` | Turobject\|array |
| Maydon`choices[].finish_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

<strong>Ailoot</strong> [`gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt-6-astra&fmt=chat), [`gpt`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt&fmt=chat), [`gpt-latest`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt-latest&fmt=chat)
**Ailoot Ultra** [`gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=gpt-6-astra&fmt=chat), [`openai/gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=openai%2Fgpt-6-astra&fmt=chat), [`~openai/gpt-astra-latest`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=~openai%2Fgpt-astra-latest&fmt=chat)

#### Usul yo‘llari taxalluslari

`/chat/completions`

#### Chaqirish uchun tegishli ID lar

[`openai/gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=openai%2Fgpt-6-astra&fmt=chat), [`gpt`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt&fmt=chat), [`gpt-latest`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt-latest&fmt=chat), [`~openai/gpt-astra-latest`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=~openai%2Fgpt-astra-latest&fmt=chat), [`gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt-6-astra&fmt=chat), [`gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=gpt-6-astra&fmt=chat)

**Ailoot · Anthropic Messages** `POST /v1/messages` `gpt-latest`

[`gpt-latest`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt-latest&fmt=messages)

OpenAI /`gpt-latest`

Model ID

- `gpt-6-astra`
- `gpt`
- `gpt-latest`

### Boshlash

GPT-6 Astra murakkab mulohaza, dasturlash, tadqiqotlar va hujjat tayyorlash uchun mo‘ljallangan. Ko‘p bosqichli vazifalarda matn, tasvirlar va vositalar bilan ishlaydi.

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 050 000 tokens

Eng katta chiqish

128 000 tokens

Chiqish formati

json yoki SSE

| Maydon | Tur | Talab | Qiymatlar va cheklovlar | Standart |
| --- | --- | --- | --- | --- |
| Maydon`model` | Tur`string` | TalabMajburiy | Qiymatlar va cheklovlar gpt-latest | 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,01 US$ */ 1K*

Chiqish

0,05 US$ */ 1K*

Keshdan o‘qish

0,001 US$ */ 1K*

Keshga yozish

0,0125 US$ */ 1K*

Keshga yozish, 5 daqiqa

0,0125 US$ */ 1K tokens*

fast ko‘paytirgichi

×2

flex ko‘paytirgichi

×0.5

#### 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; 272 000\] | Kirish0,01 US$ | Chiqish0,05 US$ | Keshdan o‘qish0,001 US$ | Keshga yozish0,0125 US$ | Kesh 5 daqiqa0,0125 US$ | Kesh 1 soatAsosiy: — |
| So‘rov hajmi, tokenlarda(272 000; ∞) | Kirish0,02 US$ | Chiqish0,075 US$ | Keshdan o‘qish0,002 US$ | Keshga yozish0,025 US$ | Kesh 5 daqiqa0,025 US$ | 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/)

#### 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.

| Sozlama | Tariflar jadvali | Kontekst tokenlari soni bundan ko‘p | Kontekst tokenlari soni bundan oshmaydi, chegara kiradi | To‘lov |
| --- | --- | --- | --- | --- |
| SozlamaOpenAI Chat · Tokenlar uchun asosiy tariflar | Tariflar jadvaliAsosiy tarif | Kontekst tokenlari soni bundan ko‘p— | Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘q | To‘lov Kirish · Kirish tokenlari **$0.02** / 1K token Chiqish · Chiqish tokenlari **$0.1** / 1K token Kirish · Keshdan o‘qish **$0.002** / 1K token Kirish · Keshga yozish **$0.025** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaOpenAI Chat · So‘rov uzunligi bo‘yicha 1-daraja | Tariflar jadvali— | Kontekst tokenlari soni bundan ko‘p0 | Kontekst tokenlari soni bundan oshmaydi, chegara kiradi272 000 | To‘lov Kirish · Kirish tokenlari **$0.02** / 1K token Chiqish · Chiqish tokenlari **$0.1** / 1K token Kirish · Keshdan o‘qish **$0.002** / 1K token Kirish · Keshga yozish **$0.025** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaOpenAI Chat · So‘rov uzunligi bo‘yicha 2-daraja | Tariflar jadvali— | Kontekst tokenlari soni bundan ko‘p272 000 | Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘q | To‘lov Kirish · Kirish tokenlari **$0.04** / 1K token Chiqish · Chiqish tokenlari **$0.15** / 1K token Kirish · Keshdan o‘qish **$0.004** / 1K token Kirish · Keshga yozish **$0.05** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaAnthropic Messages · Tokenlar uchun asosiy tariflar | Tariflar jadvaliAsosiy tarif | Kontekst tokenlari soni bundan ko‘p— | Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘q | To‘lov Kirish · Kirish tokenlari **$0.02** / 1K token Chiqish · Chiqish tokenlari **$0.1** / 1K token Kirish · Keshdan o‘qish **$0.002** / 1K token Kirish · Keshga yozish **$0.025** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaAnthropic Messages · So‘rov uzunligi bo‘yicha 1-daraja | Tariflar jadvali— | Kontekst tokenlari soni bundan ko‘p0 | Kontekst tokenlari soni bundan oshmaydi, chegara kiradi272 000 | To‘lov Kirish · Kirish tokenlari **$0.02** / 1K token Chiqish · Chiqish tokenlari **$0.1** / 1K token Kirish · Keshdan o‘qish **$0.002** / 1K token Kirish · Keshga yozish **$0.025** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaAnthropic Messages · So‘rov uzunligi bo‘yicha 2-daraja | Tariflar jadvali— | Kontekst tokenlari soni bundan ko‘p272 000 | Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘q | To‘lov Kirish · Kirish tokenlari **$0.04** / 1K token Chiqish · Chiqish tokenlari **$0.15** / 1K token Kirish · Keshdan o‘qish **$0.004** / 1K token Kirish · Keshga yozish **$0.05** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaOpenAI Responses · Tokenlar uchun asosiy tariflar | Tariflar jadvaliAsosiy tarif | Kontekst tokenlari soni bundan ko‘p— | Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘q | To‘lov Kirish · Kirish tokenlari **$0.02** / 1K token Chiqish · Chiqish tokenlari **$0.1** / 1K token Kirish · Keshdan o‘qish **$0.002** / 1K token Kirish · Keshga yozish **$0.025** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaOpenAI Responses · So‘rov uzunligi bo‘yicha 1-daraja | Tariflar jadvali— | Kontekst tokenlari soni bundan ko‘p0 | Kontekst tokenlari soni bundan oshmaydi, chegara kiradi272 000 | To‘lov Kirish · Kirish tokenlari **$0.02** / 1K token Chiqish · Chiqish tokenlari **$0.1** / 1K token Kirish · Keshdan o‘qish **$0.002** / 1K token Kirish · Keshga yozish **$0.025** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaOpenAI Responses · So‘rov uzunligi bo‘yicha 2-daraja | Tariflar jadvali— | Kontekst tokenlari soni bundan ko‘p272 000 | Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘q | To‘lov Kirish · Kirish tokenlari **$0.04** / 1K token Chiqish · Chiqish tokenlari **$0.15** / 1K token Kirish · Keshdan o‘qish **$0.004** / 1K token Kirish · Keshga yozish **$0.05** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |

### 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": "gpt-latest", "max_tokens": 1024, "messages": []}')
f=Path(os.environ["AILOOT_TEXT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 source material")
text=f.read_text(encoding="utf-8")
if not text.strip():raise SystemExit("Source material must contain text")
p["messages"]=[{"role":"user","content":"Summarize this material and quote supporting source passages.\n\n"+text}]
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/messages \
  -H "x-api-key: $AILOOT_API_KEY" -H 'anthropic-version: 2023-06-01' -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
print(json.dumps(json.loads(Path("result.json").read_text()),ensure_ascii=False,indent=2))
PY_RESULT
```

```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": "gpt-latest", "max_tokens": 1024, "messages": [{"role": "user", "content": [{"type": "text", "text": "Read labels and numbers in this image; flag unreadable text."}]}]}')
import base64
f=Path(os.environ["AILOOT_IMAGE_FILE"])
if not f.is_file():raise SystemExit("Choose an actual PNG JPEG or WebP image")
raw=f.read_bytes()
mime="image/png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "image/jpeg" if raw.startswith(b"\xff\xd8") else "image/webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else None
if not mime:raise SystemExit("Use PNG JPEG or WebP")
b64=base64.b64encode(raw).decode()
p["messages"][0]["content"].append({"type":"image","source":{"type":"base64","media_type":mime,"data":b64}})
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/messages \
  -H "x-api-key: $AILOOT_API_KEY" -H 'anthropic-version: 2023-06-01' -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
print(json.dumps(json.loads(Path("result.json").read_text()),ensure_ascii=False,indent=2))
PY_RESULT
```

```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="gpt-latest",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Explain the difference between an observation and a hypothesis in three sentences."}],
)
import base64, json
from pathlib import Path

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

save_result(msg.to_dict(mode="json"))
```

```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: "gpt-latest",
  max_tokens: 1024,
  messages: [{ role: "user", content: "Explain the difference between an observation and a hypothesis in three sentences." }],
});
import { writeFileSync } from "node:fs";

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

saveResult(msg);
```

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

### 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

<strong>Ailoot</strong> [`gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt-6-astra&fmt=messages), [`gpt`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt&fmt=messages), [`gpt-latest`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt-latest&fmt=messages)
**Ailoot Ultra** [`gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=gpt-6-astra&fmt=messages), [`openai/gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=openai%2Fgpt-6-astra&fmt=messages), [`~openai/gpt-astra-latest`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=~openai%2Fgpt-astra-latest&fmt=messages)

#### Usul yo‘llari taxalluslari

`/chat/completions`

#### Chaqirish uchun tegishli ID lar

[`openai/gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=openai%2Fgpt-6-astra&fmt=messages), [`gpt`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt&fmt=messages), [`gpt-latest`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt-latest&fmt=messages), [`~openai/gpt-astra-latest`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=~openai%2Fgpt-astra-latest&fmt=messages), [`gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt-6-astra&fmt=messages), [`gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=gpt-6-astra&fmt=messages)

**Ailoot · OpenAI Responses** `POST /v1/responses` `gpt-latest`

[`gpt-latest`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt-latest&fmt=responses)

OpenAI /`gpt-latest`

Model ID

- `gpt-6-astra`
- `gpt`
- `gpt-latest`

### Boshlash

GPT-6 Astra murakkab mulohaza, dasturlash, tadqiqotlar va hujjat tayyorlash uchun mo‘ljallangan. Ko‘p bosqichli vazifalarda matn, tasvirlar va vositalar bilan ishlaydi.

Qabul qilinadigan kirish ma’lumotlari

Matn · Rasmlar

Natijalar

Matn

### Ailoot da mavjud · kirish ma’lumotlari va usullar

**Ailoot · OpenAI Responses** `POST /v1/responses`

Kirish

`text`, `image`

Chiqish

`text`

Kontekst

1 050 000 tokens

Eng katta chiqish

128 000 tokens

Chiqish formati

json yoki SSE

| Maydon | Tur | Talab | Qiymatlar va cheklovlar | Standart |
| --- | --- | --- | --- | --- |
| Maydon`model` | Tur`string` | TalabMajburiy | Qiymatlar va cheklovlar gpt-latest | Standart— |
| Maydon`input` | Tur`string\|input_item[]` | TalabMajburiy | Qiymatlar va cheklovlar | Standart— |
| Maydon`instructions` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar | Standart— |
| Maydon`input[].type` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar message, reasoning, function\_call, function\_call\_output | Standart— |
| Maydon`input[].content` | Tur`string\|content_part[]` | TalabIxtiyoriy | Qiymatlar va cheklovlar | Standart— |
| Maydon`input[].call_id` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar Quyidagi holatda qo‘llanadi: function\_call\_output; haqiqatan qaytarilgan call\_id qiymatini saqlang | Standart— |
| Maydon`input[].output` | Tur`string\|content_part[]` | TalabIxtiyoriy | Qiymatlar va cheklovlar Quyidagi holatda qo‘llanadi: function\_call\_output | Standart— |
| Maydon`max_output_tokens` | Tur`integer` | TalabIxtiyoriy | Qiymatlar va cheklovlar Eng kam: 1 Modelga bogʻliq | 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`tools` | Tur`tool[]` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`tool_choice` | Tur`string\|object` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`parallel_tool_calls` | Tur`boolean` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`reasoning.effort` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`reasoning.summary` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`text.format` | Tur`object` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`text.verbosity` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`include` | Tur`string[]` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`store` | Tur`boolean` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`previous_response_id` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar ID talabi: Faqat qo‘llab-quvvatlanadigan davom ettirishdan olingan haqiqiy javob IDsi Modelga bogʻliq | Standart— |
| Maydon`service_tier` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`prompt_cache_key` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`prompt_cache_options` | Tur`object` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |

Kirish materiallari birikmalari

**Matn** · UTF8 matni

`Kirish matni yoki input_text qismi`

**Matn + rasm**

`{type:input_image,image_url}`

Usul parametrlari va hayot sikli

| Parametr | Parametr talablari |
| --- | --- |
| Parametr`material_types` | Parametr talablaritext, image |
| Parametr`required` | Parametr talablarimodel, input |
| 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,01 US$ */ 1K*

Chiqish

0,05 US$ */ 1K*

Keshdan o‘qish

0,001 US$ */ 1K*

Keshga yozish

0,0125 US$ */ 1K*

Keshga yozish, 5 daqiqa

0,0125 US$ */ 1K tokens*

fast ko‘paytirgichi

×2

flex ko‘paytirgichi

×0.5

#### So‘rov uzunligiga qarab narxlar · OpenAI Responses

| So‘rov hajmi, tokenlarda | Kirish | Chiqish | Keshdan o‘qish | Keshga yozish | Kesh 5 daqiqa | Kesh 1 soat |
| --- | --- | --- | --- | --- | --- | --- |
| So‘rov hajmi, tokenlarda(0; 272 000\] | Kirish0,01 US$ | Chiqish0,05 US$ | Keshdan o‘qish0,001 US$ | Keshga yozish0,0125 US$ | Kesh 5 daqiqa0,0125 US$ | Kesh 1 soatAsosiy: — |
| So‘rov hajmi, tokenlarda(272 000; ∞) | Kirish0,02 US$ | Chiqish0,075 US$ | Keshdan o‘qish0,002 US$ | Keshga yozish0,025 US$ | Kesh 5 daqiqa0,025 US$ | 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/)

#### 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.

| Sozlama | Tariflar jadvali | Kontekst tokenlari soni bundan ko‘p | Kontekst tokenlari soni bundan oshmaydi, chegara kiradi | To‘lov |
| --- | --- | --- | --- | --- |
| SozlamaOpenAI Chat · Tokenlar uchun asosiy tariflar | Tariflar jadvaliAsosiy tarif | Kontekst tokenlari soni bundan ko‘p— | Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘q | To‘lov Kirish · Kirish tokenlari **$0.02** / 1K token Chiqish · Chiqish tokenlari **$0.1** / 1K token Kirish · Keshdan o‘qish **$0.002** / 1K token Kirish · Keshga yozish **$0.025** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaOpenAI Chat · So‘rov uzunligi bo‘yicha 1-daraja | Tariflar jadvali— | Kontekst tokenlari soni bundan ko‘p0 | Kontekst tokenlari soni bundan oshmaydi, chegara kiradi272 000 | To‘lov Kirish · Kirish tokenlari **$0.02** / 1K token Chiqish · Chiqish tokenlari **$0.1** / 1K token Kirish · Keshdan o‘qish **$0.002** / 1K token Kirish · Keshga yozish **$0.025** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaOpenAI Chat · So‘rov uzunligi bo‘yicha 2-daraja | Tariflar jadvali— | Kontekst tokenlari soni bundan ko‘p272 000 | Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘q | To‘lov Kirish · Kirish tokenlari **$0.04** / 1K token Chiqish · Chiqish tokenlari **$0.15** / 1K token Kirish · Keshdan o‘qish **$0.004** / 1K token Kirish · Keshga yozish **$0.05** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaAnthropic Messages · Tokenlar uchun asosiy tariflar | Tariflar jadvaliAsosiy tarif | Kontekst tokenlari soni bundan ko‘p— | Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘q | To‘lov Kirish · Kirish tokenlari **$0.02** / 1K token Chiqish · Chiqish tokenlari **$0.1** / 1K token Kirish · Keshdan o‘qish **$0.002** / 1K token Kirish · Keshga yozish **$0.025** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaAnthropic Messages · So‘rov uzunligi bo‘yicha 1-daraja | Tariflar jadvali— | Kontekst tokenlari soni bundan ko‘p0 | Kontekst tokenlari soni bundan oshmaydi, chegara kiradi272 000 | To‘lov Kirish · Kirish tokenlari **$0.02** / 1K token Chiqish · Chiqish tokenlari **$0.1** / 1K token Kirish · Keshdan o‘qish **$0.002** / 1K token Kirish · Keshga yozish **$0.025** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaAnthropic Messages · So‘rov uzunligi bo‘yicha 2-daraja | Tariflar jadvali— | Kontekst tokenlari soni bundan ko‘p272 000 | Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘q | To‘lov Kirish · Kirish tokenlari **$0.04** / 1K token Chiqish · Chiqish tokenlari **$0.15** / 1K token Kirish · Keshdan o‘qish **$0.004** / 1K token Kirish · Keshga yozish **$0.05** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaOpenAI Responses · Tokenlar uchun asosiy tariflar | Tariflar jadvaliAsosiy tarif | Kontekst tokenlari soni bundan ko‘p— | Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘q | To‘lov Kirish · Kirish tokenlari **$0.02** / 1K token Chiqish · Chiqish tokenlari **$0.1** / 1K token Kirish · Keshdan o‘qish **$0.002** / 1K token Kirish · Keshga yozish **$0.025** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaOpenAI Responses · So‘rov uzunligi bo‘yicha 1-daraja | Tariflar jadvali— | Kontekst tokenlari soni bundan ko‘p0 | Kontekst tokenlari soni bundan oshmaydi, chegara kiradi272 000 | To‘lov Kirish · Kirish tokenlari **$0.02** / 1K token Chiqish · Chiqish tokenlari **$0.1** / 1K token Kirish · Keshdan o‘qish **$0.002** / 1K token Kirish · Keshga yozish **$0.025** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaOpenAI Responses · So‘rov uzunligi bo‘yicha 2-daraja | Tariflar jadvali— | Kontekst tokenlari soni bundan ko‘p272 000 | Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘q | To‘lov Kirish · Kirish tokenlari **$0.04** / 1K token Chiqish · Chiqish tokenlari **$0.15** / 1K token Kirish · Keshdan o‘qish **$0.004** / 1K token Kirish · Keshga yozish **$0.05** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |

### So‘rov namunalari

#### Ailoot · OpenAI Responses

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": "gpt-latest", "input": ""}')
f=Path(os.environ["AILOOT_TEXT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 source material")
text=f.read_text(encoding="utf-8")
if not text.strip():raise SystemExit("Source material must contain text")
p["input"]="Summarize this material and quote supporting source passages.\n\n"+text
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/responses \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import base64, json
from pathlib import Path

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

save_result(json.loads(Path("result.json").read_text(encoding="utf-8")))
PY_RESULT
```

```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": "gpt-latest", "input": [{"role": "user", "content": [{"type": "input_text", "text": "Read labels and numbers in this image; flag unreadable text."}]}]}')
import base64
f=Path(os.environ["AILOOT_IMAGE_FILE"])
if not f.is_file():raise SystemExit("Choose an actual PNG JPEG or WebP image")
raw=f.read_bytes()
mime="image/png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "image/jpeg" if raw.startswith(b"\xff\xd8") else "image/webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else None
if not mime:raise SystemExit("Use PNG JPEG or WebP")
b64=base64.b64encode(raw).decode()
p["input"][0]["content"].append({"type":"input_image","image_url":"data:"+mime+";base64,"+b64})
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/responses \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import base64, json
from pathlib import Path

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

save_result(json.loads(Path("result.json").read_text(encoding="utf-8")))
PY_RESULT
```

```python
from openai import OpenAI
import os

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

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

save_result(resp.to_dict(mode="json"))
```

```js
import OpenAI from "openai";

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

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

saveResult(resp);
```

```python
from openai import OpenAI
import os
from pathlib import Path
import base64, json
from pathlib import Path

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

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

### Natijalarni olish va saqlash

#### Ailoot · OpenAI Responses

json yoki SSE

##### Barcha tayyor natijalarni saqlash

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

Har bir chiqish elementi va kontent qismini, funksiyaning haqiqiy call\_id qiymatini, shifrlangan fikrlash ma’lumotlari va sarfni saqlang. Oqimli uzatishda hodisa va elementning to‘liq identifikatsiyasini 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

| Maydon | Tur |
| --- | --- |
| Maydon`id` | Turstring |
| Maydon`status` | Turstring |
| Maydon`output[]` | Turmessage\|reasoning\|function\_call\|other item |
| Maydon`output[].content[]` | Turcontent part |
| 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

<strong>Ailoot</strong> [`gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt-6-astra&fmt=responses), [`gpt`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt&fmt=responses), [`gpt-latest`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt-latest&fmt=responses)
**Ailoot Ultra** [`gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=gpt-6-astra&fmt=responses), [`openai/gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=openai%2Fgpt-6-astra&fmt=responses), [`~openai/gpt-astra-latest`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=~openai%2Fgpt-astra-latest&fmt=responses)

#### Usul yo‘llari taxalluslari

`/chat/completions`

#### Chaqirish uchun tegishli ID lar

[`openai/gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=openai%2Fgpt-6-astra&fmt=responses), [`gpt`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt&fmt=responses), [`gpt-latest`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt-latest&fmt=responses), [`~openai/gpt-astra-latest`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=~openai%2Fgpt-astra-latest&fmt=responses), [`gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt-6-astra&fmt=responses), [`gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=gpt-6-astra&fmt=responses)

**Ailoot · OpenAI Chat** `POST /v1/chat/completions` `gpt-latest`

[`gpt-latest`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt-latest&fmt=chat)

OpenAI /`gpt-latest`

Model ID

- `gpt-6-astra`
- `gpt`
- `gpt-latest`

### Boshlash

GPT-6 Astra murakkab mulohaza, dasturlash, tadqiqotlar va hujjat tayyorlash uchun mo‘ljallangan. Ko‘p bosqichli vazifalarda matn, tasvirlar va vositalar bilan ishlaydi.

Qabul qilinadigan kirish ma’lumotlari

Matn · Rasmlar

Natijalar

Matn

### Ailoot da mavjud · kirish ma’lumotlari va usullar

**Ailoot · OpenAI Chat** `POST /v1/chat/completions`

Kirish

`text`, `image`

Chiqish

`text`

Kontekst

1 050 000 tokens

Eng katta chiqish

128 000 tokens

Chiqish formati

json yoki SSE

| Maydon | Tur | Talab | Qiymatlar va cheklovlar | Standart |
| --- | --- | --- | --- | --- |
| Maydon`model` | Tur`string` | TalabMajburiy | Qiymatlar va cheklovlar gpt-latest | Standart— |
| Maydon`messages` | Tur`message[]` | TalabMajburiy | Qiymatlar va cheklovlar Elementlarning eng kam soni: 1 | Standart— |
| Maydon`messages[].role` | Tur`string` | TalabMajburiy | Qiymatlar 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— |
| Maydon`messages[].content` | Tur`string\|content_part[]\|null` | TalabIxtiyoriy | Qiymatlar va cheklovlar | Standart— |
| Maydon`messages[].tool_calls` | Tur`tool_call[]` | TalabIxtiyoriy | Qiymatlar va cheklovlar | Standart— |
| Maydon`messages[].tool_call_id` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar Quyidagi holatda qo‘llanadi: role=tool; haqiqatan qaytarilgan IDdan foydalaning | Standart— |
| Maydon`messages[].name` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar | Standart— |
| Maydon`messages[].reasoning_content` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar Quyidagi holatda qo‘llanadi: Ushbu model foydalanganda, haqiqatan qaytarilgan fikrlash ma’lumotlarini keyingi so‘rovda qayta yuboring | Standart— |
| Maydon`messages[].reasoning_details` | Tur`object\|array` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`max_tokens` | Tur`integer` | TalabIxtiyoriy | Qiymatlar va cheklovlar Eng kam: 1 Modelga bogʻliq | Standart— |
| Maydon`max_completion_tokens` | Tur`integer` | TalabIxtiyoriy | Qiymatlar va cheklovlar Eng kam: 1 Modelga bogʻliq | Standart— |
| Maydon`stream` | Tur`boolean` | TalabIxtiyoriy | Qiymatlar va cheklovlar | Standartfalse |
| Maydon`stream_options.include_usage` | Tur`boolean` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| 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` | Tur`string\|string[]` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`tools` | Tur`function_tool[]` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`tools[].type` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`tools[].function.name` | Tur`string` | TalabMajburiy | Qiymatlar va cheklovlar Quyidagi holatda qo‘llanadi: Funksiya vositasi taqdim etilgan | Standart— |
| Maydon`tools[].function.description` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar | Standart— |
| Maydon`tools[].function.parameters` | Tur`JSON_schema` | TalabIxtiyoriy | Qiymatlar va cheklovlar | Standart— |
| Maydon`tool_choice` | Tur`string\|object` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`parallel_tool_calls` | Tur`boolean` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`response_format` | Tur`object` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`reasoning_effort` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`reasoning` | Tur`object` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`service_tier` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`instructions` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar Moslik maydoni | Standart— |
| Maydon`functions` | Tur`function[]` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`function_call` | Tur`string\|object` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`prompt_cache_options` | Tur`object` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |

Kirish materiallari birikmalari

**Matn** · UTF8 matni

`messages[].content`

**Matn + rasm**

`{type:image_url,image_url:{url,detail}}`

Usul parametrlari va hayot sikli

| Parametr | Parametr talablari |
| --- | --- |
| Parametr`material_types` | Parametr talablaritext, image |
| Parametr`required` | Parametr talablarimodel, messages |
| 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,01 US$ */ 1K*

Chiqish

0,05 US$ */ 1K*

Keshdan o‘qish

0,001 US$ */ 1K*

Keshga yozish

0,0125 US$ */ 1K*

Keshga yozish, 5 daqiqa

0,0125 US$ */ 1K tokens*

fast ko‘paytirgichi

×2

flex ko‘paytirgichi

×0.5

#### So‘rov uzunligiga qarab narxlar · OpenAI Chat

| So‘rov hajmi, tokenlarda | Kirish | Chiqish | Keshdan o‘qish | Keshga yozish | Kesh 5 daqiqa | Kesh 1 soat |
| --- | --- | --- | --- | --- | --- | --- |
| So‘rov hajmi, tokenlarda(0; 272 000\] | Kirish0,01 US$ | Chiqish0,05 US$ | Keshdan o‘qish0,001 US$ | Keshga yozish0,0125 US$ | Kesh 5 daqiqa0,0125 US$ | Kesh 1 soatAsosiy: — |
| So‘rov hajmi, tokenlarda(272 000; ∞) | Kirish0,02 US$ | Chiqish0,075 US$ | Keshdan o‘qish0,002 US$ | Keshga yozish0,025 US$ | Kesh 5 daqiqa0,025 US$ | 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/)

#### 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.

| Sozlama | Tariflar jadvali | Kontekst tokenlari soni bundan ko‘p | Kontekst tokenlari soni bundan oshmaydi, chegara kiradi | To‘lov |
| --- | --- | --- | --- | --- |
| SozlamaOpenAI Chat · Tokenlar uchun asosiy tariflar | Tariflar jadvaliAsosiy tarif | Kontekst tokenlari soni bundan ko‘p— | Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘q | To‘lov Kirish · Kirish tokenlari **$0.02** / 1K token Chiqish · Chiqish tokenlari **$0.1** / 1K token Kirish · Keshdan o‘qish **$0.002** / 1K token Kirish · Keshga yozish **$0.025** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaOpenAI Chat · So‘rov uzunligi bo‘yicha 1-daraja | Tariflar jadvali— | Kontekst tokenlari soni bundan ko‘p0 | Kontekst tokenlari soni bundan oshmaydi, chegara kiradi272 000 | To‘lov Kirish · Kirish tokenlari **$0.02** / 1K token Chiqish · Chiqish tokenlari **$0.1** / 1K token Kirish · Keshdan o‘qish **$0.002** / 1K token Kirish · Keshga yozish **$0.025** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaOpenAI Chat · So‘rov uzunligi bo‘yicha 2-daraja | Tariflar jadvali— | Kontekst tokenlari soni bundan ko‘p272 000 | Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘q | To‘lov Kirish · Kirish tokenlari **$0.04** / 1K token Chiqish · Chiqish tokenlari **$0.15** / 1K token Kirish · Keshdan o‘qish **$0.004** / 1K token Kirish · Keshga yozish **$0.05** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaAnthropic Messages · Tokenlar uchun asosiy tariflar | Tariflar jadvaliAsosiy tarif | Kontekst tokenlari soni bundan ko‘p— | Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘q | To‘lov Kirish · Kirish tokenlari **$0.02** / 1K token Chiqish · Chiqish tokenlari **$0.1** / 1K token Kirish · Keshdan o‘qish **$0.002** / 1K token Kirish · Keshga yozish **$0.025** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaAnthropic Messages · So‘rov uzunligi bo‘yicha 1-daraja | Tariflar jadvali— | Kontekst tokenlari soni bundan ko‘p0 | Kontekst tokenlari soni bundan oshmaydi, chegara kiradi272 000 | To‘lov Kirish · Kirish tokenlari **$0.02** / 1K token Chiqish · Chiqish tokenlari **$0.1** / 1K token Kirish · Keshdan o‘qish **$0.002** / 1K token Kirish · Keshga yozish **$0.025** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaAnthropic Messages · So‘rov uzunligi bo‘yicha 2-daraja | Tariflar jadvali— | Kontekst tokenlari soni bundan ko‘p272 000 | Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘q | To‘lov Kirish · Kirish tokenlari **$0.04** / 1K token Chiqish · Chiqish tokenlari **$0.15** / 1K token Kirish · Keshdan o‘qish **$0.004** / 1K token Kirish · Keshga yozish **$0.05** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaOpenAI Responses · Tokenlar uchun asosiy tariflar | Tariflar jadvaliAsosiy tarif | Kontekst tokenlari soni bundan ko‘p— | Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘q | To‘lov Kirish · Kirish tokenlari **$0.02** / 1K token Chiqish · Chiqish tokenlari **$0.1** / 1K token Kirish · Keshdan o‘qish **$0.002** / 1K token Kirish · Keshga yozish **$0.025** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaOpenAI Responses · So‘rov uzunligi bo‘yicha 1-daraja | Tariflar jadvali— | Kontekst tokenlari soni bundan ko‘p0 | Kontekst tokenlari soni bundan oshmaydi, chegara kiradi272 000 | To‘lov Kirish · Kirish tokenlari **$0.02** / 1K token Chiqish · Chiqish tokenlari **$0.1** / 1K token Kirish · Keshdan o‘qish **$0.002** / 1K token Kirish · Keshga yozish **$0.025** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaOpenAI Responses · So‘rov uzunligi bo‘yicha 2-daraja | Tariflar jadvali— | Kontekst tokenlari soni bundan ko‘p272 000 | Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘q | To‘lov Kirish · Kirish tokenlari **$0.04** / 1K token Chiqish · Chiqish tokenlari **$0.15** / 1K token Kirish · Keshdan o‘qish **$0.004** / 1K token Kirish · Keshga yozish **$0.05** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |

### So‘rov namunalari

#### Ailoot · OpenAI Chat

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": "gpt-latest", "messages": []}')
f=Path(os.environ["AILOOT_TEXT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 source material")
text=f.read_text(encoding="utf-8")
if not text.strip():raise SystemExit("Source material must contain text")
p["messages"]=[{"role":"user","content":"Summarize this material and quote supporting source passages.\n\n"+text}]
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/chat/completions \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
print(json.dumps(json.loads(Path("result.json").read_text()),ensure_ascii=False,indent=2))
PY_RESULT
```

```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": "gpt-latest", "messages": [{"role": "user", "content": [{"type": "text", "text": "Read labels and numbers in this image; flag unreadable text."}]}]}')
import base64
f=Path(os.environ["AILOOT_IMAGE_FILE"])
if not f.is_file():raise SystemExit("Choose an actual PNG JPEG or WebP image")
raw=f.read_bytes()
mime="image/png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "image/jpeg" if raw.startswith(b"\xff\xd8") else "image/webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else None
if not mime:raise SystemExit("Use PNG JPEG or WebP")
b64=base64.b64encode(raw).decode()
p["messages"][0]["content"].append({"type":"image_url","image_url":{"url":"data:"+mime+";base64,"+b64}})
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/chat/completions \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
print(json.dumps(json.loads(Path("result.json").read_text()),ensure_ascii=False,indent=2))
PY_RESULT
```

```python
from openai import OpenAI
import os

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

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

save_result(resp.to_dict(mode="json"))
```

```js
import OpenAI from "openai";

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

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

saveResult(resp);
```

```python
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='gpt-latest',messages=[{"role":"user","content":"Explain observations and hypotheses in three sentences."}]) as stream:
    with Path("stream-events.jsonl").open("w",encoding="utf-8") as log:
        for event in stream:
            payload=event.to_dict(mode="json")
            log.write(json.dumps(payload,ensure_ascii=False)+"\n"); log.flush()
            print(json.dumps(payload,ensure_ascii=False))
    final=stream.get_final_completion()
    save_result(final.to_dict(mode="json"),"stream-result")
```

### Natijalarni olish va saqlash

#### Ailoot · 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

| Maydon | Tur |
| --- | --- |
| Maydon`choices[].index` | Turinteger |
| Maydon`choices[].message.content` | Turstring\|null |
| Maydon`choices[].message.tool_calls` | Turtool\_call\[\] |
| Maydon`choices[].message.reasoning_content` | Turstring |
| Maydon`choices[].message.reasoning_details` | Turobject\|array |
| Maydon`choices[].finish_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

<strong>Ailoot</strong> [`gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt-6-astra&fmt=chat), [`gpt`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt&fmt=chat), [`gpt-latest`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt-latest&fmt=chat)
**Ailoot Ultra** [`gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=gpt-6-astra&fmt=chat), [`openai/gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=openai%2Fgpt-6-astra&fmt=chat), [`~openai/gpt-astra-latest`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=~openai%2Fgpt-astra-latest&fmt=chat)

#### Usul yo‘llari taxalluslari

`/chat/completions`

#### Chaqirish uchun tegishli ID lar

[`openai/gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=openai%2Fgpt-6-astra&fmt=chat), [`gpt`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt&fmt=chat), [`gpt-latest`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt-latest&fmt=chat), [`~openai/gpt-astra-latest`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=~openai%2Fgpt-astra-latest&fmt=chat), [`gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt-6-astra&fmt=chat), [`gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=gpt-6-astra&fmt=chat)

**Ailoot Ultra · OpenAI Responses** `POST /v1/responses` `gpt-6-astra`

[`gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=gpt-6-astra&fmt=responses)

OpenAI /`gpt-6-astra`

Model ID

- `gpt-6-astra`
- `openai/gpt-6-astra`
- `~openai/gpt-astra-latest`

### Boshlash

GPT-6 Astra murakkab mulohaza, dasturlash, tadqiqotlar va hujjat tayyorlash uchun mo‘ljallangan. Ko‘p bosqichli vazifalarda matn, tasvirlar va vositalar bilan ishlaydi.

Qabul qilinadigan kirish ma’lumotlari

Matn

Natijalar

Matn

### Ailoot da mavjud · kirish ma’lumotlari va usullar

**Ailoot Ultra · OpenAI Responses** `POST /v1/responses`

Kirish

`text`

Chiqish

`text`

Chiqish formati

json or SSE

| Maydon | Tur | Talab | Qiymatlar va cheklovlar | Standart |
| --- | --- | --- | --- | --- |
| Maydon`model` | Tur`string` | TalabMajburiy | Qiymatlar va cheklovlar gpt-6-astra | Standart— |
| Maydon`input` | Tur`string\|input_item[]` | TalabMajburiy | Qiymatlar va cheklovlar | Standart— |
| Maydon`instructions` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar | Standart— |
| Maydon`input[].type` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar message, reasoning, function\_call, function\_call\_output | Standart— |
| Maydon`input[].content` | Tur`string\|content_part[]` | TalabIxtiyoriy | Qiymatlar va cheklovlar | Standart— |
| Maydon`input[].call_id` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar Quyidagi holatda qo‘llanadi: function\_call\_output; haqiqatan qaytarilgan call\_id qiymatini saqlang | Standart— |
| Maydon`input[].output` | Tur`string\|content_part[]` | TalabIxtiyoriy | Qiymatlar va cheklovlar Quyidagi holatda qo‘llanadi: function\_call\_output | Standart— |
| Maydon`max_output_tokens` | Tur`integer` | TalabIxtiyoriy | Qiymatlar va cheklovlar Eng kam: 1 Modelga bogʻliq | 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`tools` | Tur`tool[]` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`tool_choice` | Tur`string\|object` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`parallel_tool_calls` | Tur`boolean` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`reasoning.effort` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`reasoning.summary` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`text.format` | Tur`object` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`text.verbosity` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`include` | Tur`string[]` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`store` | Tur`boolean` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`previous_response_id` | Tur`string` | TalabQo‘llab-quvvatlanmaydi | Qiymatlar va cheklovlar ID talabi: Faqat qo‘llab-quvvatlanadigan davom ettirishdan olingan haqiqiy javob IDsi Shartlar: Har bir so‘rov bilan haqiqiy suhbat tarixini qayta yuboring. | Standart— |
| Maydon`service_tier` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`prompt_cache_key` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`prompt_cache_options` | Tur`object` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |

Kirish materiallari birikmalari

**Matn** · UTF8 matni

`input text or input_text part`

**Matn + rasm**

`{type:input_image,image_url}`

Usul parametrlari va hayot sikli

| Parametr | Parametr talablari |
| --- | --- |
| Parametr`material_types` | Parametr talablaritext |
| Parametr`required` | Parametr talablarimodel, input |
| Parametr`optional_controls` | Parametr talablarinull |
| Parametr`content_type` | Parametr talablariapplication/json |
| Parametr`text_file_material` | Parametr talablariHaqiqiy UTF-8 hujjatini o‘qing va uning matnini ko‘rsatilgan kirish yoki xabar kontenti satriga joylashtiring. |

Hayot sikli: `exact retained published method`

Aniq model ID sini va majburiy maydonlarni yuboring.

Qaytarilgan har bir element va uning dastlabki identifikatorlarini saqlang.

### 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

Fikrlash darajasi · yuqori

Standart tarif Fikrlash darajasi yuqori bo‘lganda

Fikrlash darajasi · past

Standart tarif Fikrlash darajasi past bo‘lganda

Fikrlash darajasi · maksimal

Standart tarif Fikrlash darajasi maksimal bo‘lganda

Fikrlash darajasi · o‘rtacha

Standart tarif Fikrlash darajasi o‘rtacha bo‘lganda

Fikrlash darajasi · xhigh

Standart tarif Fikrlash darajasi xhigh bo‘lganda

#### Ailoot tariflari

#### Sozlamalar bo‘yicha narxlar

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

| Sozlama | Tariflar jadvali | Kontekst tokenlari soni bundan ko‘p | Kontekst tokenlari soni bundan oshmaydi, chegara kiradi | To‘lov |
| --- | --- | --- | --- | --- |
| SozlamaTokenlar uchun bazaviy tariflar | Tariflar jadvaliAsosiy tarif | Kontekst tokenlari soni bundan ko‘p— | Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘q | To‘lov Kirish · Kirish tokenlari **$0.02** / 1K token Chiqish · Chiqish tokenlari **$0.1** / 1K token Kirish · Keshdan o‘qish **$0.002** / 1K token Kirish · Keshga yozish **$0.025** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaSo‘rov uzunligi bo‘yicha 1-daraja | Tariflar jadvali— | Kontekst tokenlari soni bundan ko‘p0 | Kontekst tokenlari soni bundan oshmaydi, chegara kiradi272 000 | To‘lov Kirish · Kirish tokenlari **$0.02** / 1K token Chiqish · Chiqish tokenlari **$0.1** / 1K token Kirish · Keshdan o‘qish **$0.002** / 1K token Kirish · Keshga yozish **$0.025** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaSo‘rov uzunligi bo‘yicha 2-daraja | Tariflar jadvali— | Kontekst tokenlari soni bundan ko‘p272 000 | Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘q | To‘lov Kirish · Kirish tokenlari **$0.04** / 1K token Chiqish · Chiqish tokenlari **$0.15** / 1K token Kirish · Keshdan o‘qish **$0.004** / 1K token Kirish · Keshga yozish **$0.05** / 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 →](https://ailoot.ai/docs/uz/billing/reserve/)

### So‘rov namunalari

#### Ailoot Ultra · OpenAI Responses

To‘liq minimal JSON so‘rov tanasicurl · O‘zingizning UTF-8 hujjatingizdan foydalaningPython · Natijani to‘liq saqlang

```json
{
  "model": "gpt-6-astra",
  "input": [
    {
      "content": "Hello, how are you?",
      "role": "user",
      "type": "message"
    }
  ]
}
```

```bash
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': 'gpt-6-astra', 'input': [{'content': 'Hello, how are you?', 'role': 'user', 'type': 'message'}]}
payload['input'][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/responses \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import 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
```

```python
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': 'gpt-6-astra', 'input': [{'content': 'Hello, how are you?', 'role': 'user', 'type': 'message'}]}
payload['input'][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 = {'Authorization': 'Bearer PLACEHOLDER_KEY', 'Content-Type': 'application/json'}
headers['Authorization'] = 'Bearer ' + api_key
request = Request('https://api.ailoot.ai/v1/responses', 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 · OpenAI Responses

json or SSE

##### Barcha tayyor natijalarni saqlash

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

Har bir chiqish elementi va kontent qismini, funksiyaning haqiqiy call\_id qiymatini, shifrlangan fikrlash ma’lumotlari va sarfni saqlang. Oqimli uzatishda hodisa va elementning to‘liq identifikatsiyasini 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

| Maydon | Tur |
| --- | --- |
| Maydon`id` | Turstring |
| Maydon`status` | Turstring |
| Maydon`output[]` | Turmessage\|reasoning\|function\_call\|other item |
| Maydon`output[].content[]` | Turcontent part |
| 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

<strong>Ailoot</strong> [`gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt-6-astra&fmt=responses), [`gpt`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt&fmt=responses), [`gpt-latest`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt-latest&fmt=responses)
**Ailoot Ultra** [`gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=gpt-6-astra&fmt=responses), [`openai/gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=openai%2Fgpt-6-astra&fmt=responses), [`~openai/gpt-astra-latest`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=~openai%2Fgpt-astra-latest&fmt=responses)

#### Usul yo‘llari taxalluslari

`/chat/completions`

#### Chaqirish uchun tegishli ID lar

[`openai/gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=openai%2Fgpt-6-astra&fmt=responses), [`gpt`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt&fmt=responses), [`gpt-latest`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt-latest&fmt=responses), [`~openai/gpt-astra-latest`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=~openai%2Fgpt-astra-latest&fmt=responses), [`gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt-6-astra&fmt=responses), [`gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=gpt-6-astra&fmt=responses)

**Ailoot Ultra · OpenAI Chat** `POST /v1/chat/completions` `openai/gpt-6-astra`

[`openai/gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=openai%2Fgpt-6-astra&fmt=chat)

OpenAI /`openai/gpt-6-astra`

Model ID

- `gpt-6-astra`
- `openai/gpt-6-astra`
- `~openai/gpt-astra-latest`

### Boshlash

GPT-6 Astra murakkab mulohaza, dasturlash, tadqiqotlar va hujjat tayyorlash uchun mo‘ljallangan. Ko‘p bosqichli vazifalarda matn, tasvirlar va vositalar bilan ishlaydi.

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

| Maydon | Tur | Talab | Qiymatlar va cheklovlar | Standart |
| --- | --- | --- | --- | --- |
| Maydon`model` | Tur`string` | TalabMajburiy | Qiymatlar va cheklovlar openai/gpt-6-astra | Standart— |
| Maydon`messages` | Tur`message[]` | TalabMajburiy | Qiymatlar va cheklovlar Elementlarning eng kam soni: 1 | Standart— |
| Maydon`messages[].role` | Tur`string` | TalabMajburiy | Qiymatlar 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— |
| Maydon`messages[].content` | Tur`string\|content_part[]\|null` | TalabIxtiyoriy | Qiymatlar va cheklovlar | Standart— |
| Maydon`messages[].tool_calls` | Tur`tool_call[]` | TalabIxtiyoriy | Qiymatlar va cheklovlar | Standart— |
| Maydon`messages[].tool_call_id` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar Quyidagi holatda qo‘llanadi: role=tool; haqiqatan qaytarilgan IDdan foydalaning | Standart— |
| Maydon`messages[].name` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar | Standart— |
| Maydon`messages[].reasoning_content` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar Quyidagi holatda qo‘llanadi: Ushbu model foydalanganda, haqiqatan qaytarilgan fikrlash ma’lumotlarini keyingi so‘rovda qayta yuboring | Standart— |
| Maydon`messages[].reasoning_details` | Tur`object\|array` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`max_tokens` | Tur`integer` | TalabIxtiyoriy | Qiymatlar va cheklovlar Eng kam: 1 Modelga bogʻliq | Standart— |
| Maydon`max_completion_tokens` | Tur`integer` | TalabIxtiyoriy | Qiymatlar va cheklovlar Eng kam: 1 Modelga bogʻliq | Standart— |
| Maydon`stream` | Tur`boolean` | TalabIxtiyoriy | Qiymatlar va cheklovlar | Standartfalse |
| Maydon`stream_options.include_usage` | Tur`boolean` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| 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` | Tur`string\|string[]` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`tools` | Tur`function_tool[]` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`tools[].type` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar function Modelga bogʻliq | Standart— |
| Maydon`tools[].function.name` | Tur`string` | TalabMajburiy | Qiymatlar va cheklovlar Quyidagi holatda qo‘llanadi: Funksiya vositasi taqdim etilgan | Standart— |
| Maydon`tools[].function.description` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar | Standart— |
| Maydon`tools[].function.parameters` | Tur`JSON_schema` | TalabIxtiyoriy | Qiymatlar va cheklovlar | Standart— |
| Maydon`tool_choice` | Tur`string\|object` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`parallel_tool_calls` | Tur`boolean` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`response_format` | Tur`object` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`reasoning_effort` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`reasoning` | Tur`object` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`service_tier` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`instructions` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar Moslik maydoni | Standart— |
| Maydon`functions` | Tur`function[]` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`function_call` | Tur`string\|object` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`prompt_cache_options` | Tur`object` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`modalities` | Tur`string[]` | TalabIxtiyoriy | Qiymatlar va cheklovlar text | Standart— |
| Maydon`provider` | Tur`object` | TalabIxtiyoriy | Qiymatlar va cheklovlar Shartlar: Ushbu Ultra matn marshrutida provider.options rad etiladi | Standart— |
| Maydon`cache_control.ttl` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar Shartlar: Haqiqiy prompt-kesh joylarida 1h rad etiladi | Standart— |

Kirish materiallari birikmalari

**Matn** · UTF8 matni

`messages[].content`

Usul parametrlari va hayot sikli

| Parametr | Parametr talablari |
| --- | --- |
| Parametr`content_type` | Parametr talablariapplication/json |
| Parametr`required` | Parametr talablarimodel, messages |
| Parametr`material_types` | Parametr talablaritext |
| Parametr`messages` | Parametr talablarirole/content tuzilishidagi xabarlar massivi |
| Parametr`file_material` | Parametr talablariHaqiqiy UTF-8 hujjati aynan matn sifatida kiritiladi; fayl IDsi faraz qilinmaydi |
| Parametr`optional_controls` | Parametr talablaristream, temperature, top\_p, stop, max\_tokens, max\_completion\_tokens, reasoning, response\_format, tools, tool\_choice |
| Parametr`control_scope` | Parametr talablariModelga xos; foydalanuvchi funksiya vositalari hostingdagi vositalardan farq qiladi |
| Parametr`output_modalities` | Parametr talablaritext |
| Parametr`hosted_operations` | Parametr talablarifalse |
| Parametr`multimodal_input_binding` | Parametr 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

Fikrlash darajasi · yuqori

Standart tarif Fikrlash darajasi yuqori bo‘lganda

Fikrlash darajasi · past

Standart tarif Fikrlash darajasi past bo‘lganda

Fikrlash darajasi · maksimal

Standart tarif Fikrlash darajasi maksimal bo‘lganda

Fikrlash darajasi · o‘rtacha

Standart tarif Fikrlash darajasi o‘rtacha bo‘lganda

Fikrlash darajasi · xhigh

Standart tarif Fikrlash darajasi xhigh bo‘lganda

#### Ailoot tariflari

#### Sozlamalar bo‘yicha narxlar

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

| Sozlama | Tariflar jadvali | Kontekst tokenlari soni bundan ko‘p | Kontekst tokenlari soni bundan oshmaydi, chegara kiradi | To‘lov |
| --- | --- | --- | --- | --- |
| SozlamaTokenlar uchun bazaviy tariflar | Tariflar jadvaliAsosiy tarif | Kontekst tokenlari soni bundan ko‘p— | Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘q | To‘lov Kirish · Kirish tokenlari **$0.02** / 1K token Chiqish · Chiqish tokenlari **$0.1** / 1K token Kirish · Keshdan o‘qish **$0.002** / 1K token Kirish · Keshga yozish **$0.025** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaSo‘rov uzunligi bo‘yicha 1-daraja | Tariflar jadvali— | Kontekst tokenlari soni bundan ko‘p0 | Kontekst tokenlari soni bundan oshmaydi, chegara kiradi272 000 | To‘lov Kirish · Kirish tokenlari **$0.02** / 1K token Chiqish · Chiqish tokenlari **$0.1** / 1K token Kirish · Keshdan o‘qish **$0.002** / 1K token Kirish · Keshga yozish **$0.025** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaSo‘rov uzunligi bo‘yicha 2-daraja | Tariflar jadvali— | Kontekst tokenlari soni bundan ko‘p272 000 | Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘q | To‘lov Kirish · Kirish tokenlari **$0.04** / 1K token Chiqish · Chiqish tokenlari **$0.15** / 1K token Kirish · Keshdan o‘qish **$0.004** / 1K token Kirish · Keshga yozish **$0.05** / 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 →](https://ailoot.ai/docs/uz/billing/reserve/)

### So‘rov namunalari

#### Ailoot Ultra · OpenAI Chat

curlPython SDKPython oqimi

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "openai/gpt-6-astra", "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
```

```python
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='openai/gpt-6-astra',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"))
```

```python
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='openai/gpt-6-astra',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

| Maydon | Tur |
| --- | --- |
| Maydon`choices[].index` | Turinteger |
| Maydon`choices[].message.content` | Turstring\|null |
| Maydon`choices[].message.tool_calls` | Turtool\_call\[\] |
| Maydon`choices[].message.reasoning_content` | Turstring |
| Maydon`choices[].message.reasoning_details` | Turobject\|array |
| Maydon`choices[].finish_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

<strong>Ailoot</strong> [`gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt-6-astra&fmt=chat), [`gpt`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt&fmt=chat), [`gpt-latest`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt-latest&fmt=chat)
**Ailoot Ultra** [`gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=gpt-6-astra&fmt=chat), [`openai/gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=openai%2Fgpt-6-astra&fmt=chat), [`~openai/gpt-astra-latest`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=~openai%2Fgpt-astra-latest&fmt=chat)

#### Usul yo‘llari taxalluslari

`/chat/completions`

#### Chaqirish uchun tegishli ID lar

[`openai/gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=openai%2Fgpt-6-astra&fmt=chat), [`gpt`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt&fmt=chat), [`gpt-latest`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt-latest&fmt=chat), [`~openai/gpt-astra-latest`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=~openai%2Fgpt-astra-latest&fmt=chat), [`gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt-6-astra&fmt=chat), [`gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=gpt-6-astra&fmt=chat)

**Ailoot Ultra · Anthropic Messages** `POST /v1/messages` `openai/gpt-6-astra`

[`openai/gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=openai%2Fgpt-6-astra&fmt=messages)

OpenAI /`openai/gpt-6-astra`

Model ID

- `gpt-6-astra`
- `openai/gpt-6-astra`
- `~openai/gpt-astra-latest`

### Boshlash

GPT-6 Astra murakkab mulohaza, dasturlash, tadqiqotlar va hujjat tayyorlash uchun mo‘ljallangan. Ko‘p bosqichli vazifalarda matn, tasvirlar va vositalar bilan ishlaydi.

Qabul qilinadigan kirish ma’lumotlari

Matn

Natijalar

Matn

### Ailoot da mavjud · kirish ma’lumotlari va usullar

**Ailoot Ultra · Anthropic Messages** `POST /v1/messages`

Kirish

`text`

Chiqish

`text`

Chiqish formati

json yoki SSE

| Maydon | Tur | Talab | Qiymatlar va cheklovlar | Standart |
| --- | --- | --- | --- | --- |
| Maydon`model` | Tur`string` | TalabMajburiy | Qiymatlar va cheklovlar openai/gpt-6-astra | 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 |
| 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 hujjatini o‘qing va uning matnini ko‘rsatilgan kirish yoki xabar kontenti satriga joylashtiring. |

Hayot sikli: `exact retained published method`

Aniq model ID sini va majburiy maydonlarni yuboring.

Qaytarilgan har bir element va uning dastlabki identifikatorlarini saqlang.

### 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

Fikrlash darajasi · yuqori

Standart tarif Fikrlash darajasi yuqori bo‘lganda

Fikrlash darajasi · past

Standart tarif Fikrlash darajasi past bo‘lganda

Fikrlash darajasi · maksimal

Standart tarif Fikrlash darajasi maksimal bo‘lganda

Fikrlash darajasi · o‘rtacha

Standart tarif Fikrlash darajasi o‘rtacha bo‘lganda

Fikrlash darajasi · xhigh

Standart tarif Fikrlash darajasi xhigh bo‘lganda

#### Ailoot tariflari

#### Sozlamalar bo‘yicha narxlar

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

| Sozlama | Tariflar jadvali | Kontekst tokenlari soni bundan ko‘p | Kontekst tokenlari soni bundan oshmaydi, chegara kiradi | To‘lov |
| --- | --- | --- | --- | --- |
| SozlamaTokenlar uchun bazaviy tariflar | Tariflar jadvaliAsosiy tarif | Kontekst tokenlari soni bundan ko‘p— | Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘q | To‘lov Kirish · Kirish tokenlari **$0.02** / 1K token Chiqish · Chiqish tokenlari **$0.1** / 1K token Kirish · Keshdan o‘qish **$0.002** / 1K token Kirish · Keshga yozish **$0.025** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaSo‘rov uzunligi bo‘yicha 1-daraja | Tariflar jadvali— | Kontekst tokenlari soni bundan ko‘p0 | Kontekst tokenlari soni bundan oshmaydi, chegara kiradi272 000 | To‘lov Kirish · Kirish tokenlari **$0.02** / 1K token Chiqish · Chiqish tokenlari **$0.1** / 1K token Kirish · Keshdan o‘qish **$0.002** / 1K token Kirish · Keshga yozish **$0.025** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaSo‘rov uzunligi bo‘yicha 2-daraja | Tariflar jadvali— | Kontekst tokenlari soni bundan ko‘p272 000 | Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘q | To‘lov Kirish · Kirish tokenlari **$0.04** / 1K token Chiqish · Chiqish tokenlari **$0.15** / 1K token Kirish · Keshdan o‘qish **$0.004** / 1K token Kirish · Keshga yozish **$0.05** / 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 →](https://ailoot.ai/docs/uz/billing/reserve/)

### So‘rov namunalari

#### Ailoot Ultra · Anthropic Messages

To‘liq minimal JSON so‘rov tanasicurl · O‘zingizning UTF-8 hujjatingizdan foydalaningPython · Natijani to‘liq saqlang

```json
{
  "model": "openai/gpt-6-astra",
  "max_tokens": 4096,
  "messages": [
    {
      "role": "user",
      "content": "Summarize the incident report."
    }
  ]
}
```

```bash
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': 'openai/gpt-6-astra', 'max_tokens': 4096, '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
```

```python
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': 'openai/gpt-6-astra', 'max_tokens': 4096, '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

| 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

<strong>Ailoot</strong> [`gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt-6-astra&fmt=messages), [`gpt`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt&fmt=messages), [`gpt-latest`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt-latest&fmt=messages)
**Ailoot Ultra** [`gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=gpt-6-astra&fmt=messages), [`openai/gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=openai%2Fgpt-6-astra&fmt=messages), [`~openai/gpt-astra-latest`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=~openai%2Fgpt-astra-latest&fmt=messages)

#### Usul yo‘llari taxalluslari

`/chat/completions`

#### Chaqirish uchun tegishli ID lar

[`openai/gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=openai%2Fgpt-6-astra&fmt=messages), [`gpt`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt&fmt=messages), [`gpt-latest`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt-latest&fmt=messages), [`~openai/gpt-astra-latest`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=~openai%2Fgpt-astra-latest&fmt=messages), [`gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt-6-astra&fmt=messages), [`gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=gpt-6-astra&fmt=messages)

**Ailoot Ultra · OpenAI Responses** `POST /v1/responses` `openai/gpt-6-astra`

[`openai/gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=openai%2Fgpt-6-astra&fmt=responses)

OpenAI /`openai/gpt-6-astra`

Model ID

- `gpt-6-astra`
- `openai/gpt-6-astra`
- `~openai/gpt-astra-latest`

### Boshlash

GPT-6 Astra murakkab mulohaza, dasturlash, tadqiqotlar va hujjat tayyorlash uchun mo‘ljallangan. Ko‘p bosqichli vazifalarda matn, tasvirlar va vositalar bilan ishlaydi.

Qabul qilinadigan kirish ma’lumotlari

Matn

Natijalar

Matn

### Ailoot da mavjud · kirish ma’lumotlari va usullar

**Ailoot Ultra · OpenAI Responses** `POST /v1/responses`

Kirish

`text`

Chiqish

`text`

Chiqish formati

json yoki SSE

| Maydon | Tur | Talab | Qiymatlar va cheklovlar | Standart |
| --- | --- | --- | --- | --- |
| Maydon`model` | Tur`string` | TalabMajburiy | Qiymatlar va cheklovlar openai/gpt-6-astra | Standart— |
| Maydon`input` | Tur`string\|input_item[]` | TalabMajburiy | Qiymatlar va cheklovlar | Standart— |
| Maydon`instructions` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar | Standart— |
| Maydon`input[].type` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar message, reasoning, function\_call, function\_call\_output | Standart— |
| Maydon`input[].content` | Tur`string\|content_part[]` | TalabIxtiyoriy | Qiymatlar va cheklovlar | Standart— |
| Maydon`input[].call_id` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar Quyidagi holatda qo‘llanadi: function\_call\_output; haqiqatan qaytarilgan call\_id qiymatini saqlang | Standart— |
| Maydon`input[].output` | Tur`string\|content_part[]` | TalabIxtiyoriy | Qiymatlar va cheklovlar Quyidagi holatda qo‘llanadi: function\_call\_output | Standart— |
| Maydon`max_output_tokens` | Tur`integer` | TalabIxtiyoriy | Qiymatlar va cheklovlar Eng kam: 1 Modelga bogʻliq | 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`tools` | Tur`tool[]` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`tool_choice` | Tur`string\|object` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`parallel_tool_calls` | Tur`boolean` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`reasoning.effort` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`reasoning.summary` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`text.format` | Tur`object` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`text.verbosity` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`include` | Tur`string[]` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`store` | Tur`boolean` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`previous_response_id` | Tur`string` | TalabQo‘llab-quvvatlanmaydi | Qiymatlar va cheklovlar ID talabi: Faqat qo‘llab-quvvatlanadigan davom ettirishdan olingan haqiqiy javob IDsi Shartlar: Har bir so‘rov bilan haqiqiy suhbat tarixini qayta yuboring. | Standart— |
| Maydon`service_tier` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`prompt_cache_key` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`prompt_cache_options` | Tur`object` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |

Kirish materiallari birikmalari

**Matn** · UTF8 matni

`Kirish matni yoki input_text qismi`

**Matn + rasm**

`{type:input_image,image_url}`

Usul parametrlari va hayot sikli

| Parametr | Parametr talablari |
| --- | --- |
| Parametr`material_types` | Parametr talablaritext |
| Parametr`required` | Parametr talablarimodel, input |
| Parametr`optional_controls` | Parametr talablarinull |
| Parametr`content_type` | Parametr talablariapplication/json |
| Parametr`text_file_material` | Parametr talablariHaqiqiy UTF-8 hujjatini o‘qing va uning matnini ko‘rsatilgan kirish yoki xabar kontenti satriga joylashtiring. |

Hayot sikli: `exact retained published method`

Aniq model ID sini va majburiy maydonlarni yuboring.

Qaytarilgan har bir element va uning dastlabki identifikatorlarini saqlang.

### 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

Fikrlash darajasi · yuqori

Standart tarif Fikrlash darajasi yuqori bo‘lganda

Fikrlash darajasi · past

Standart tarif Fikrlash darajasi past bo‘lganda

Fikrlash darajasi · maksimal

Standart tarif Fikrlash darajasi maksimal bo‘lganda

Fikrlash darajasi · o‘rtacha

Standart tarif Fikrlash darajasi o‘rtacha bo‘lganda

Fikrlash darajasi · xhigh

Standart tarif Fikrlash darajasi xhigh bo‘lganda

#### Ailoot tariflari

#### Sozlamalar bo‘yicha narxlar

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

| Sozlama | Tariflar jadvali | Kontekst tokenlari soni bundan ko‘p | Kontekst tokenlari soni bundan oshmaydi, chegara kiradi | To‘lov |
| --- | --- | --- | --- | --- |
| SozlamaTokenlar uchun bazaviy tariflar | Tariflar jadvaliAsosiy tarif | Kontekst tokenlari soni bundan ko‘p— | Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘q | To‘lov Kirish · Kirish tokenlari **$0.02** / 1K token Chiqish · Chiqish tokenlari **$0.1** / 1K token Kirish · Keshdan o‘qish **$0.002** / 1K token Kirish · Keshga yozish **$0.025** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaSo‘rov uzunligi bo‘yicha 1-daraja | Tariflar jadvali— | Kontekst tokenlari soni bundan ko‘p0 | Kontekst tokenlari soni bundan oshmaydi, chegara kiradi272 000 | To‘lov Kirish · Kirish tokenlari **$0.02** / 1K token Chiqish · Chiqish tokenlari **$0.1** / 1K token Kirish · Keshdan o‘qish **$0.002** / 1K token Kirish · Keshga yozish **$0.025** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaSo‘rov uzunligi bo‘yicha 2-daraja | Tariflar jadvali— | Kontekst tokenlari soni bundan ko‘p272 000 | Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘q | To‘lov Kirish · Kirish tokenlari **$0.04** / 1K token Chiqish · Chiqish tokenlari **$0.15** / 1K token Kirish · Keshdan o‘qish **$0.004** / 1K token Kirish · Keshga yozish **$0.05** / 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 →](https://ailoot.ai/docs/uz/billing/reserve/)

### So‘rov namunalari

#### Ailoot Ultra · OpenAI Responses

To‘liq minimal JSON so‘rov tanasicurl · O‘zingizning UTF-8 hujjatingizdan foydalaningPython · Natijani to‘liq saqlang

```json
{
  "model": "openai/gpt-6-astra",
  "input": [
    {
      "content": "Hello, how are you?",
      "role": "user",
      "type": "message"
    }
  ]
}
```

```bash
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': 'openai/gpt-6-astra', 'input': [{'content': 'Hello, how are you?', 'role': 'user', 'type': 'message'}]}
payload['input'][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/responses \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import 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
```

```python
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': 'openai/gpt-6-astra', 'input': [{'content': 'Hello, how are you?', 'role': 'user', 'type': 'message'}]}
payload['input'][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 = {'Authorization': 'Bearer PLACEHOLDER_KEY', 'Content-Type': 'application/json'}
headers['Authorization'] = 'Bearer ' + api_key
request = Request('https://api.ailoot.ai/v1/responses', 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 · OpenAI Responses

json yoki SSE

##### Barcha tayyor natijalarni saqlash

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

Har bir chiqish elementi va kontent qismini, funksiyaning haqiqiy call\_id qiymatini, shifrlangan fikrlash ma’lumotlari va sarfni saqlang. Oqimli uzatishda hodisa va elementning to‘liq identifikatsiyasini 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

| Maydon | Tur |
| --- | --- |
| Maydon`id` | Turstring |
| Maydon`status` | Turstring |
| Maydon`output[]` | Turmessage\|reasoning\|function\_call\|other item |
| Maydon`output[].content[]` | Turcontent part |
| 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

<strong>Ailoot</strong> [`gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt-6-astra&fmt=responses), [`gpt`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt&fmt=responses), [`gpt-latest`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt-latest&fmt=responses)
**Ailoot Ultra** [`gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=gpt-6-astra&fmt=responses), [`openai/gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=openai%2Fgpt-6-astra&fmt=responses), [`~openai/gpt-astra-latest`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=~openai%2Fgpt-astra-latest&fmt=responses)

#### Usul yo‘llari taxalluslari

`/chat/completions`

#### Chaqirish uchun tegishli ID lar

[`openai/gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=openai%2Fgpt-6-astra&fmt=responses), [`gpt`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt&fmt=responses), [`gpt-latest`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt-latest&fmt=responses), [`~openai/gpt-astra-latest`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=~openai%2Fgpt-astra-latest&fmt=responses), [`gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt-6-astra&fmt=responses), [`gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=gpt-6-astra&fmt=responses)

**Ailoot Ultra · OpenAI Chat** `POST /v1/chat/completions` `~openai/gpt-astra-latest`

[`~openai/gpt-astra-latest`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=~openai%2Fgpt-astra-latest&fmt=chat)

OpenAI /`~openai/gpt-astra-latest`

Model ID

- `gpt-6-astra`
- `openai/gpt-6-astra`
- `~openai/gpt-astra-latest`

### Boshlash

GPT-6 Astra murakkab mulohaza, dasturlash, tadqiqotlar va hujjat tayyorlash uchun mo‘ljallangan. Ko‘p bosqichli vazifalarda matn, tasvirlar va vositalar bilan ishlaydi.

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

| Maydon | Tur | Talab | Qiymatlar va cheklovlar | Standart |
| --- | --- | --- | --- | --- |
| Maydon`model` | Tur`string` | TalabMajburiy | Qiymatlar va cheklovlar ~openai/gpt-astra-latest | Standart— |
| Maydon`messages` | Tur`message[]` | TalabMajburiy | Qiymatlar va cheklovlar Elementlarning eng kam soni: 1 | Standart— |
| Maydon`messages[].role` | Tur`string` | TalabMajburiy | Qiymatlar 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— |
| Maydon`messages[].content` | Tur`string\|content_part[]\|null` | TalabIxtiyoriy | Qiymatlar va cheklovlar | Standart— |
| Maydon`messages[].tool_calls` | Tur`tool_call[]` | TalabIxtiyoriy | Qiymatlar va cheklovlar | Standart— |
| Maydon`messages[].tool_call_id` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar Quyidagi holatda qo‘llanadi: role=tool; haqiqatan qaytarilgan IDdan foydalaning | Standart— |
| Maydon`messages[].name` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar | Standart— |
| Maydon`messages[].reasoning_content` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar Quyidagi holatda qo‘llanadi: Ushbu model foydalanganda, haqiqatan qaytarilgan fikrlash ma’lumotlarini keyingi so‘rovda qayta yuboring | Standart— |
| Maydon`messages[].reasoning_details` | Tur`object\|array` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`max_tokens` | Tur`integer` | TalabIxtiyoriy | Qiymatlar va cheklovlar Eng kam: 1 Modelga bogʻliq | Standart— |
| Maydon`max_completion_tokens` | Tur`integer` | TalabIxtiyoriy | Qiymatlar va cheklovlar Eng kam: 1 Modelga bogʻliq | Standart— |
| Maydon`stream` | Tur`boolean` | TalabIxtiyoriy | Qiymatlar va cheklovlar | Standartfalse |
| Maydon`stream_options.include_usage` | Tur`boolean` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| 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` | Tur`string\|string[]` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`tools` | Tur`function_tool[]` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`tools[].type` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar function Modelga bogʻliq | Standart— |
| Maydon`tools[].function.name` | Tur`string` | TalabMajburiy | Qiymatlar va cheklovlar Quyidagi holatda qo‘llanadi: Funksiya vositasi taqdim etilgan | Standart— |
| Maydon`tools[].function.description` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar | Standart— |
| Maydon`tools[].function.parameters` | Tur`JSON_schema` | TalabIxtiyoriy | Qiymatlar va cheklovlar | Standart— |
| Maydon`tool_choice` | Tur`string\|object` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`parallel_tool_calls` | Tur`boolean` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`response_format` | Tur`object` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`reasoning_effort` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`reasoning` | Tur`object` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`service_tier` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`instructions` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar Moslik maydoni | Standart— |
| Maydon`functions` | Tur`function[]` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`function_call` | Tur`string\|object` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`prompt_cache_options` | Tur`object` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`modalities` | Tur`string[]` | TalabIxtiyoriy | Qiymatlar va cheklovlar text | Standart— |
| Maydon`provider` | Tur`object` | TalabIxtiyoriy | Qiymatlar va cheklovlar Shartlar: Ushbu Ultra matn marshrutida provider.options rad etiladi | Standart— |
| Maydon`cache_control.ttl` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar Shartlar: Haqiqiy prompt-kesh joylarida 1h rad etiladi | Standart— |

Kirish materiallari birikmalari

**Matn** · UTF8 matni

`messages[].content`

Usul parametrlari va hayot sikli

| Parametr | Parametr talablari |
| --- | --- |
| Parametr`content_type` | Parametr talablariapplication/json |
| Parametr`required` | Parametr talablarimodel, messages |
| Parametr`material_types` | Parametr talablaritext |
| Parametr`messages` | Parametr talablarirole/content tuzilishidagi xabarlar massivi |
| Parametr`file_material` | Parametr talablariHaqiqiy UTF-8 hujjati aynan matn sifatida kiritiladi; fayl IDsi faraz qilinmaydi |
| Parametr`optional_controls` | Parametr talablaristream, temperature, top\_p, stop, max\_tokens, max\_completion\_tokens, reasoning, response\_format, tools, tool\_choice |
| Parametr`control_scope` | Parametr talablariModelga xos; foydalanuvchi funksiya vositalari hostingdagi vositalardan farq qiladi |
| Parametr`output_modalities` | Parametr talablaritext |
| Parametr`hosted_operations` | Parametr talablarifalse |
| Parametr`multimodal_input_binding` | Parametr 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

Fikrlash darajasi · yuqori

Standart tarif Fikrlash darajasi yuqori bo‘lganda

Fikrlash darajasi · past

Standart tarif Fikrlash darajasi past bo‘lganda

Fikrlash darajasi · maksimal

Standart tarif Fikrlash darajasi maksimal bo‘lganda

Fikrlash darajasi · o‘rtacha

Standart tarif Fikrlash darajasi o‘rtacha bo‘lganda

Fikrlash darajasi · xhigh

Standart tarif Fikrlash darajasi xhigh bo‘lganda

#### Ailoot tariflari

#### Sozlamalar bo‘yicha narxlar

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

| Sozlama | Tariflar jadvali | Kontekst tokenlari soni bundan ko‘p | Kontekst tokenlari soni bundan oshmaydi, chegara kiradi | To‘lov |
| --- | --- | --- | --- | --- |
| SozlamaTokenlar uchun bazaviy tariflar | Tariflar jadvaliAsosiy tarif | Kontekst tokenlari soni bundan ko‘p— | Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘q | To‘lov Kirish · Kirish tokenlari **$0.02** / 1K token Chiqish · Chiqish tokenlari **$0.1** / 1K token Kirish · Keshdan o‘qish **$0.002** / 1K token Kirish · Keshga yozish **$0.025** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaSo‘rov uzunligi bo‘yicha 1-daraja | Tariflar jadvali— | Kontekst tokenlari soni bundan ko‘p0 | Kontekst tokenlari soni bundan oshmaydi, chegara kiradi272 000 | To‘lov Kirish · Kirish tokenlari **$0.02** / 1K token Chiqish · Chiqish tokenlari **$0.1** / 1K token Kirish · Keshdan o‘qish **$0.002** / 1K token Kirish · Keshga yozish **$0.025** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaSo‘rov uzunligi bo‘yicha 2-daraja | Tariflar jadvali— | Kontekst tokenlari soni bundan ko‘p272 000 | Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘q | To‘lov Kirish · Kirish tokenlari **$0.04** / 1K token Chiqish · Chiqish tokenlari **$0.15** / 1K token Kirish · Keshdan o‘qish **$0.004** / 1K token Kirish · Keshga yozish **$0.05** / 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 →](https://ailoot.ai/docs/uz/billing/reserve/)

### So‘rov namunalari

#### Ailoot Ultra · OpenAI Chat

curlPython SDKPython oqimi

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

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

```python
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='~openai/gpt-astra-latest',messages=[{"role":"user","content":"Explain observations and hypotheses in three sentences."}])
import base64, json
from pathlib import Path

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

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

```python
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='~openai/gpt-astra-latest',messages=[{"role":"user","content":"Explain observations and hypotheses in three sentences."}]) as stream:
    with Path("stream-events.jsonl").open("w",encoding="utf-8") as log:
        for event in stream:
            payload=event.to_dict(mode="json")
            log.write(json.dumps(payload,ensure_ascii=False)+"\n"); log.flush()
            print(json.dumps(payload,ensure_ascii=False))
    final=stream.get_final_completion()
    save_result(final.to_dict(mode="json"),"stream-result")
```

### 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

| Maydon | Tur |
| --- | --- |
| Maydon`choices[].index` | Turinteger |
| Maydon`choices[].message.content` | Turstring\|null |
| Maydon`choices[].message.tool_calls` | Turtool\_call\[\] |
| Maydon`choices[].message.reasoning_content` | Turstring |
| Maydon`choices[].message.reasoning_details` | Turobject\|array |
| Maydon`choices[].finish_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

<strong>Ailoot</strong> [`gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt-6-astra&fmt=chat), [`gpt`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt&fmt=chat), [`gpt-latest`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt-latest&fmt=chat)
**Ailoot Ultra** [`gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=gpt-6-astra&fmt=chat), [`openai/gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=openai%2Fgpt-6-astra&fmt=chat), [`~openai/gpt-astra-latest`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=~openai%2Fgpt-astra-latest&fmt=chat)

#### Usul yo‘llari taxalluslari

`/chat/completions`

#### Chaqirish uchun tegishli ID lar

[`openai/gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=openai%2Fgpt-6-astra&fmt=chat), [`gpt`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt&fmt=chat), [`gpt-latest`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt-latest&fmt=chat), [`~openai/gpt-astra-latest`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=~openai%2Fgpt-astra-latest&fmt=chat), [`gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt-6-astra&fmt=chat), [`gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=gpt-6-astra&fmt=chat)

**Ailoot Ultra · Anthropic Messages** `POST /v1/messages` `~openai/gpt-astra-latest`

[`~openai/gpt-astra-latest`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=~openai%2Fgpt-astra-latest&fmt=messages)

OpenAI /`~openai/gpt-astra-latest`

Model ID

- `gpt-6-astra`
- `openai/gpt-6-astra`
- `~openai/gpt-astra-latest`

### Boshlash

GPT-6 Astra murakkab mulohaza, dasturlash, tadqiqotlar va hujjat tayyorlash uchun mo‘ljallangan. Ko‘p bosqichli vazifalarda matn, tasvirlar va vositalar bilan ishlaydi.

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

| Maydon | Tur | Talab | Qiymatlar va cheklovlar | Standart |
| --- | --- | --- | --- | --- |
| Maydon`model` | Tur`string` | TalabMajburiy | Qiymatlar va cheklovlar ~openai/gpt-astra-latest | Standart— |
| Maydon`messages` | Tur`message[]` | TalabMajburiy | Qiymatlar va cheklovlar | Standart— |
| Maydon`messages[].role` | Tur`string` | TalabMajburiy | Qiymatlar va cheklovlar user, assistant | Standart— |
| Maydon`messages[].content` | Tur`string` | TalabMajburiy | Qiymatlar va cheklovlar | Standart— |
| Maydon`max_tokens` | Tur`integer` | TalabMajburiy | Qiymatlar va cheklovlar | Standart— |
| Maydon`stream` | Tur`boolean` | TalabIxtiyoriy | Qiymatlar va cheklovlar | Standartfalse |

Kirish materiallari birikmalari

**Matn** · UTF-8 matni

`messages[].content satri`

Usul parametrlari va hayot sikli

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

Fikrlash darajasi · yuqori

Standart tarif Fikrlash darajasi yuqori bo‘lganda

Fikrlash darajasi · past

Standart tarif Fikrlash darajasi past bo‘lganda

Fikrlash darajasi · maksimal

Standart tarif Fikrlash darajasi maksimal bo‘lganda

Fikrlash darajasi · o‘rtacha

Standart tarif Fikrlash darajasi o‘rtacha bo‘lganda

Fikrlash darajasi · xhigh

Standart tarif Fikrlash darajasi xhigh bo‘lganda

#### Ailoot tariflari

#### Sozlamalar bo‘yicha narxlar

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

| Sozlama | Tariflar jadvali | Kontekst tokenlari soni bundan ko‘p | Kontekst tokenlari soni bundan oshmaydi, chegara kiradi | To‘lov |
| --- | --- | --- | --- | --- |
| SozlamaTokenlar uchun bazaviy tariflar | Tariflar jadvaliAsosiy tarif | Kontekst tokenlari soni bundan ko‘p— | Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘q | To‘lov Kirish · Kirish tokenlari **$0.02** / 1K token Chiqish · Chiqish tokenlari **$0.1** / 1K token Kirish · Keshdan o‘qish **$0.002** / 1K token Kirish · Keshga yozish **$0.025** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaSo‘rov uzunligi bo‘yicha 1-daraja | Tariflar jadvali— | Kontekst tokenlari soni bundan ko‘p0 | Kontekst tokenlari soni bundan oshmaydi, chegara kiradi272 000 | To‘lov Kirish · Kirish tokenlari **$0.02** / 1K token Chiqish · Chiqish tokenlari **$0.1** / 1K token Kirish · Keshdan o‘qish **$0.002** / 1K token Kirish · Keshga yozish **$0.025** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaSo‘rov uzunligi bo‘yicha 2-daraja | Tariflar jadvali— | Kontekst tokenlari soni bundan ko‘p272 000 | Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘q | To‘lov Kirish · Kirish tokenlari **$0.04** / 1K token Chiqish · Chiqish tokenlari **$0.15** / 1K token Kirish · Keshdan o‘qish **$0.004** / 1K token Kirish · Keshga yozish **$0.05** / 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 →](https://ailoot.ai/docs/uz/billing/reserve/)

### So‘rov namunalari

#### Ailoot Ultra · Anthropic Messages

To‘liq minimal JSON so‘rov tanasicurl · O‘zingizning UTF-8 hujjatingizdan foydalaningPython · Natijani to‘liq saqlang

```json
{
  "model": "~openai/gpt-astra-latest",
  "max_tokens": 128,
  "messages": [
    {
      "role": "user",
      "content": "Summarize the incident report."
    }
  ],
  "stream": false
}
```

```bash
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': '~openai/gpt-astra-latest', 'max_tokens': 128, 'messages': [{'role': 'user', 'content': 'Summarize the incident report.'}]}
payload['messages'][0]['content'] = 'Summarize this material and quote supporting source passages.\n\n' + text
Path('request.json').write_text(json.dumps(payload, ensure_ascii=False), encoding='utf-8')
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/messages \
  -H "x-api-key: $AILOOT_API_KEY" -H 'anthropic-version: 2023-06-01' -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path

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

```python
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': '~openai/gpt-astra-latest', 'max_tokens': 128, 'messages': [{'role': 'user', 'content': 'Summarize the incident report.'}]}
payload['messages'][0]['content'] = 'Summarize this material and quote supporting source passages.\n\n' + text
from urllib.request import Request, urlopen
from urllib.error import HTTPError

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

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

### 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

| 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

<strong>Ailoot</strong> [`gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt-6-astra&fmt=messages), [`gpt`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt&fmt=messages), [`gpt-latest`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt-latest&fmt=messages)
**Ailoot Ultra** [`gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=gpt-6-astra&fmt=messages), [`openai/gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=openai%2Fgpt-6-astra&fmt=messages), [`~openai/gpt-astra-latest`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=~openai%2Fgpt-astra-latest&fmt=messages)

#### Usul yo‘llari taxalluslari

`/chat/completions`

#### Chaqirish uchun tegishli ID lar

[`openai/gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=openai%2Fgpt-6-astra&fmt=messages), [`gpt`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt&fmt=messages), [`gpt-latest`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt-latest&fmt=messages), [`~openai/gpt-astra-latest`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=~openai%2Fgpt-astra-latest&fmt=messages), [`gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt-6-astra&fmt=messages), [`gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=gpt-6-astra&fmt=messages)

**Ailoot Ultra · OpenAI Responses** `POST /v1/responses` `~openai/gpt-astra-latest`

[`~openai/gpt-astra-latest`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=~openai%2Fgpt-astra-latest&fmt=responses)

OpenAI /`~openai/gpt-astra-latest`

Model ID

- `gpt-6-astra`
- `openai/gpt-6-astra`
- `~openai/gpt-astra-latest`

### Boshlash

GPT-6 Astra murakkab mulohaza, dasturlash, tadqiqotlar va hujjat tayyorlash uchun mo‘ljallangan. Ko‘p bosqichli vazifalarda matn, tasvirlar va vositalar bilan ishlaydi.

Qabul qilinadigan kirish ma’lumotlari

Matn

Natijalar

Matn

### Ailoot da mavjud · kirish ma’lumotlari va usullar

**Ailoot Ultra · OpenAI Responses** `POST /v1/responses`

Kirish

`text`

Chiqish

`text`

Chiqish formati

json or SSE

| Maydon | Tur | Talab | Qiymatlar va cheklovlar | Standart |
| --- | --- | --- | --- | --- |
| Maydon`model` | Tur`string` | TalabMajburiy | Qiymatlar va cheklovlar ~openai/gpt-astra-latest | Standart— |
| Maydon`input` | Tur`string\|input_item[]` | TalabMajburiy | Qiymatlar va cheklovlar | Standart— |
| Maydon`instructions` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar | Standart— |
| Maydon`input[].type` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar message, reasoning, function\_call, function\_call\_output | Standart— |
| Maydon`input[].content` | Tur`string\|content_part[]` | TalabIxtiyoriy | Qiymatlar va cheklovlar | Standart— |
| Maydon`input[].call_id` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar Quyidagi holatda qo‘llanadi: function\_call\_output; haqiqatan qaytarilgan call\_id qiymatini saqlang | Standart— |
| Maydon`input[].output` | Tur`string\|content_part[]` | TalabIxtiyoriy | Qiymatlar va cheklovlar Quyidagi holatda qo‘llanadi: function\_call\_output | Standart— |
| Maydon`max_output_tokens` | Tur`integer` | TalabIxtiyoriy | Qiymatlar va cheklovlar Eng kam: 1 Modelga bogʻliq | 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`tools` | Tur`tool[]` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`tool_choice` | Tur`string\|object` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`parallel_tool_calls` | Tur`boolean` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`reasoning.effort` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`reasoning.summary` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`text.format` | Tur`object` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`text.verbosity` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`include` | Tur`string[]` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`store` | Tur`boolean` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`previous_response_id` | Tur`string` | TalabQo‘llab-quvvatlanmaydi | Qiymatlar va cheklovlar ID talabi: Faqat qo‘llab-quvvatlanadigan davom ettirishdan olingan haqiqiy javob IDsi Shartlar: Har bir so‘rov bilan haqiqiy suhbat tarixini qayta yuboring. | Standart— |
| Maydon`service_tier` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`prompt_cache_key` | Tur`string` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
| Maydon`prompt_cache_options` | Tur`object` | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |

Kirish materiallari birikmalari

**Matn** · UTF8 matni

`input text or input_text part`

**Matn + rasm**

`{type:input_image,image_url}`

Usul parametrlari va hayot sikli

| Parametr | Parametr talablari |
| --- | --- |
| Parametr`material_types` | Parametr talablaritext |
| Parametr`required` | Parametr talablarimodel, input |
| Parametr`optional_controls` | Parametr talablarinull |
| Parametr`content_type` | Parametr talablariapplication/json |
| Parametr`text_file_material` | Parametr talablariHaqiqiy UTF-8 hujjatini o‘qing va uning matnini ko‘rsatilgan kirish yoki xabar kontenti satriga joylashtiring. |

Hayot sikli: `exact retained published method`

Aniq model ID sini va majburiy maydonlarni yuboring.

Qaytarilgan har bir element va uning dastlabki identifikatorlarini saqlang.

### 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

Fikrlash darajasi · yuqori

Standart tarif Fikrlash darajasi yuqori bo‘lganda

Fikrlash darajasi · past

Standart tarif Fikrlash darajasi past bo‘lganda

Fikrlash darajasi · maksimal

Standart tarif Fikrlash darajasi maksimal bo‘lganda

Fikrlash darajasi · o‘rtacha

Standart tarif Fikrlash darajasi o‘rtacha bo‘lganda

Fikrlash darajasi · xhigh

Standart tarif Fikrlash darajasi xhigh bo‘lganda

#### Ailoot tariflari

#### Sozlamalar bo‘yicha narxlar

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

| Sozlama | Tariflar jadvali | Kontekst tokenlari soni bundan ko‘p | Kontekst tokenlari soni bundan oshmaydi, chegara kiradi | To‘lov |
| --- | --- | --- | --- | --- |
| SozlamaTokenlar uchun bazaviy tariflar | Tariflar jadvaliAsosiy tarif | Kontekst tokenlari soni bundan ko‘p— | Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘q | To‘lov Kirish · Kirish tokenlari **$0.02** / 1K token Chiqish · Chiqish tokenlari **$0.1** / 1K token Kirish · Keshdan o‘qish **$0.002** / 1K token Kirish · Keshga yozish **$0.025** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaSo‘rov uzunligi bo‘yicha 1-daraja | Tariflar jadvali— | Kontekst tokenlari soni bundan ko‘p0 | Kontekst tokenlari soni bundan oshmaydi, chegara kiradi272 000 | To‘lov Kirish · Kirish tokenlari **$0.02** / 1K token Chiqish · Chiqish tokenlari **$0.1** / 1K token Kirish · Keshdan o‘qish **$0.002** / 1K token Kirish · Keshga yozish **$0.025** / 1K token Kirish · Keshga yozish, 1 soat **—** / 1K token |
| SozlamaSo‘rov uzunligi bo‘yicha 2-daraja | Tariflar jadvali— | Kontekst tokenlari soni bundan ko‘p272 000 | Kontekst tokenlari soni bundan oshmaydi, chegara kiradiYuqori chegara yo‘q | To‘lov Kirish · Kirish tokenlari **$0.04** / 1K token Chiqish · Chiqish tokenlari **$0.15** / 1K token Kirish · Keshdan o‘qish **$0.004** / 1K token Kirish · Keshga yozish **$0.05** / 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 →](https://ailoot.ai/docs/uz/billing/reserve/)

### So‘rov namunalari

#### Ailoot Ultra · OpenAI Responses

To‘liq minimal JSON so‘rov tanasicurl · O‘zingizning UTF-8 hujjatingizdan foydalaningPython · Natijani to‘liq saqlang

```json
{
  "model": "~openai/gpt-astra-latest",
  "input": [
    {
      "content": "Hello, how are you?",
      "role": "user",
      "type": "message"
    }
  ]
}
```

```bash
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': '~openai/gpt-astra-latest', 'input': [{'content': 'Hello, how are you?', 'role': 'user', 'type': 'message'}]}
payload['input'][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/responses \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import 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
```

```python
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': '~openai/gpt-astra-latest', 'input': [{'content': 'Hello, how are you?', 'role': 'user', 'type': 'message'}]}
payload['input'][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 = {'Authorization': 'Bearer PLACEHOLDER_KEY', 'Content-Type': 'application/json'}
headers['Authorization'] = 'Bearer ' + api_key
request = Request('https://api.ailoot.ai/v1/responses', 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 · OpenAI Responses

json or SSE

##### Barcha tayyor natijalarni saqlash

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

Har bir chiqish elementi va kontent qismini, funksiyaning haqiqiy call\_id qiymatini, shifrlangan fikrlash ma’lumotlari va sarfni saqlang. Oqimli uzatishda hodisa va elementning to‘liq identifikatsiyasini 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

| Maydon | Tur |
| --- | --- |
| Maydon`id` | Turstring |
| Maydon`status` | Turstring |
| Maydon`output[]` | Turmessage\|reasoning\|function\_call\|other item |
| Maydon`output[].content[]` | Turcontent part |
| 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

<strong>Ailoot</strong> [`gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt-6-astra&fmt=responses), [`gpt`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt&fmt=responses), [`gpt-latest`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt-latest&fmt=responses)
**Ailoot Ultra** [`gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=gpt-6-astra&fmt=responses), [`openai/gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=openai%2Fgpt-6-astra&fmt=responses), [`~openai/gpt-astra-latest`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=~openai%2Fgpt-astra-latest&fmt=responses)

#### Usul yo‘llari taxalluslari

`/chat/completions`

#### Chaqirish uchun tegishli ID lar

[`openai/gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=openai%2Fgpt-6-astra&fmt=responses), [`gpt`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt&fmt=responses), [`gpt-latest`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt-latest&fmt=responses), [`~openai/gpt-astra-latest`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=~openai%2Fgpt-astra-latest&fmt=responses), [`gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Core&caller=gpt-6-astra&fmt=responses), [`gpt-6-astra`](https://ailoot.ai/models/uz/#m=openai%2Fgpt-6-astra&route=Ultra&caller=gpt-6-astra&fmt=responses)

FAQ · OpenAI: GPT-6 Astra

Qanday kirish ma’lumotlari va natijalar mavjud?

`POST /v1/messages` · `gpt-6-astra`: `text`, `image` → `text` `POST /v1/responses` · `gpt-6-astra`: `text`, `image` → `text` `POST /v1/chat/completions` · `gpt-6-astra`: `text`, `image` → `text` `POST /v1/chat/completions` · `gpt-6-astra`: `text` → `text` `POST /v1/messages` · `gpt-6-astra`: `text` → `json`, `sse` `POST /v1/messages` · `gpt`: `text`, `image` → `text` `POST /v1/responses` · `gpt`: `text`, `image` → `text` `POST /v1/chat/completions` · `gpt`: `text`, `image` → `text` `POST /v1/messages` · `gpt-latest`: `text`, `image` → `text` `POST /v1/responses` · `gpt-latest`: `text`, `image` → `text` `POST /v1/chat/completions` · `gpt-latest`: `text`, `image` → `text` `POST /v1/responses` · `gpt-6-astra`: `text` → `text` `POST /v1/chat/completions` · `openai/gpt-6-astra`: `text` → `text` `POST /v1/messages` · `openai/gpt-6-astra`: `text` → `text` `POST /v1/responses` · `openai/gpt-6-astra`: `text` → `text` `POST /v1/chat/completions` · `~openai/gpt-astra-latest`: `text` → `text` `POST /v1/messages` · `~openai/gpt-astra-latest`: `text` → `json`, `sse` `POST /v1/responses` · `~openai/gpt-astra-latest`: `text` → `text`

So‘rov qaysi maydonlardan foydalanadi?

`POST /v1/messages` · `gpt-6-astra`: `model`, `messages`, `system`, `max_tokens`, `stream`, `metadata` `POST /v1/responses` · `gpt-6-astra`: `model`, `input`, `instructions`, `stream` `POST /v1/chat/completions` · `gpt-6-astra`: `model`, `messages`, `stream` `POST /v1/chat/completions` · `gpt-6-astra`: `model`, `messages`, `stream` `POST /v1/messages` · `gpt-6-astra`: `model`, `messages`, `max_tokens`, `stream` `POST /v1/messages` · `gpt`: `model`, `messages`, `system`, `max_tokens`, `stream`, `metadata` `POST /v1/responses` · `gpt`: `model`, `input`, `instructions`, `stream` `POST /v1/chat/completions` · `gpt`: `model`, `messages`, `stream` `POST /v1/messages` · `gpt-latest`: `model`, `messages`, `system`, `max_tokens`, `stream`, `metadata` `POST /v1/responses` · `gpt-latest`: `model`, `input`, `instructions`, `stream` `POST /v1/chat/completions` · `gpt-latest`: `model`, `messages`, `stream` `POST /v1/responses` · `gpt-6-astra`: `model`, `input`, `instructions`, `stream` `POST /v1/chat/completions` · `openai/gpt-6-astra`: `model`, `messages`, `stream`, `modalities`, `provider` `POST /v1/messages` · `openai/gpt-6-astra`: `model`, `messages`, `system`, `max_tokens`, `stream`, `metadata` `POST /v1/responses` · `openai/gpt-6-astra`: `model`, `input`, `instructions`, `stream` `POST /v1/chat/completions` · `~openai/gpt-astra-latest`: `model`, `messages`, `stream`, `modalities`, `provider` `POST /v1/messages` · `~openai/gpt-astra-latest`: `model`, `messages`, `max_tokens`, `stream` `POST /v1/responses` · `~openai/gpt-astra-latest`: `model`, `input`, `instructions`, `stream`

Qanday cheklovlar amal qiladi?

`POST /v1/messages` · `gpt-6-astra`: `ctx`: `1050000`; `max_out`: `128000`; `messages.min_items`: `1`; `max_tokens.minimum`: `1` `POST /v1/responses` · `gpt-6-astra`: `ctx`: `1050000`; `max_out`: `128000` `POST /v1/chat/completions` · `gpt-6-astra`: `ctx`: `1050000`; `max_out`: `128000`; `messages.min_items`: `1` `POST /v1/chat/completions` · `gpt-6-astra`: `messages.min_items`: `1` `POST /v1/messages` · `gpt`: `ctx`: `1050000`; `max_out`: `128000`; `messages.min_items`: `1`; `max_tokens.minimum`: `1` `POST /v1/responses` · `gpt`: `ctx`: `1050000`; `max_out`: `128000` `POST /v1/chat/completions` · `gpt`: `ctx`: `1050000`; `max_out`: `128000`; `messages.min_items`: `1` `POST /v1/messages` · `gpt-latest`: `ctx`: `1050000`; `max_out`: `128000`; `messages.min_items`: `1`; `max_tokens.minimum`: `1` `POST /v1/responses` · `gpt-latest`: `ctx`: `1050000`; `max_out`: `128000` `POST /v1/chat/completions` · `gpt-latest`: `ctx`: `1050000`; `max_out`: `128000`; `messages.min_items`: `1` `POST /v1/chat/completions` · `openai/gpt-6-astra`: `messages.min_items`: `1` `POST /v1/messages` · `openai/gpt-6-astra`: `messages.min_items`: `1`; `max_tokens.minimum`: `1` `POST /v1/chat/completions` · `~openai/gpt-astra-latest`: `messages.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.
