modellar

OpenAI: Text Embedding 3 Large

Markdown · JSON

OpenAI: Text Embedding 3 Large

OpenAI’ning uchinchi avloddagi kattaroq matn embedding modeli odatda 3 072 o‘lchamli vektorlar qaytaradi; ishlab chiqaruvchi qisqaroq ifodalar uchun boshqaruv vositasini ham taqdim etadi. Undan semantik qidirib topish, ko‘p tilli taqqoslash hamda bog‘liq kontent yoki tasniflash jarayonlari uchun foydalaning.

Model haqida

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

text-embedding-3-large — OpenAI’ning inglizcha va boshqa tillardagi vazifalar uchun uchinchi avloddagi kattaroq matn embedding modeli. U yozma materialni sonli vektorga o‘giradi va odatda 3 072 komponent qaytaradi. Vektor berilgan kontentdagi munosabatlarni ifodalaydi; qidirib topish yoki tasniflash jarayoni undan material tanlash yoki boshqa qaror qabul qilish uchun foydalanadi.

Uchinchi avlod modellari ishlab chiqaruvchining dimensions boshqaruv vositasi orqali qisqaroq ifodalarni qo‘llab-quvvatlashga o‘qitilgan. Vektor ombori shu hajmni talab qilganda, ishlab chiqaruvchi 1 024 o‘lchamni misol qilib keltiradi. Qisqaroq vektor saqlash va taqqoslash uchun ma’lumot hajmini kamaytiradi, lekin ifodani o‘zgartirish qidirib topish sifatiga ta’sir qilishi mumkin. Ilova talablariga mos o‘lchamni tanlang va korpus hamda unga beriladigan so‘rovlarda o‘sha tanlovdan foydalaning.

Namunaviy hujjat qidiruvi jarayoni manba materialni mazmunli parchalarga bo‘ladi, ularning identifikatorlarini saqlaydi va har bir parcha uchun vektor oladi. Savol bir xil model va o‘lchamlar soni bilan embedding qilinadi, so‘ng parcha vektorlari bilan taqqoslanadi. Ilova filtrlarni ta’minlaydi, tartiblangan natijalarni tanlaydi va ularning manba havolalarini ko‘rsatadi. Keyingi matn yaratish modeli topilgan materialdan javob tuzishi mumkin; embedding modelining natijasi sonli ma’lumot bo‘lib qoladi.

Hujjatlarda qayd etilgan boshqa qo‘llanishlar kod yoki matn qidiruvi, o‘xshash yozuvlarni guruhlash, bog‘liq kontent tavsiyalari, tasniflash, anomaliyalarni aniqlash va to‘plamdagi xilma-xillikni o‘lchashni o‘z ichiga oladi. Tavsiya uchun obyektlarni tegishli munosabatga mos tushunchalar bilan tasvirlang. Tasniflash uchun toifa ifodalari bilan taqqoslang yoki vektorlardan tasniflagich belgilari sifatida foydalaning. O‘xshashlikni mahsulotga kerakli natijaga aylantiradigan qoidani belgilang.

OpenAI har bir matn uchun maksimal kirish hajmini 8 192 token deb ko‘rsatadi. Embedding API’si satrlar yoki tokenlashtirilgan matnni qabul qiladi, bir nechta kirishni qo‘llab-quvvatlaydi va bo‘sh satrlarni rad etadi. U bitta so‘rov uchun jami 300 000 tokenlik limitni ham qo‘llaydi. Uzun hujjat mazmunli chegaralari va konteksti saqlangan holda bo‘linishi, har bir vektor esa o‘z manba parchasiga bog‘langan holda qolishi kerak.

Ishlab chiqaruvchi float vektorlarni odatiy chiqish natijasi, base64’ni esa muqobil kodlash sifatida hujjatlashtirgan. Qo‘llanma kosinus o‘xshashligini tavsiya qiladi va OpenAI embeddinglari birlik uzunligiga normallashtirilganini bildiradi; bu kosinus o‘xshashligi uchun skalyar ko‘paytmadan foydalanish va Evklid masofasi bo‘yicha teng kuchli tartiblash imkonini beradi. Agar uchinchi avlod vektori yaratilgandan so‘ng qo‘lda qisqartirilsa, ishlab chiqaruvchi ilovaga qisqartirilgan vektorni qayta normallashtirishni buyuradi; dimensions boshqaruv vositasidan foydalanish tavsiya etilgan yo‘ldir.

