Source: https://ailoot.ai/models/uz/deepseek-v4-1-flash/
Canonical: https://ailoot.ai/models/uz/deepseek-v4-1-flash/
Language: uz

# deepseek-v4.1-flash

[Markdown](https://ailoot.ai/models/uz/deepseek-v4-1-flash/index.md) · [JSON](https://ailoot.ai/models/uz/deepseek-v4-1-flash/facts.json)

## [deepseek-v4.1-flash](https://ailoot.ai/models/uz/deepseek-v4-1-flash/)

DeepSeek V4.1 Flash — matn va tasvirlarni tahlil qilish, dasturlash va uzun kontekstli agent ishi uchun multimodal model.

- [**Ailoot · Anthropic Messages** `POST /v1/messages` `deepseek-v4.1-flash`](https://ailoot.ai/models/uz/deepseek-v4-1-flash/#method-0)
- [**Ailoot · OpenAI Responses** `POST /v1/responses` `deepseek-v4.1-flash`](https://ailoot.ai/models/uz/deepseek-v4-1-flash/#method-1)
- [**Ailoot · OpenAI Chat** `POST /v1/chat/completions` `deepseek-v4.1-flash`](https://ailoot.ai/models/uz/deepseek-v4-1-flash/#method-2)
- [**Ailoot · Anthropic Messages** `POST /v1/messages` `deepseek-flash`](https://ailoot.ai/models/uz/deepseek-v4-1-flash/#method-3)
- [**Ailoot · OpenAI Responses** `POST /v1/responses` `deepseek-flash`](https://ailoot.ai/models/uz/deepseek-v4-1-flash/#method-4)
- [**Ailoot · OpenAI Chat** `POST /v1/chat/completions` `deepseek-flash`](https://ailoot.ai/models/uz/deepseek-v4-1-flash/#method-5)

Model haqida

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

#### Matn va tasvirlarni birgalikda qayta ishlash

DeepSeek V4.1 Flash — boshidan multimodal model: vizual enkoder tasvirni matn bilan birgalikda qayta ishlanadigan ifodaga aylantiradi. Natija matnli. Vizual tushunish, dasturlash va agent vazifalari ko‘zda tutilgan; kontekst bir million tokengacha yetadi.

#### Katta kirish uchun arxitektura

Asosiy tarmoq 552 mlrd parametrni o‘z ichiga oladi. Sababiy enkoder va dekoderning har biri 20 ta qatlamga ega. Kirishni qayta ishlashda har bir token uchun 8 mlrd, yaratishda esa 16 mlrd parametr faol bo‘ladi. Bunday ajratish kiruvchi materiallari javobdan ancha katta bo‘lgan vazifalar uchun mo‘ljallangan.

Siqilgan siyrak diqqat mexanizmi qatlamlar orasidagi ma’lumotlarni qayta ishlatadi va kontekstning muhim qismlarini takroriy qidirishni cheklaydi. Mahalliy diqqatning yetishmayotgan holatlari yaqindagi parchadan tiklanadi. Engram shartli xotirasi 196 mlrd parametrni o‘z ichiga oladi va tokenlar bo‘yicha siyrak qidiruv orqali yozuvlarga murojaat qiladi. Bu asosiy tarmoq hajmining yangi nomi emas, alohida xotira blokidir. Har bir ekspert qatlamida bitta umumiy va 384 ta marshrutlanadigan ekspert bor; token uchun oltita marshrutlanadigan ekspert tanlanadi. Bundan tashqari, qatlamlar orasidagi o‘zgartirilgan bog‘lanishlar va spekulyativ dekodlash uchun DSpark ishlatiladi.

#### O‘qitish va agent muhitlari

Model 45 trln tokenli multimodal korpusda noldan o‘qitilgan. Keyingi tayyorlash tartibi: misollar orqali o‘qitish, mustahkamlash orqali o‘qitish, so‘ng modelning o‘z ketma-ketliklarida distillyatsiya.

DeepSeek sintetik vazifa ma’lumotlari, ish muhitlari va agent yo‘llarini kengaytiradi. Tayyorlashda topshiriqning o‘zi, mavjud muhit va natijani tekshirish usuli bog‘lanadi; ma’lumotlar saralanadi, takrorlardan tozalanadi va murakkabligiga qarab tanlanadi. Bu modelga murojaat qilganda tashqi vositalarning avtomatik mavjudligi emas, o‘qitish tuzilishidir.

#### Tahlilning boshqariladigan chuqurligi

Mulohaza yuritish 1 dan 100 gacha butun son bilan boshqariladi. Bu uzluksiz shkala tahlil uchun sa’y-harakatni belgilaydi; chuqur mulohaza ko‘proq vaqt va token talab qilishi mumkin.

#### Suhbatni davom ettirish va amallar

Model formati ko‘p navbatli suhbat, vosita chaqiruvlari, saqlangan mulohaza va matn bilan tasvirlarning almashib kelishini ko‘zda tutadi. Vositalarni ilova bajaradi; olingan natijalar keyingi qadam uchun materialga aylanadi.

Javob matnli bo‘lib qoladi. Vizual qobiliyat tegishli kirish metodini talab qiladi. Kontekst hajmi va tavsiya etilgan yaratish uzunligi javobning universal maksimal hajmini belgilamaydi.

Amaliy vazifa

### Amaliy vazifa

Ingliz tilidagi texnik misol

```
Resolve conflicting rollout rules

Plan this rollout using only these rules: R1: migrate the database before enabling the new writer. R2: keep the old reader until rollback is no longer needed. R3: rollback needs the old database column. The draft removes that column immediately after enabling the writer. Return a safe ordered plan and the specific draft step that conflicts with a rule.
```

#### Kutiladigan natija

```
An ordered rollout proposal with references to R1-R3 and the conflicting step identified.
```

#### Natijani tekshirish

```
The plan must retain the old column throughout the rollback period.
```

**Ailoot · Anthropic Messages** `POST /v1/messages` `deepseek-v4.1-flash`

[`deepseek-v4.1-flash`](https://ailoot.ai/models/uz/#m=deepseek-v4.1-flash&route=Core&caller=deepseek-v4.1-flash&fmt=messages)

DeepSeek /`deepseek-v4.1-flash`

Model ID

- `deepseek-v4.1-flash`
- `deepseek-flash`

### Boshlash

DeepSeek V4.1 Flash — matn va tasvirlarni tahlil qilish, dasturlash va uzun kontekstli agent ishi uchun multimodal model.

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

Eng katta chiqish

393 216 tokens

Chiqish formati

json yoki SSE

| Maydon | Tur | Talab | Qiymatlar va cheklovlar | Standart |
| --- | --- | --- | --- | --- |
| Maydon`model` | Tur`string` | TalabMajburiy | Qiymatlar va cheklovlar deepseek-v4.1-flash | 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,0003 US$ */ 1K*

Chiqish

0,0012 US$ */ 1K*

Keshdan o‘qish

≈0,00003 US$ */ 1K*

Keshga yozish

0,0003 US$ */ 1K*

Keshga yozish, 5 daqiqa

0,0003 US$ */ 1K tokens*

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.

deepseek-v4.1-flash · E’lon qilingan narxlar

#### Sozlamalar bo‘yicha narxlar

| Sozlama | To‘lov |
| --- | --- |
| Sozlamadeepseek-v4.1-flash · E’lon qilingan narxlar | To‘lov Kirish · Keshga yozish **$0.000** 1K token uchun Kirish · Keshdan o‘qish **$0.000006** 1K token uchun Kirish · Kirish tokenlari **$0.0003** 1K token uchun Chiqish · Chiqish tokenlari **$0.0012** 1K token uchun Har bir so‘rov uchun **$0.000** har bir so‘rov uchun |

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

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

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

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

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

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

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

saveResult(msg);
```

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

### Natijalarni olish va saqlash

#### Ailoot · Anthropic Messages

json yoki SSE

##### Barcha tayyor natijalarni saqlash

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

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

##### Asl javobni tekshirish kerak bo‘lsa

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

Javob maydonlari

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

Xatolar va keyingi qadamlar

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

### Taxalluslar

#### Model taxalluslari

**Ailoot** [`deepseek-v4.1-flash`](https://ailoot.ai/models/uz/#m=deepseek-v4.1-flash&route=Core&caller=deepseek-v4.1-flash&fmt=messages), [`deepseek-flash`](https://ailoot.ai/models/uz/#m=deepseek-v4.1-flash&route=Core&caller=deepseek-flash&fmt=messages)

#### Usul yo‘llari taxalluslari

Yuqorida ko‘rsatilgan usul yo‘llaridan foydalaning.

#### Chaqirish uchun tegishli ID lar

[`deepseek-v4.1-flash`](https://ailoot.ai/models/uz/#m=deepseek-v4.1-flash&route=Core&caller=deepseek-v4.1-flash&fmt=messages), [`deepseek-flash`](https://ailoot.ai/models/uz/#m=deepseek-v4.1-flash&route=Core&caller=deepseek-flash&fmt=messages)

**Ailoot · OpenAI Responses** `POST /v1/responses` `deepseek-v4.1-flash`

[`deepseek-v4.1-flash`](https://ailoot.ai/models/uz/#m=deepseek-v4.1-flash&route=Core&caller=deepseek-v4.1-flash&fmt=responses)

DeepSeek /`deepseek-v4.1-flash`

Model ID

- `deepseek-v4.1-flash`
- `deepseek-flash`

### Boshlash

DeepSeek V4.1 Flash — matn va tasvirlarni tahlil qilish, dasturlash va uzun kontekstli agent ishi uchun multimodal model.

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

Eng katta chiqish

393 216 tokens

Chiqish formati

json yoki SSE

| Maydon | Tur | Talab | Qiymatlar va cheklovlar | Standart |
| --- | --- | --- | --- | --- |
| Maydon`model` | Tur`string` | TalabMajburiy | Qiymatlar va cheklovlar deepseek-v4.1-flash | 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,0003 US$ */ 1K*

Chiqish

0,0012 US$ */ 1K*

Keshdan o‘qish

≈0,00003 US$ */ 1K*

Keshga yozish

0,0003 US$ */ 1K*

Keshga yozish, 5 daqiqa

0,0003 US$ */ 1K tokens*

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.

deepseek-v4.1-flash · E’lon qilingan narxlar

#### Sozlamalar bo‘yicha narxlar

| Sozlama | To‘lov |
| --- | --- |
| Sozlamadeepseek-v4.1-flash · E’lon qilingan narxlar | To‘lov Kirish · Keshga yozish **$0.000** 1K token uchun Kirish · Keshdan o‘qish **$0.000006** 1K token uchun Kirish · Kirish tokenlari **$0.0003** 1K token uchun Chiqish · Chiqish tokenlari **$0.0012** 1K token uchun Har bir so‘rov uchun **$0.000** har bir so‘rov uchun |

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

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

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

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

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

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

```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="deepseek-v4.1-flash", input="Explain the difference between an observation and a hypothesis in three sentences.")
import base64, json
from pathlib import Path

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

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

```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: "deepseek-v4.1-flash", input: "Explain the difference between an observation and a hypothesis in three sentences." });
import { writeFileSync } from "node:fs";

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

saveResult(resp);
```

```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="deepseek-v4.1-flash", input="Explain the difference between an observation and a hypothesis in three sentences.") as stream:
    with Path("stream-events.jsonl").open("w",encoding="utf-8") as log:
        for event in stream:
            payload=event.to_dict(mode="json")
            log.write(json.dumps(payload,ensure_ascii=False)+"\n"); log.flush()
            print(json.dumps(payload,ensure_ascii=False))
    final=stream.get_final_response()
    save_result(final.to_dict(mode="json"),"stream-result")
```

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

**Ailoot** [`deepseek-v4.1-flash`](https://ailoot.ai/models/uz/#m=deepseek-v4.1-flash&route=Core&caller=deepseek-v4.1-flash&fmt=responses), [`deepseek-flash`](https://ailoot.ai/models/uz/#m=deepseek-v4.1-flash&route=Core&caller=deepseek-flash&fmt=responses)

#### Usul yo‘llari taxalluslari

Yuqorida ko‘rsatilgan usul yo‘llaridan foydalaning.

#### Chaqirish uchun tegishli ID lar

[`deepseek-v4.1-flash`](https://ailoot.ai/models/uz/#m=deepseek-v4.1-flash&route=Core&caller=deepseek-v4.1-flash&fmt=responses), [`deepseek-flash`](https://ailoot.ai/models/uz/#m=deepseek-v4.1-flash&route=Core&caller=deepseek-flash&fmt=responses)

**Ailoot · OpenAI Chat** `POST /v1/chat/completions` `deepseek-v4.1-flash`

[`deepseek-v4.1-flash`](https://ailoot.ai/models/uz/#m=deepseek-v4.1-flash&route=Core&caller=deepseek-v4.1-flash&fmt=chat)

DeepSeek /`deepseek-v4.1-flash`

Model ID

- `deepseek-v4.1-flash`
- `deepseek-flash`

### Boshlash

DeepSeek V4.1 Flash — matn va tasvirlarni tahlil qilish, dasturlash va uzun kontekstli agent ishi uchun multimodal model.

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

Eng katta chiqish

393 216 tokens

Chiqish formati

json yoki SSE

| Maydon | Tur | Talab | Qiymatlar va cheklovlar | Standart |
| --- | --- | --- | --- | --- |
| Maydon`model` | Tur`string` | TalabMajburiy | Qiymatlar va cheklovlar deepseek-v4.1-flash | 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,0003 US$ */ 1K*

Chiqish

0,0012 US$ */ 1K*

Keshdan o‘qish

≈0,00003 US$ */ 1K*

Keshga yozish

0,0003 US$ */ 1K*

Keshga yozish, 5 daqiqa

0,0003 US$ */ 1K tokens*

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.

deepseek-v4.1-flash · E’lon qilingan narxlar

#### Sozlamalar bo‘yicha narxlar

| Sozlama | To‘lov |
| --- | --- |
| Sozlamadeepseek-v4.1-flash · E’lon qilingan narxlar | To‘lov Kirish · Keshga yozish **$0.000** 1K token uchun Kirish · Keshdan o‘qish **$0.000006** 1K token uchun Kirish · Kirish tokenlari **$0.0003** 1K token uchun Chiqish · Chiqish tokenlari **$0.0012** 1K token uchun Har bir so‘rov uchun **$0.000** har bir so‘rov uchun |

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

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

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

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

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

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

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

saveResult(resp);
```

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

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

**Ailoot** [`deepseek-v4.1-flash`](https://ailoot.ai/models/uz/#m=deepseek-v4.1-flash&route=Core&caller=deepseek-v4.1-flash&fmt=chat), [`deepseek-flash`](https://ailoot.ai/models/uz/#m=deepseek-v4.1-flash&route=Core&caller=deepseek-flash&fmt=chat)

#### Usul yo‘llari taxalluslari

Yuqorida ko‘rsatilgan usul yo‘llaridan foydalaning.

#### Chaqirish uchun tegishli ID lar

[`deepseek-v4.1-flash`](https://ailoot.ai/models/uz/#m=deepseek-v4.1-flash&route=Core&caller=deepseek-v4.1-flash&fmt=chat), [`deepseek-flash`](https://ailoot.ai/models/uz/#m=deepseek-v4.1-flash&route=Core&caller=deepseek-flash&fmt=chat)

**Ailoot · Anthropic Messages** `POST /v1/messages` `deepseek-flash`

[`deepseek-flash`](https://ailoot.ai/models/uz/#m=deepseek-v4.1-flash&route=Core&caller=deepseek-flash&fmt=messages)

DeepSeek /`deepseek-flash`

Model ID

- `deepseek-v4.1-flash`
- `deepseek-flash`

### Boshlash

DeepSeek V4.1 Flash — matn va tasvirlarni tahlil qilish, dasturlash va uzun kontekstli agent ishi uchun multimodal model.

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

Eng katta chiqish

393 216 tokens

Chiqish formati

json yoki SSE

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

Chiqish

0,0012 US$ */ 1K*

Keshdan o‘qish

≈0,00003 US$ */ 1K*

Keshga yozish

0,0003 US$ */ 1K*

Keshga yozish, 5 daqiqa

0,0003 US$ */ 1K tokens*

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.

deepseek-v4.1-flash · E’lon qilingan narxlar

#### Sozlamalar bo‘yicha narxlar

| Sozlama | To‘lov |
| --- | --- |
| Sozlamadeepseek-v4.1-flash · E’lon qilingan narxlar | To‘lov Kirish · Keshga yozish **$0.000** 1K token uchun Kirish · Keshdan o‘qish **$0.000006** 1K token uchun Kirish · Kirish tokenlari **$0.0003** 1K token uchun Chiqish · Chiqish tokenlari **$0.0012** 1K token uchun Har bir so‘rov uchun **$0.000** har bir so‘rov uchun |

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

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

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

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

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

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

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

saveResult(msg);
```

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

### Natijalarni olish va saqlash

#### Ailoot · Anthropic Messages

json yoki SSE

##### Barcha tayyor natijalarni saqlash

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

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

##### Asl javobni tekshirish kerak bo‘lsa

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

Javob maydonlari

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

Xatolar va keyingi qadamlar

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

### Taxalluslar

#### Model taxalluslari

**Ailoot** [`deepseek-v4.1-flash`](https://ailoot.ai/models/uz/#m=deepseek-v4.1-flash&route=Core&caller=deepseek-v4.1-flash&fmt=messages), [`deepseek-flash`](https://ailoot.ai/models/uz/#m=deepseek-v4.1-flash&route=Core&caller=deepseek-flash&fmt=messages)

#### Usul yo‘llari taxalluslari

Yuqorida ko‘rsatilgan usul yo‘llaridan foydalaning.

#### Chaqirish uchun tegishli ID lar

[`deepseek-v4.1-flash`](https://ailoot.ai/models/uz/#m=deepseek-v4.1-flash&route=Core&caller=deepseek-v4.1-flash&fmt=messages), [`deepseek-flash`](https://ailoot.ai/models/uz/#m=deepseek-v4.1-flash&route=Core&caller=deepseek-flash&fmt=messages)

**Ailoot · OpenAI Responses** `POST /v1/responses` `deepseek-flash`

[`deepseek-flash`](https://ailoot.ai/models/uz/#m=deepseek-v4.1-flash&route=Core&caller=deepseek-flash&fmt=responses)

DeepSeek /`deepseek-flash`

Model ID

- `deepseek-v4.1-flash`
- `deepseek-flash`

### Boshlash

DeepSeek V4.1 Flash — matn va tasvirlarni tahlil qilish, dasturlash va uzun kontekstli agent ishi uchun multimodal model.

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

Eng katta chiqish

393 216 tokens

Chiqish formati

json yoki SSE

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

Chiqish

0,0012 US$ */ 1K*

Keshdan o‘qish

≈0,00003 US$ */ 1K*

Keshga yozish

0,0003 US$ */ 1K*

Keshga yozish, 5 daqiqa

0,0003 US$ */ 1K tokens*

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.

deepseek-v4.1-flash · E’lon qilingan narxlar

#### Sozlamalar bo‘yicha narxlar

| Sozlama | To‘lov |
| --- | --- |
| Sozlamadeepseek-v4.1-flash · E’lon qilingan narxlar | To‘lov Kirish · Keshga yozish **$0.000** 1K token uchun Kirish · Keshdan o‘qish **$0.000006** 1K token uchun Kirish · Kirish tokenlari **$0.0003** 1K token uchun Chiqish · Chiqish tokenlari **$0.0012** 1K token uchun Har bir so‘rov uchun **$0.000** har bir so‘rov uchun |

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

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

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

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

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

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

```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="deepseek-flash", input="Explain the difference between an observation and a hypothesis in three sentences.")
import base64, json
from pathlib import Path

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

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

```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: "deepseek-flash", input: "Explain the difference between an observation and a hypothesis in three sentences." });
import { writeFileSync } from "node:fs";

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

saveResult(resp);
```

```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="deepseek-flash", input="Explain the difference between an observation and a hypothesis in three sentences.") as stream:
    with Path("stream-events.jsonl").open("w",encoding="utf-8") as log:
        for event in stream:
            payload=event.to_dict(mode="json")
            log.write(json.dumps(payload,ensure_ascii=False)+"\n"); log.flush()
            print(json.dumps(payload,ensure_ascii=False))
    final=stream.get_final_response()
    save_result(final.to_dict(mode="json"),"stream-result")
```

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

**Ailoot** [`deepseek-v4.1-flash`](https://ailoot.ai/models/uz/#m=deepseek-v4.1-flash&route=Core&caller=deepseek-v4.1-flash&fmt=responses), [`deepseek-flash`](https://ailoot.ai/models/uz/#m=deepseek-v4.1-flash&route=Core&caller=deepseek-flash&fmt=responses)

#### Usul yo‘llari taxalluslari

Yuqorida ko‘rsatilgan usul yo‘llaridan foydalaning.

#### Chaqirish uchun tegishli ID lar

[`deepseek-v4.1-flash`](https://ailoot.ai/models/uz/#m=deepseek-v4.1-flash&route=Core&caller=deepseek-v4.1-flash&fmt=responses), [`deepseek-flash`](https://ailoot.ai/models/uz/#m=deepseek-v4.1-flash&route=Core&caller=deepseek-flash&fmt=responses)

**Ailoot · OpenAI Chat** `POST /v1/chat/completions` `deepseek-flash`

[`deepseek-flash`](https://ailoot.ai/models/uz/#m=deepseek-v4.1-flash&route=Core&caller=deepseek-flash&fmt=chat)

DeepSeek /`deepseek-flash`

Model ID

- `deepseek-v4.1-flash`
- `deepseek-flash`

### Boshlash

DeepSeek V4.1 Flash — matn va tasvirlarni tahlil qilish, dasturlash va uzun kontekstli agent ishi uchun multimodal model.

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

Eng katta chiqish

393 216 tokens

Chiqish formati

json yoki SSE

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

Chiqish

0,0012 US$ */ 1K*

Keshdan o‘qish

≈0,00003 US$ */ 1K*

Keshga yozish

0,0003 US$ */ 1K*

Keshga yozish, 5 daqiqa

0,0003 US$ */ 1K tokens*

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.

deepseek-v4.1-flash · E’lon qilingan narxlar

#### Sozlamalar bo‘yicha narxlar

| Sozlama | To‘lov |
| --- | --- |
| Sozlamadeepseek-v4.1-flash · E’lon qilingan narxlar | To‘lov Kirish · Keshga yozish **$0.000** 1K token uchun Kirish · Keshdan o‘qish **$0.000006** 1K token uchun Kirish · Kirish tokenlari **$0.0003** 1K token uchun Chiqish · Chiqish tokenlari **$0.0012** 1K token uchun Har bir so‘rov uchun **$0.000** har bir so‘rov uchun |

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

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

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

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

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

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

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

saveResult(resp);
```

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

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

**Ailoot** [`deepseek-v4.1-flash`](https://ailoot.ai/models/uz/#m=deepseek-v4.1-flash&route=Core&caller=deepseek-v4.1-flash&fmt=chat), [`deepseek-flash`](https://ailoot.ai/models/uz/#m=deepseek-v4.1-flash&route=Core&caller=deepseek-flash&fmt=chat)

#### Usul yo‘llari taxalluslari

Yuqorida ko‘rsatilgan usul yo‘llaridan foydalaning.

#### Chaqirish uchun tegishli ID lar

[`deepseek-v4.1-flash`](https://ailoot.ai/models/uz/#m=deepseek-v4.1-flash&route=Core&caller=deepseek-v4.1-flash&fmt=chat), [`deepseek-flash`](https://ailoot.ai/models/uz/#m=deepseek-v4.1-flash&route=Core&caller=deepseek-flash&fmt=chat)

FAQ · deepseek-v4.1-flash

Qanday kirish ma’lumotlari va natijalar mavjud?

`POST /v1/messages` · `deepseek-v4.1-flash`: `text`, `image` → `text` `POST /v1/responses` · `deepseek-v4.1-flash`: `text`, `image` → `text` `POST /v1/chat/completions` · `deepseek-v4.1-flash`: `text`, `image` → `text` `POST /v1/messages` · `deepseek-flash`: `text`, `image` → `text` `POST /v1/responses` · `deepseek-flash`: `text`, `image` → `text` `POST /v1/chat/completions` · `deepseek-flash`: `text`, `image` → `text`

So‘rov qaysi maydonlardan foydalanadi?

`POST /v1/messages` · `deepseek-v4.1-flash`: `model`, `messages`, `system`, `max_tokens`, `stream`, `metadata` `POST /v1/responses` · `deepseek-v4.1-flash`: `model`, `input`, `instructions`, `stream` `POST /v1/chat/completions` · `deepseek-v4.1-flash`: `model`, `messages`, `stream` `POST /v1/messages` · `deepseek-flash`: `model`, `messages`, `system`, `max_tokens`, `stream`, `metadata` `POST /v1/responses` · `deepseek-flash`: `model`, `input`, `instructions`, `stream` `POST /v1/chat/completions` · `deepseek-flash`: `model`, `messages`, `stream`

Qanday cheklovlar amal qiladi?

`POST /v1/messages` · `deepseek-v4.1-flash`: `ctx`: `1000000`; `max_out`: `393216`; `messages.min_items`: `1`; `max_tokens.minimum`: `1` `POST /v1/responses` · `deepseek-v4.1-flash`: `ctx`: `1000000`; `max_out`: `393216` `POST /v1/chat/completions` · `deepseek-v4.1-flash`: `ctx`: `1000000`; `max_out`: `393216`; `messages.min_items`: `1` `POST /v1/messages` · `deepseek-flash`: `ctx`: `1000000`; `max_out`: `393216`; `messages.min_items`: `1`; `max_tokens.minimum`: `1` `POST /v1/responses` · `deepseek-flash`: `ctx`: `1000000`; `max_out`: `393216` `POST /v1/chat/completions` · `deepseek-flash`: `ctx`: `1000000`; `max_out`: `393216`; `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.
