Jev — qarorlar modeli
MarkdownTypeSafe’ning Jev qarorlar modeli matn yoki JSON haqida turlangan savollarga javob beradi: variant tanlash, shkala bo‘yicha baholash yoki ehtimollar bilan “ha/yo‘q”. Bu chat ham, matn generatsiyasi ham emas.
To‘liq qo‘llanma
https://api.ailoot.ai/v1/systemonecurl https://api.ailoot.ai/v1/systemone \
-H "Authorization: Bearer $AILOOT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "jev-latest",
"state": "Yordam bering! To‘lovlarim 3 kundan beri amalga oshmayapti.",
"questions": {
"is_urgent": {
"type": "noul",
"instructions": "Bu shoshilinchlikni bildiradimi?"
}
}
}' import json, os, urllib.request
body = {
"model": "jev-latest",
"state": "Yordam bering! To‘lovlarim 3 kundan beri amalga oshmayapti.",
"questions": {
"is_urgent": {"type": "noul", "instructions": "Bu shoshilinchlikni bildiradimi?"},
},
}
req = urllib.request.Request(
"https://api.ailoot.ai/v1/systemone",
data=json.dumps(body).encode(),
headers={"Authorization": "Bearer " + os.environ["AILOOT_API_KEY"],
"Content-Type": "application/json"},
)
with urllib.request.urlopen(req, timeout=60) as resp:
result = json.load(resp)
print(result["answers"]["is_urgent"]["noul"]) # 0.95const resp = await fetch("https://api.ailoot.ai/v1/systemone", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.AILOOT_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
model: "jev-latest",
state: "Yordam bering! To‘lovlarim 3 kundan beri amalga oshmayapti.",
questions: {
is_urgent: { type: "noul", instructions: "Bu shoshilinchlikni bildiradimi?" },
},
}),
});
const result = await resp.json();
if (!resp.ok) throw new Error(`${resp.status} ${JSON.stringify(result)}`);
console.log(result.answers.is_urgent.noul); // 0.95{
"model": "jev-1.13.0",
"answers": {
"is_urgent": {
"type": "noul",
"noul": 0.95
}
},
"usage": { "input_tokens": 296, "output_tokens": 20 }
}Jev — TypeSafe’ning System One sinfidagi qarorlar modeli. U matn yozmaydi va suhbat yuritmaydi: siz quyidagini uzatasiz: holat (state) — matn yoki JSON — va quyidagilar to‘plami: savollar, javobda esa ehtimollar bilan turlangan qiymatlar olasiz. Kod erkin matnni tahlil qilmasdan darhol shu qiymatlar asosida tarmoqlanadi, saralaydi va yo‘naltiradi.
Bitta so‘rovdagi barcha savollar bir xil holatga nisbatan parallel va bir-biridan mustaqil baholanadi: state. TypeSafe ma’lumotiga ko‘ra, savollar qo‘shish javob vaqtini deyarli o‘zgartirmaydi va savollar bir-biriga xalaqit bermaydi.
| Nima | Qisqacha |
|---|---|
| Model | jev-latest — Jev’ning eng so‘nggi barqaror versiyasi uchun alias; katalogdagi kartochka |
| Metod | POST /v1/systemone. Bu chat emas: OpenAI, Anthropic va Gemini formatlari Jev uchun mos emas. Javob bitta JSON shaklida to‘liq keladi |
| Nimani qabul qiladi | Faqat matn: satr, JSON obyekt yoki matnlar massivi. Rasmlar, audio va videoni avval matnga aylantiring |
| Kontekst | Bir so‘rovga 64K token — state va barcha savollar birga; state eng uzun savol bilan birga — 32K gacha |
| Til | TypeSafe ma’lumotiga ko‘ra, model ingliz tilida eng aniq ishlaydi; boshqa tillarni ham qabul qiladi, ammo aniqlik pastroq — o‘z ma’lumotlaringizda tekshiring |
| Narx | Kirish uchun 1 mln tokenga $0.084, chiqish bepul |
So‘rov
Avtorizatsiya
- Authorizationheadermajburiy
Ailoot kaliti quyidagi ko‘rinishda:
Bearer sk-….
So‘rov tanasi
- modelstringmajburiy
jev-latest. - statestring | object | arraymajburiy
Nimani baholash kerak: matnli satr yoki JSON — mijoz murojaati, bazadagi yozuv, yozishma yoki ilovangizning joriy holati. Maydon nomlari tushunarli bo‘lgan obyekt odatda bitta satrdan qulayroq.
- questionsobjectmajburiy
Savollar. Kalitlarni o‘zingiz tanlaysiz, javoblar xuddi shu kalitlar ostida keladi; kalit javobga ta’sir qilmaydi — savolning o‘zi quyidagi maydonda beriladi:
instructions. - questions.*.typestringmajburiy
noul,choiceyokiscore— quyida ko‘ring. - questions.*.instructionsstring | object | arraymajburiy
Savolning o‘zi. Ma’lumotli uzun savolni obyekt sifatida yuborish mumkin: savol bir maydonda, ma’lumotlar boshqalarida; maydonlarga teskari tirnoqlar ichidagi nomlari bilan murojaat qiling.
- questions.*.criteriaobject | array
Javob variantlari har bir turga xos: noul uchun “ha” va “yo‘q” tavsiflari (ixtiyoriy), choice uchun variantlar lug‘ati, score uchun darajalarning tartiblangan ro‘yxati.
Savol turlari
| Tur | Nimani so‘raydi | Nimani qaytaradi |
|---|---|---|
noul | Tasdiq to‘g‘rimi: ha yoki yo‘q | noul — “ha” ehtimoli 0 dan 1 gacha |
choice | Berilgan variantlardan qaysi biri mos | choice, probabilities, confidence |
score | state sizning darajalar shkalangizning qayerida | score, legend, probabilities, confidence |
Bitta so‘rovda turli turlarni birlashtirish mumkin.
noul — ha yoki yo‘q
Maydon: criteria ixtiyoriy: unda quyidagi javoblarning ma’nosini tavsiflash mumkin: “ha” (true) va “yo‘q” (false). Javob noul — 0 (yo‘q) dan 1 (ha) gacha bo‘lgan son.
"is_urgent": {
"type": "noul",
"instructions": "Bu shoshilinchlikni bildiradimi?",
"criteria": {
"true": "Vaqt jihatidan shoshilinchligi aniq ko‘rsatilgan",
"false": "Shoshilinchlik bildirilmagan"
}
}"is_urgent": {
"type": "noul",
"noul": 0.95
}choice — variant tanlash
criteria — “variant → tavsif” lug‘ati; tavsif kerak bo‘lmasa, quyidagini ko‘rsating: null. 255 tagacha variant. Javobda choice — eng ehtimolli variant, probabilities — har bir variant ehtimoli (jami 1), confidence — 0 dan 1 gacha ishonch.
"department": {
"type": "choice",
"instructions": "Bu bilan qaysi jamoa shug‘ullanishi kerak?",
"criteria": {
"billing": "To‘lovlar, hisob-fakturalar, pulni qaytarish",
"technical": "Xatolar, uzilishlar, integratsiyalar",
"sales": "Narxlar, yuqori tarifga o‘tish, yangi mijozlar"
}
}"department": {
"type": "choice",
"choice": "billing",
"probabilities": { "billing": 0.88, "technical": 0.12, "sales": 0.0 },
"confidence": 0.81
}score — shkala bo‘yicha baholash
criteria — pastdan yuqoriga qarab darajalar, ko‘pi bilan 10 ta (TypeSafe kamida ikkita tavsiya qiladi). Javobda score — darajalar ehtimollari bilan vaznlangan qiymat (darajalar orasida ham bo‘lishi mumkin), legend — daraja raqami va tavsifi, probabilities va confidence. TypeSafe ma’lumotiga ko‘ra, score chegara bilan solishtirishga mos, ammo darajalar orasidagi aniq son uchun emas.
"frustration": {
"type": "score",
"instructions": "Mijoz qay darajada norozi?",
"criteria": ["Xotirjam", "Norozi", "Juda jahli chiqqan"]
}"frustration": {
"type": "score",
"score": 1.05,
"legend": { "0": "Xotirjam", "1": "Norozi", "2": "Juda jahli chiqqan" },
"probabilities": { "0": 0.0, "1": 0.95, "2": 0.05 },
"confidence": 0.92
}Javob
- modelstring
Modelning qaysi versiyasi javob bergani. jev-latest aliasi vaqt o‘tishi bilan yangi versiyalarga o‘tadi: agar quyidagi chegaralarni tanlagan bo‘lsangiz:
confidenceaniq bir versiya uchun, bu maydonni kuzating. - answersobject
Har bir savolga bittadan javob, ayni kalitlar ostida. Har bir javobda quyidagisi bor:
type, choice va score’da esa qo‘shimcha ravishdaconfidence. - usageobject
input_tokensvaoutput_tokens. Faqat kirish tokenlari uchun to‘lov olinadi.
Bitta so‘rovda bir nechta savol
Bitta state uchun barcha savollarni bitta so‘rovda bering: ular parallel baholanadi va state bir marta uzatiladi. TypeSafe ma’lumotiga ko‘ra, ularning 13 savolli misolida bitta umumiy so‘rov, bir xil javoblar bilan, ketma-ket yuborilgan 13 ta alohida so‘rovdan 12,2 marta arzonroq va 10 marta tezroq bo‘lgan.
Murakkab bahoni oddiy savollarga ajratib, javoblarni kodda birlashtirgan ma’qul: masalan, “arizani bahola” o‘rniga bozor, amalga oshirish imkoniyati va raqobatchilardan farqlar bo‘yicha alohida baholar. Shunda vaznlar savol matnida emas, kodda o‘zgartiriladi.
{
"model": "jev-latest",
"state": "Yordam bering! To‘lovlarim 3 kundan beri amalga oshmayapti.",
"questions": {
"department": {
"type": "choice",
"instructions": "Bu bilan qaysi jamoa shug‘ullanishi kerak?",
"criteria": {
"billing": "To‘lovlar, hisob-fakturalar, pulni qaytarish",
"technical": "Xatolar, uzilishlar, integratsiyalar",
"sales": "Narxlar, yuqori tarifga o‘tish, yangi mijozlar"
}
},
"frustration": {
"type": "score",
"instructions": "Mijoz qay darajada norozi?",
"criteria": ["Xotirjam", "Norozi", "Juda jahli chiqqan"]
},
"is_urgent": {
"type": "noul",
"instructions": "Bu shoshilinchlikni bildiradimi?"
}
}
}Qachon mos keladi
- Yo‘naltirish. Murojaatni kerakli bo‘limga, so‘rovni esa kerakli ishlovchiga yuborish: oddiy kod, katta model yoki odamga.
- Saralash va ustuvorlik. Shoshilinchlik, ohang va xavf — shkala bo‘yicha, koddagi chegaralar bilan.
- Moderatsiya va tekshiruvlar. Xabar qoidalarni buzadimi, manba iqtibosni tasdiqlaydimi, hujjatda savolning javobi bormi — matn keyingi bosqichga o‘tishidan oldin.
- Baholash va reytinglash. Hujjatlar, nomzodlar yoki topilgan parchalarni o‘z mezonlaringiz bilan baholab, keyingi bosqichga nima o‘tishini kodda hal qilish.
- Beqaror “JSON qaytar” o‘rniga. Tahlil qilish kerak bo‘lgan matnni emas, tuzilishi bo‘yicha turlangan qiymatlarni qaytaradigan chaqiruv.
Qachon mos kelmaydi
- Chat, foydalanuvchiga javoblar, matn yoki kod generatsiyasi. Jev matn yozmaydi — buning uchun quyidagilar bor: matn modellari.
- Claude Code, Cursor va boshqa agentlar uchun model. Agent modelining o‘rniga jev-latest qo‘yib bo‘lmaydi: agentga matn yozadigan va vositalarni chaqiradigan model kerak. Jev’ni agent siz uchun yozgan koddan chaqirish mumkin.
- Arifmetika, sanash, sanalarni solishtirish. TypeSafe ma’lumotiga ko‘ra, buni kodda qilish ishonchliroq; modeldan esa faqat mazmuniy qismini so‘rash kerak — masalan, choice orqali sana qismlarini ajratish.
- Rasmlar, audio va video. Model faqat matn qabul qiladi — bunday ma’lumotlarni oldindan matnga aylantiring.
Narx
Faqat kirish tokenlari uchun to‘lov olinadi — quyidagi maydon: usage.input_tokens javobdagi: 1 mln uchun $0.084. Chiqish tokenlari bepul.
Bu sahifadagi misol so‘rovi (296 kirish tokeni) $0.0001 dan arzon.
So‘rovdan oldin Ailoot balansdagi summani zaxiraga oladi va javobdan keyin haqiqiy sarf bo‘yicha bir marta yechadi — bu qanday ishlaydi.
Limitlar
| Nima | Limit |
|---|---|
| Butun so‘rov: state va barcha savollar | 64K token |
| state eng uzun savol bilan birga | 32K token |
| Bitta choice’dagi variantlar soni | 255 tagacha |
| Bitta score’dagi darajalar soni | 2 dan 10 gacha |
| Kirish | faqat matn: satr, JSON obyekt yoki matnlar massivi |
Model limitlari — TypeSafe ma’lumotiga ko‘ra. Kalitingiz va balansingiz cheklovlari boshqa Ailoot modellari kabi amal qiladi: Xatolar va limitlar.
Xatolar
Xatolar Ailoot API’ning umumiy formatida keladi: kod, tushunarli matn va Request ID. Bu metodda ko‘pincha quyidagilar uchraydi:
| Kod | Qachon | Nima qilish kerak |
|---|---|---|
400 invalid_request | So‘rov tanasi tekshiruvdan o‘tmadi: state, model yoki questions yo‘q, type noma’lum, choice’da 255 tadan ortiq variant yoki score’da 10 tadan ortiq daraja bor | Xato matniga qarab so‘rovni tuzating: tuzatmasangiz, yana tekshiruvdan o‘tmaydi |
400 context_length_exceeded | state va savollar birga model limitidan uzunroq | state’ni kodda filtrlang, savollar uchun kerakli ma’lumotni qoldiring |
401 invalid_api_key | Kalit yo‘q yoki noto‘g‘ri | Kalitni Authorization sarlavhasida uzating |
402 insufficient_balance | Zaxira uchun erkin balans yetarli emas | Balansni to‘ldiring |
404 model_not_found, unsupported_endpoint | ID xato yoki model noto‘g‘ri metod bilan chaqirilgan, masalan /v1/chat/completions orqali | jev-latest’ni faqat POST /v1/systemone orqali chaqiring |
429 rate_limit_exceeded | So‘rovlar juda ko‘p | Retry-After sarlavhasida ko‘rsatilgan soniyalarni kuting va qayta urinib ko‘ring |
503 model_overloaded, model_unavailable | Model vaqtincha ortiqcha yuklangan yoki mavjud emas | X-Should-Retry: true bo‘lsa — Retry-After soniyadan keyin qayta urinib ko‘ring; false bo‘lsa — avval tarixda Request ID’ni tekshiring |
504 model_timeout | Model vaqtida javob bermadi | Tarixda Request ID’ni tekshirmaguningizcha so‘rovni qayta yubormang |
Kodlarning to‘liq ro‘yxati quyidagi sahifada: Xatolar va limitlar.