Izchil matn ifodasini tayyorlang va model, o‘lchamlar soni hamda manba identifikatorini qayd eting. Foydali yakuniy natija — tanlash qoidasi aniq ko‘rsatilgan, tartiblangan parchalar, bog‘liq elementlar yoki guruhlangan yozuvlar to‘plamidir. Natija so‘rovga mosligini baholang va vektor o‘xshashligini yozuvdagi faktik da’volarning tasdig‘i deb qabul qilish o‘rniga, manba dalillarini keyingi bosqich uchun saqlang.

Ailoot Ultra · Embeddinglar POST /v1/embeddings openai/text-embedding-3-large

openai/text-embedding-3-large

OpenAI /openai/text-embedding-3-large
Model ID
  • openai/text-embedding-3-large
  • text-embedding-3-large

Boshlash

OpenAI’ning uchinchi avloddagi kattaroq matn embedding modeli odatda 3 072 o‘lchamli vektorlar qaytaradi; ishlab chiqaruvchi qisqaroq ifodalar uchun boshqaruv vositasini ham taqdim etadi. Undan semantik qidirib topish, ko‘p tilli taqqoslash hamda bog‘liq kontent yoki tasniflash jarayonlari uchun foydalaning.

Qabul qilinadigan kirish ma’lumotlari
Matn · token_ids
Natijalar
embedding

Ailoot da mavjud · kirish ma’lumotlari va usullar

Ailoot Ultra · Embeddinglar POST /v1/embeddings
Kirish
text, token_ids
Chiqish
embedding
Kontekst
8 192 tokens
Chiqish formati
json
MaydonTurTalabQiymatlar va cheklovlarStandart
MaydonmodelTurstringTalabMajburiyQiymatlar va cheklovlar
openai/text-embedding-3-large
Standart—
MaydoninputTurstring|string[]|integer[]|integer[][]TalabMajburiyQiymatlar va cheklovlar
Elementlarning eng kam soni: 1
Shartlar: Bo‘sh bo‘lmagan, bir xil turdagi elementlardan iborat paket. Token ID lari manfiy bo‘lmagan butun sonlardir.
Kirish budjeti: Eng ko‘p: 8 192 · Matn birligi: UTF8 baytlari · Token birligi: Tokenlar massivi elementlari
Standart—
Maydonencoding_formatTurstringTalabIxtiyoriyQiymatlar va cheklovlar
float
Standartfloat
MaydondimensionsTurintegerTalabQo‘llab-quvvatlanmaydiQiymatlar va cheklovlar
Eng kam: 1
Standart—
MaydonuserTurjson_valueTalabIxtiyoriyQiymatlar va cheklovlar
Shartlar: Manba ushbu JSON metama’lumot maydoniga ruxsat beradi; uning ta’minotchi xizmatidagi aniq ma’nosi modelga bog‘liq.
Standart—
Maydonsession_idTurjson_valueTalabIxtiyoriyQiymatlar va cheklovlar
Shartlar: Manba ushbu JSON metama’lumot maydoniga ruxsat beradi; uning ta’minotchi xizmatidagi aniq ma’nosi modelga bog‘liq.
Standart—
MaydontraceTurjson_valueTalabIxtiyoriyQiymatlar va cheklovlar
Shartlar: Manba ushbu JSON metama’lumot maydoniga ruxsat beradi; uning ta’minotchi xizmatidagi aniq ma’nosi modelga bog‘liq.
Standart—
MaydonproviderTurobjectTalabIxtiyoriyQiymatlar va cheklovlar
Shartlar: provider.options rad etildi
Standart—
Kirish materiallari birikmalari

text_to_embedding

Usul parametrlari va hayot sikli
ParametrParametr talablari
Parametrcontent_typeParametr talablariapplication/json
ParametrrequiredParametr talablarimodel, input
Parametrinput_shapesParametr talablaristring, string[], nonnegative_integer_token_array, nonnegative_integer_token_array[]
Parametrencoding_formatParametr talablarifloat
Parametrdimensions_overrideParametr talablarifalse
Parametrmax_input_budget_unitsParametr talablari8192
Parametrmultimodal_objectsParametr talablarifalse
Parametrmaterial_typesParametr talablaritext, token_ids

