Jev — sprendimų modelis
MarkdownTypeSafe sprendimų modelis Jev atsako į tipizuotus klausimus apie tekstą ar JSON: parenka variantą, įvertina pagal skalę arba pateikia „taip / ne“ su tikimybėmis. Tai nėra pokalbis ar teksto generavimas.
Visas vadovas
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": "Padėkite! Mano išmokos jau 3 dienas nevykdomos.",
"questions": {
"is_urgent": {
"type": "noul",
"instructions": "Ar tai rodo skubumą?"
}
}
}' import json, os, urllib.request
body = {
"model": "jev-latest",
"state": "Padėkite! Mano išmokos jau 3 dienas nevykdomos.",
"questions": {
"is_urgent": {"type": "noul", "instructions": "Ar tai rodo skubumą?"},
},
}
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: "Padėkite! Mano išmokos jau 3 dienas nevykdomos.",
questions: {
is_urgent: { type: "noul", instructions: "Ar tai rodo skubumą?" },
},
}),
});
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 System One klasės sprendimų modelis. Jis nerašo teksto ir neveda pokalbio: perduodate būseną (state) — tekstą arba JSON — ir rinkinį klausimų, o atsakyme gaunate tipizuotas reikšmes su tikimybėmis. Pagal jas kodas iškart parenka šaką, rūšiuoja ir nukreipia, neanalizuodamas laisvo teksto.
Visi vienos užklausos klausimai vertinami lygiagrečiai ir nepriklausomai vienas nuo kito pagal tą patį state. TypeSafe duomenimis, pridėjus klausimų atsakymo laikas beveik nesikeičia, o klausimai vienas kitam netrukdo.
| Kas | Trumpai |
|---|---|
| Modelis | jev-latest — naujausios stabilios Jev versijos pseudonimas; kortelė kataloge |
| Metodas | POST /v1/systemone. Tai nėra pokalbis: OpenAI, Anthropic ir Gemini formatai Jev netinka. Atsakymas pateikiamas visas, vienu JSON |
| Ką priima | Tik tekstą: eilutę, JSON objektą arba tekstų masyvą. Vaizdus, garsą ir vaizdo įrašus pirmiausia paverskite tekstu |
| Kontekstas | 64K žetonų vienai užklausai — state ir visi klausimai kartu; state su ilgiausiu klausimu — iki 32K |
| Kalba | TypeSafe duomenimis, tiksliausiai modelis veikia anglų kalba; kitas kalbas priima, tačiau tikslumas mažesnis — patikrinkite su savo duomenimis |
| Kaina | Įvestis — $0.084 už 1 mln. žetonų, išvestis nemokama |
Užklausa
Autorizacija
- Authorizationheaderprivalomas
Ailoot raktas formatu
Bearer sk-….
Užklausos turinys
- modelstringprivalomas
jev-latest. - statestring | object | arrayprivalomas
Ką vertinti: eilutė su tekstu arba JSON — kliento kreipimasis, duomenų bazės įrašas, susirašinėjimas, dabartinė jūsų programos būsena. Objektas su aiškiais laukų pavadinimais paprastai patogesnis nei viena eilutė.
- questionsobjectprivalomas
Klausimai. Raktus pasirenkate patys, atsakymai pateikiami su tais pačiais raktais; raktas atsakymui įtakos neturi — pats klausimas nurodomas lauke
instructions. - questions.*.typestringprivalomas
noul,choicearbascore— žr. toliau. - questions.*.instructionsstring | object | arrayprivalomas
Pats klausimas. Ilgą klausimą su duomenimis galima perduoti objektu: klausimas viename lauke, duomenys kituose; į laukus kreipkitės jų vardais tarp atgalinių kabučių.
- questions.*.criteriaobject | array
Atsakymų variantai, kiekvienam tipui savi: „taip“ ir „ne“ aprašai noul atveju (neprivalomi), variantų žodynas choice atveju, surikiuotas lygių sąrašas score atveju.
Klausimų tipai
| Tipas | Ko klausia | Ką grąžina |
|---|---|---|
noul | Ar teiginys teisingas: taip ar ne | noul — „taip“ tikimybė nuo 0 iki 1 |
choice | Kuris iš pateiktų variantų tinka | choice, probabilities, confidence |
score | Kur state yra jūsų lygių skalėje | score, legend, probabilities, confidence |
Vienoje užklausoje galima derinti skirtingus tipus.
noul — taip arba ne
Laukas criteria neprivalomas: jame galima aprašyti, ką reiškia „taip“ (true) ir „ne“ (false). Atsakymas noul — skaičius nuo 0 (ne) iki 1 (taip).
"is_urgent": {
"type": "noul",
"instructions": "Ar tai rodo skubumą?",
"criteria": {
"true": "Aiškiai nurodyta, kad laikas svarbus",
"false": "Skubumas neišreikštas"
}
}"is_urgent": {
"type": "noul",
"noul": 0.95
}choice — varianto pasirinkimas
criteria — žodynas „variantas → aprašymas“; jei aprašymo nereikia, nurodykite null. Iki 255 variantų. Atsakyme choice — labiausiai tikėtinas variantas, probabilities — kiekvieno varianto tikimybė (suma — 1), confidence — patikimumas nuo 0 iki 1.
"department": {
"type": "choice",
"instructions": "Kuri komanda turėtų tai tvarkyti?",
"criteria": {
"billing": "Mokėjimai, sąskaitų išrašymas, pinigų grąžinimas",
"technical": "Klaidos, veikimo sutrikimai, integracijos",
"sales": "Kainodara, perėjimas prie aukštesnių planų, nauji klientai"
}
}"department": {
"type": "choice",
"choice": "billing",
"probabilities": { "billing": 0.88, "technical": 0.12, "sales": 0.0 },
"confidence": 0.81
}score — vertinimas pagal skalę
criteria — lygiai nuo žemiausio iki aukščiausio, ne daugiau kaip 10 (TypeSafe rekomenduoja bent du). Atsakyme score — pagal lygių tikimybes pasverta reikšmė (gali būti tarp lygių), legend — lygio numeris ir jo aprašymas, probabilities ir confidence. TypeSafe duomenimis, score tinka palyginti su slenksčiu, tačiau ne tiksliam skaičiui tarp lygių nustatyti.
"frustration": {
"type": "score",
"instructions": "Kiek klientas susierzinęs?",
"criteria": ["Ramus", "Susierzinęs", "Labai piktas"]
}"frustration": {
"type": "score",
"score": 1.05,
"legend": { "0": "Ramus", "1": "Susierzinęs", "2": "Labai piktas" },
"probabilities": { "0": 0.0, "1": 0.95, "2": 0.05 },
"confidence": 0.92
}Atsakymas
- modelstring
Kuri modelio versija atsakė. Pseudonimas jev-latest laikui bėgant nukreipiamas į naujas versijas: jei parinkote slenksčius
confidencekonkrečiai versijai, stebėkite šį lauką. - answersobject
Po vieną atsakymą į kiekvieną klausimą, su tais pačiais raktais. Kiekvienas atsakymas turi
type, o choice ir score — dar irconfidence. - usageobject
input_tokensiroutput_tokens. Apmokestinami tik įvesties žetonai.
Keli klausimai viena užklausa
Visus klausimus apie vieną state pateikite viena užklausa: jie vertinami lygiagrečiai, o state perduodamas vieną kartą. TypeSafe duomenimis, jų pavyzdyje su 13 klausimų viena bendra užklausa buvo 12,2 karto pigesnė ir 10 kartų greitesnė nei 13 atskirų užklausų, siunčiamų paeiliui, gaunant tokius pačius atsakymus.
Sudėtingą vertinimą geriau išskaidyti į paprastus klausimus ir atsakymus sujungti kode: pavyzdžiui, vietoj „įvertink paraišką“ — atskirai įvertinti rinką, įgyvendinamumą ir skirtumus nuo konkurentų. Tada svoriai keičiami kode, o ne klausimo tekste.
{
"model": "jev-latest",
"state": "Padėkite! Mano išmokos jau 3 dienas nevykdomos.",
"questions": {
"department": {
"type": "choice",
"instructions": "Kuri komanda turėtų tai tvarkyti?",
"criteria": {
"billing": "Mokėjimai, sąskaitų išrašymas, pinigų grąžinimas",
"technical": "Klaidos, veikimo sutrikimai, integracijos",
"sales": "Kainodara, perėjimas prie aukštesnių planų, nauji klientai"
}
},
"frustration": {
"type": "score",
"instructions": "Kiek klientas susierzinęs?",
"criteria": ["Ramus", "Susierzinęs", "Labai piktas"]
},
"is_urgent": {
"type": "noul",
"instructions": "Ar tai rodo skubumą?"
}
}
}Kada tinka
- Nukreipimas. Nusiųsti kreipimąsi reikiamam skyriui, o užklausą — reikiamam vykdytojui: paprastam kodui, dideliam modeliui ar žmogui.
- Rūšiavimas ir prioritetas. Skubumas, tonas, rizika — pagal skalę su kode nustatytais slenksčiais.
- Moderavimas ir patikros. Ar pranešimas pažeidžia taisykles, ar šaltinis patvirtina citatą, ar dokumente yra atsakymas į klausimą — prieš perduodant tekstą toliau.
- Vertinimas balais ir reitingavimas. Įvertinti dokumentus, kandidatus ar rastus fragmentus pagal savo kriterijus ir kode nuspręsti, kas bus perduota toliau.
- Vietoj nepatikimo „grąžink JSON“. Iškvietimas, kuris pagal savo sandarą grąžina tipizuotas reikšmes, o ne tekstą, kurį reikia analizuoti.
Kada netinka
- Pokalbiai, atsakymai vartotojui, teksto ar kodo generavimas. Jev nerašo teksto — tam skirti tekstiniai modeliai.
- Modelis Claude Code, Cursor ir kitiems agentams. Pakeisti agento modelį į jev-latest nepavyks: agentui reikia modelio, kuris rašo tekstą ir iškviečia įrankius. Jev galima iškviesti iš kodo, kurį agentas jums parašo.
- Aritmetika, skaičiavimas, datų palyginimas. TypeSafe duomenimis, tai patikimiau atlikti kode, o modelio klausti tik prasminės dalies — pavyzdžiui, išgauti datos dalis naudojant choice.
- Vaizdai, garsas ir vaizdo įrašai. Modelis priima tik tekstą — tokius duomenis iš anksto paverskite tekstu.
Kaina
Apmokestinami tik įvesties žetonai — laukas usage.input_tokens atsakyme: $0.084 už 1 mln. Išvesties žetonai nemokami.
Šio puslapio pavyzdžio užklausa (296 įvesties žetonai) kainuoja mažiau nei $0.0001.
Prieš užklausą Ailoot rezervuoja sumą balanse, o gavus atsakymą vieną kartą nurašo pagal faktinį naudojimą — kaip tai veikia.
Limitai
| Kas | Limitas |
|---|---|
| Visa užklausa: state ir visi klausimai | 64K žetonų |
| state kartu su ilgiausiu klausimu | 32K žetonų |
| Variantų viename choice | iki 255 |
| Lygių viename score | nuo 2 iki 10 |
| Įvestis | tik tekstas: eilutė, JSON objektas arba tekstų masyvas |
Modelio limitai pateikti pagal TypeSafe duomenis. Jūsų rakto ir balanso apribojimai taikomi kaip bet kuriam Ailoot modeliui: Klaidos ir limitai.
Klaidos
Klaidos pateikiamos bendru Ailoot API formatu: kodas, aiškus tekstas ir Request ID. Šiame metode dažniausiai pasitaiko:
| Kodas | Kada | Ką daryti |
|---|---|---|
400 invalid_request | Turinys nepraėjo patikros: nėra state, model arba questions, nežinomas type, choice turi daugiau nei 255 variantus, score — daugiau nei 10 lygių | Pataisykite užklausą pagal klaidos tekstą: nepataisyta ji vėl nepraeis patikros |
400 context_length_exceeded | state ir klausimai kartu viršija modelio limitą | Perfiltruokite state kode, palikite tik tai, ko reikia klausimams |
401 invalid_api_key | Rakto nėra arba jis neteisingas | Perduokite raktą Authorization antraštėje |
402 insufficient_balance | Nepakanka laisvo balanso rezervui | Papildykite balansą |
404 model_not_found, unsupported_endpoint | Klaidingas ID arba modelis iškviestas netinkamu metodu, pavyzdžiui, per /v1/chat/completions | jev-latest iškvieskite tik per POST /v1/systemone |
429 rate_limit_exceeded | Per daug užklausų | Palaukite tiek sekundžių, kiek nurodyta Retry-After antraštėje, ir bandykite dar kartą |
503 model_overloaded, model_unavailable | Modelis laikinai perkrautas arba neprieinamas | Jei X-Should-Retry: true — bandykite dar kartą po Retry-After nurodyto sekundžių skaičiaus; jei false — pirmiausia patikrinkite Request ID istorijoje |
504 model_timeout | Modelis laiku neatsakė | Nesiųskite užklausos iš naujo, kol nepatikrinsite Request ID istorijoje |
Visas kodų sąrašas pateiktas puslapyje Klaidos ir limitai.