Hayot sikli: synchronous_json

Har bir vektorning indeksi va o‘lchamini saqlang.

Model nomida multimodal deyilgani aynan shu yo‘nalishda rasm obyektlariga ruxsat borligini anglatmaydi.

Tariflar

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

Tezkor rejim
Standart tarif Tezkor rejim tanlanganda
Flex rejimi
Standart tarif flex rejimi tanlanganda
Maksimal fikrlash darajasi
Standart tarif Maksimal fikrlash darajasi uchun standart (default) tuzatish qo‘llanganda

Ailoot tariflari

Sozlamalar bo‘yicha narxlar

SozlamaTariflar jadvaliTo‘lov
SozlamaTokenlar uchun bazaviy tariflarTariflar jadvaliAsosiy tarifTo‘lov
Kirish · Kirish tokenlari $0.00026 / 1K token
Chiqish · Chiqish tokenlari $0 / 1K token
Kirish · Keshdan o‘qish — / 1K token
Kirish · Keshga yozish — / 1K token
Kirish · Keshga yozish, 1 soat — / 1K token

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

So‘rov namunalari

Ailoot Ultra · Embeddinglar

curlPython SDK
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "openai/text-embedding-3-large", "input": ["First document", "Second document"]}')

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/embeddings \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
r=json.loads(Path("result.json").read_text())
for x in r.get("data",[]): print(json.dumps({"index":x.get("index"),"embedding":x.get("embedding")}))
PY_RESULT
from openai import OpenAI
import os

client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
result=client.embeddings.create(model='openai/text-embedding-3-large',input=["First document","Second document"])
print(result)
for item in result.data:print(item.index,item.embedding)

Natijalarni olish va saqlash

Ailoot Ultra · Embeddinglar

json

Barcha tayyor natijalarni saqlash

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

Har bir vektorni indeksi bilan saqlang. Vektorlar soni kirish elementlari soniga teng bo‘lishi va o‘lchamlar bir xil bo‘lishi kerak.

Asl javobni tekshirish kerak bo‘lsa

Embedding vazifalari uchun endpoint qo‘shilmaydi.

Javob maydonlari
MaydonTur
MaydonobjectTurstring
MaydonmodelTurstring
Maydondata[].indexTurinteger
Maydondata[].embeddingTurfinite float[]
MaydonusageTurobject
Xatolar va keyingi qadamlar
JavobShartKeyingi qadam
Javob400 · invalid_request_errorShartMajburiy maydonlar, material ifodasi yoki parametr qiymati noto‘g‘riKeyingi qadamYangi yaratish so‘rovidan oldin ko‘rsatilgan maydonlarni tuzating.

Taxalluslar

Model taxalluslari

Ailoot Ultra openai/text-embedding-3-large, text-embedding-3-large

Usul yo‘llari taxalluslari

Yuqorida ko‘rsatilgan usul yo‘llaridan foydalaning.

Chaqirish uchun tegishli ID lar

openai/text-embedding-3-large, text-embedding-3-large

Ailoot Ultra · Embeddinglar · text-embedding-3-large POST /v1/embeddings text-embedding-3-large

text-embedding-3-large

OpenAI /text-embedding-3-large
Model ID
  • openai/text-embedding-3-large
  • text-embedding-3-large

Boshlash

OpenAI’ning uchinchi avloddagi kattaroq matn embedding modeli odatda 3 072 o‘lchamli vektorlar qaytaradi; ishlab chiqaruvchi qisqaroq ifodalar uchun boshqaruv vositasini ham taqdim etadi. Undan semantik qidirib topish, ko‘p tilli taqqoslash hamda bog‘liq kontent yoki tasniflash jarayonlari uchun foydalaning.

Qabul qilinadigan kirish ma’lumotlari
Matn
Natijalar
embedding

Ailoot da mavjud · kirish ma’lumotlari va usullar

Ailoot Ultra · Embeddinglar · text-embedding-3-large POST /v1/embeddings
Kirish
text
Chiqish
embedding
Kontekst
8 192 tokens
Chiqish formati
json
MaydonTurTalabQiymatlar va cheklovlarStandart
MaydonmodelTurstringTalabMajburiyQiymatlar va cheklovlar
text-embedding-3-large
Standart—
MaydoninputTurstring|string[]|integer[]|integer[][]TalabMajburiyQiymatlar va cheklovlar
Elementlarning eng kam soni: 1
Shartlar: Bo‘sh bo‘lmagan, bir xil turdagi elementlardan iborat paket. Token ID lari manfiy bo‘lmagan butun sonlardir.
Kirish budjeti: Eng ko‘p: 8 192 · Matn birligi: UTF8 baytlari · Token birligi: Tokenlar massivi elementlari
Standart—
Maydonencoding_formatTurstringTalabIxtiyoriyQiymatlar va cheklovlar
float
Standartfloat
MaydondimensionsTurintegerTalabQo‘llab-quvvatlanmaydiQiymatlar va cheklovlar
Eng kam: 1
Standart—
MaydonuserTurjson_valueTalabIxtiyoriyQiymatlar va cheklovlar
Shartlar: Ixtiyoriy JSON metama’lumotlari; dastlabki tizimdagi aniq semantika tanlangan modelga bog‘liq.
Standart—
Maydonsession_idTurjson_valueTalabIxtiyoriyQiymatlar va cheklovlar
Shartlar: Ixtiyoriy JSON metama’lumotlari; dastlabki tizimdagi aniq semantika tanlangan modelga bog‘liq.
Standart—
MaydontraceTurjson_valueTalabIxtiyoriyQiymatlar va cheklovlar
Shartlar: Ixtiyoriy JSON metama’lumotlari; dastlabki tizimdagi aniq semantika tanlangan modelga bog‘liq.
Standart—
MaydonproviderTurobjectTalabIxtiyoriyQiymatlar va cheklovlar
Shartlar: provider.options rad etildi
Standart—
Kirish materiallari birikmalari

text_to_embedding

Usul parametrlari va hayot sikli
ParametrParametr talablari
Parametrcontent_typeParametr talablariapplication/json
ParametrrequiredParametr talablarimodel, input
Parametrinput_shapesParametr talablaristring, string[], nonnegative_integer_token_array, nonnegative_integer_token_array[]
Parametrencoding_formatParametr talablarifloat
Parametrdimensions_overrideParametr talablarifalse
Parametrmax_input_budget_unitsParametr talablari8192
Parametrmultimodal_objectsParametr talablarifalse
Parametrmaterial_typesParametr talablaritext
Parametrtext_file_materialParametr talablariHaqiqiy UTF-8 hujjatini o‘qing va uning matnini ko‘rsatilgan kirish yoki xabar kontenti satriga joylashtiring.

Hayot sikli: synchronous_json

Aniq model ID sini va majburiy maydonlarni yuboring.

Qaytarilgan har bir element va uning dastlabki identifikatorlarini saqlang.

Tariflar

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

Tezkor rejim
Standart tarif Tezkor rejim tanlanganda
Flex rejimi
Standart tarif flex rejimi tanlanganda
Maksimal fikrlash darajasi
Standart tarif Maksimal fikrlash darajasi uchun standart (default) tuzatish qo‘llanganda

Ailoot tariflari

Sozlamalar bo‘yicha narxlar

SozlamaTariflar jadvaliTo‘lov
SozlamaTokenlar uchun bazaviy tariflarTariflar jadvaliAsosiy tarifTo‘lov
Kirish · Kirish tokenlari $0.00026 / 1K token
Chiqish · Chiqish tokenlari $0 / 1K token
Kirish · Keshdan o‘qish — / 1K token
Kirish · Keshga yozish — / 1K token
Kirish · Keshga yozish, 1 soat — / 1K token

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

So‘rov namunalari

Ailoot Ultra · Embeddinglar · text-embedding-3-large

To‘liq minimal JSON so‘rov tanasicurl · O‘zingizning UTF-8 hujjatingizdan foydalaningPython · Natijani to‘liq saqlang
{
  "model": "text-embedding-3-large",
  "input": [
    "First document",
    "Second document"
  ],
  "encoding_format": "float"
}
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 document}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json, os
from pathlib import Path

source_file = Path(os.environ['AILOOT_TEXT_FILE'])
if not source_file.is_file():
    raise SystemExit('Set AILOOT_TEXT_FILE to your actual UTF-8 document')
text = source_file.read_text(encoding='utf-8')
if not text.strip():
    raise SystemExit('Choose a document containing text')
payload = {'model': 'text-embedding-3-large', 'input': ['First document', 'Second document'], 'encoding_format': 'float'}
payload['input'] = [text]
Path('request.json').write_text(json.dumps(payload, ensure_ascii=False), encoding='utf-8')
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/embeddings \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path

result = json.loads(Path('result.json').read_text(encoding='utf-8'))
print(json.dumps(result, ensure_ascii=False, indent=2))
for vector in result.get('data', []):
    print('Vector', vector.get('index'), json.dumps(vector.get('embedding')))
PY_RESULT
import json, os
from pathlib import Path

source_file = Path(os.environ['AILOOT_TEXT_FILE'])
if not source_file.is_file():
    raise SystemExit('Set AILOOT_TEXT_FILE to your actual UTF-8 document')
text = source_file.read_text(encoding='utf-8')
if not text.strip():
    raise SystemExit('Choose a document containing text')
payload = {'model': 'text-embedding-3-large', 'input': ['First document', 'Second document'], 'encoding_format': 'float'}
payload['input'] = [text]
from urllib.request import Request, urlopen
from urllib.error import HTTPError

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

result = json.loads(Path('result.json').read_text(encoding='utf-8'))
print(json.dumps(result, ensure_ascii=False, indent=2))
for vector in result.get('data', []):
    print('Vector', vector.get('index'), json.dumps(vector.get('embedding')))

Natijalarni olish va saqlash

Ailoot Ultra · Embeddinglar · text-embedding-3-large

json

Barcha tayyor natijalarni saqlash

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

Har bir chekli vektorni dastlabki indeksi bilan saqlang. Barcha o‘lchamlarni va to‘liq usage obyektini saqlang.

Asl javobni tekshirish kerak bo‘lsa

Embedding vazifalari uchun endpoint qo‘shilmaydi.

Javob maydonlari
MaydonTur
MaydonobjectTurstring
MaydonmodelTurstring
Maydondata[].indexTurinteger
Maydondata[].embeddingTurfinite float[]
MaydonusageTurobject
Xatolar va keyingi qadamlar
JavobShartKeyingi qadam
Javob400 · invalid_request_errorShartMajburiy maydonlar, material ifodasi yoki parametr qiymati noto‘g‘riKeyingi qadamYangi yaratish so‘rovidan oldin ko‘rsatilgan maydonlarni tuzating.

Taxalluslar

Model taxalluslari

Ailoot Ultra openai/text-embedding-3-large, text-embedding-3-large

Usul yo‘llari taxalluslari

Yuqorida ko‘rsatilgan usul yo‘llaridan foydalaning.

Chaqirish uchun tegishli ID lar

openai/text-embedding-3-large, text-embedding-3-large

FAQ · OpenAI: Text Embedding 3 Large
Qanday kirish ma’lumotlari va natijalar mavjud?

POST /v1/embeddings · openai/text-embedding-3-large: text, token_ids → embedding

POST /v1/embeddings · text-embedding-3-large: text → embedding

So‘rov qaysi maydonlardan foydalanadi?

POST /v1/embeddings · openai/text-embedding-3-large: model, input, encoding_format, provider

POST /v1/embeddings · text-embedding-3-large: model, input, encoding_format, provider

Qanday cheklovlar amal qiladi?

POST /v1/embeddings · openai/text-embedding-3-large: ctx: 8192; input.budget.maximum: 8192 (UTF8 baytlari); input.min_items: 1

POST /v1/embeddings · text-embedding-3-large: ctx: 8192; input.budget.maximum: 8192 (UTF8 baytlari); input.min_items: 1

Batafsil

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

Kompaniya va uning loyihalar portfeli

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

Tokenlarni chegirma bilan xarid qiling.

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

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

Obuna tanlash · Model narxlarini ko‘rish

API’ni sotadigan mahsulotingizga ulang.

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

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

Reseller litsenziyasini so‘rash · Oferta va litsenziya shartnomasi