Jev – model za odločanje
MarkdownModel za odločanje Jev podjetja TypeSafe odgovarja na tipizirana vprašanja o besedilu ali JSON: izbira možnosti, ocena na lestvici ali »da/ne« z verjetnostmi. To ni klepet ali generiranje besedila.
Celoten vodnik
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": "Na pomoč! Izplačila mi že 3 dni ne uspevajo.",
"questions": {
"is_urgent": {
"type": "noul",
"instructions": "Ali to sporočilo izraža nujnost?"
}
}
}' import json, os, urllib.request
body = {
"model": "jev-latest",
"state": "Na pomoč! Izplačila mi že 3 dni ne uspevajo.",
"questions": {
"is_urgent": {"type": "noul", "instructions": "Ali to sporočilo izraža nujnost?"},
},
}
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: "Na pomoč! Izplačila mi že 3 dni ne uspevajo.",
questions: {
is_urgent: { type: "noul", instructions: "Ali to sporočilo izraža nujnost?" },
},
}),
});
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 je model za odločanje razreda System One podjetja TypeSafe. Ne piše besedila in ne vodi pogovora: posredujete stanje (state) – besedilo ali JSON – in nabor vprašanj, v odgovoru pa prejmete tipizirane vrednosti z verjetnostmi. Na njihovi podlagi koda takoj razveji izvajanje, razvršča in usmerja, brez razčlenjevanja prostega besedila.
Vsa vprašanja iste zahteve se ocenijo vzporedno in neodvisno drugo od drugega glede na isti state. Po podatkih TypeSafe dodajanje vprašanj skoraj ne spremeni odzivnega časa, vprašanja pa ne vplivajo drugo na drugo.
| Kaj | Na kratko |
|---|---|
| Model | jev-latest – vzdevek najnovejše stabilne različice Jev; kartica v katalogu |
| Metoda | POST /v1/systemone. To ni klepet: formati OpenAI, Anthropic in Gemini niso primerni za Jev. Odgovor prispe v celoti kot en JSON |
| Kaj sprejema | Samo besedilo: niz, objekt JSON ali polje besedil. Slike, zvok in video najprej pretvorite v besedilo |
| Kontekst | 64K žetonov na zahtevo – state in vsa vprašanja skupaj; state skupaj z najdaljšim vprašanjem – do 32K |
| Jezik | Po podatkih TypeSafe model najnatančneje deluje v angleščini; druge jezike sprejema, vendar je natančnost nižja – preverite na svojih podatkih |
| Cena | Vhod $0.084 za 1 milijon žetonov, izhod brezplačen |
Zahteva
Avtentikacija
- Authorizationheaderobvezno
Ključ Ailoot v obliki
Bearer sk-….
Telo zahteve
- modelstringobvezno
jev-latest. - statestring | object | arrayobvezno
Kaj ocenjevati: niz z besedilom ali JSON – sporočilo stranke, zapis iz podatkovne zbirke, korespondenco, trenutno stanje vaše aplikacije. Objekt z razumljivimi imeni polj je običajno priročnejši od enega niza.
- questionsobjectobvezno
Vprašanja. Ključe izberete sami, odgovori pa prispejo pod istimi ključi; ključ ne vpliva na odgovor – samo vprašanje je določeno v
instructions. - questions.*.typestringobvezno
noul,choicealiscore– glejte spodaj. - questions.*.instructionsstring | object | arrayobvezno
Samo vprašanje. Dolgo vprašanje s podatki lahko posredujete kot objekt: vprašanje v enem polju, podatke v drugih; na polja se sklicujte z imenom v obrnjenih narekovajih.
- questions.*.criteriaobject | array
Možnosti odgovora, različne za vsako vrsto: opisa »da« in »ne« pri noul (neobvezno), slovar možnosti pri choice, urejeni seznam ravni pri score.
Vrste vprašanj
| Vrsta | Kaj sprašuje | Kaj vrne |
|---|---|---|
noul | Ali trditev drži: da ali ne | noul – verjetnost odgovora »da« od 0 do 1 |
choice | Katera od navedenih možnosti ustreza | choice, probabilities, confidence |
score | Kje je state na vaši lestvici ravni | score, legend, probabilities, confidence |
Vrste lahko kombinirate v eni zahtevi.
noul – da ali ne
Polje criteria je neobvezno: v njem lahko opišete, kaj pomenita »da« (true) in »ne« (false). Odgovor noul – število od 0 (ne) do 1 (da).
"is_urgent": {
"type": "noul",
"instructions": "Ali to sporočilo izraža nujnost?",
"criteria": {
"true": "Izrecno časovno nujno",
"false": "Nujnost ni izražena"
}
}"is_urgent": {
"type": "noul",
"noul": 0.95
}choice – izbira možnosti
criteria – slovar »možnost → opis«; če opisa ne potrebujete, navedite null. Največ 255 možnosti. V odgovoru choice – najverjetnejša možnost, probabilities – verjetnost vsake možnosti (vsota je 1), confidence – zanesljivost od 0 do 1.
"department": {
"type": "choice",
"instructions": "Katera ekipa naj to obravnava?",
"criteria": {
"billing": "Plačila, izdajanje računov, vračila",
"technical": "Napake, izpadi, integracije",
"sales": "Cene, nadgradnje, nove stranke"
}
}"department": {
"type": "choice",
"choice": "billing",
"probabilities": { "billing": 0.88, "technical": 0.12, "sales": 0.0 },
"confidence": 0.81
}score – ocena na lestvici
criteria – ravni od najnižje do najvišje, največ 10 (TypeSafe priporoča vsaj dve). V odgovoru score – vrednost, utežena glede na verjetnosti ravni (lahko je med ravnmi), legend – številka ravni in njen opis, probabilities in confidence. Po podatkih TypeSafe je score primeren za primerjavo s pragom, ne pa za natančno število med ravnmi.
"frustration": {
"type": "score",
"instructions": "Kako nezadovoljna je stranka?",
"criteria": ["Mirna", "Nezadovoljna", "Zelo jezna"]
}"frustration": {
"type": "score",
"score": 1.05,
"legend": { "0": "Mirna", "1": "Nezadovoljna", "2": "Zelo jezna" },
"probabilities": { "0": 0.0, "1": 0.95, "2": 0.05 },
"confidence": 0.92
}Odgovor
- modelstring
Katera različica modela je odgovorila. Vzdevek jev-latest sčasoma preide na nove različice: če ste pragove
confidenceprilagodili določeni različici, spremljajte to polje. - answersobject
En odgovor za vsako vprašanje, pod istimi ključi. Vsak odgovor ima
type, pri choice in score pa šeconfidence. - usageobject
input_tokensinoutput_tokens. Obračunajo se samo vhodni žetoni.
Več vprašanj v eni zahtevi
Vsa vprašanja za isti state pošljite v eni zahtevi: ocenijo se vzporedno, state pa se posreduje samo enkrat. Po podatkih TypeSafe je bila v njihovem primeru s 13 vprašanji ena skupna zahteva 12,2-krat cenejša in 10-krat hitrejša kot 13 ločenih zahtev, poslanih zaporedno, pri enakih odgovorih.
Zapleteno presojo je bolje razdeliti na preprosta vprašanja in odgovore združiti v kodi: na primer, namesto »oceni vlogo« ločeno ocenite trg, izvedljivost in razlike glede na konkurente. Uteži nato spreminjate v kodi, ne v besedilu vprašanja.
{
"model": "jev-latest",
"state": "Na pomoč! Izplačila mi že 3 dni ne uspevajo.",
"questions": {
"department": {
"type": "choice",
"instructions": "Katera ekipa naj to obravnava?",
"criteria": {
"billing": "Plačila, izdajanje računov, vračila",
"technical": "Napake, izpadi, integracije",
"sales": "Cene, nadgradnje, nove stranke"
}
},
"frustration": {
"type": "score",
"instructions": "Kako nezadovoljna je stranka?",
"criteria": ["Mirna", "Nezadovoljna", "Zelo jezna"]
},
"is_urgent": {
"type": "noul",
"instructions": "Ali to sporočilo izraža nujnost?"
}
}
}Kdaj je primeren
- Usmerjanje. Sporočilo stranke pošljite ustreznemu oddelku, zahtevo pa ustreznemu izvajalcu: preprosti kodi, velikemu modelu ali človeku.
- Razvrščanje in prednost. Nujnost, ton, tveganje – na lestvici, s pragovi v kodi.
- Moderiranje in preverjanje. Ali sporočilo krši pravila, ali vir potrjuje navedek, ali dokument vsebuje odgovor na vprašanje – preden besedilo nadaljuje pot.
- Ocenjevanje in razvrščanje. Dokumente, kandidate ali najdene odlomke ocenite po svojih merilih in v kodi odločite, kaj bo šlo naprej.
- Namesto nezanesljivega »vrni JSON«. Klic, ki že po zasnovi vrne tipizirane vrednosti, namesto besedila, ki ga je treba razčleniti.
Kdaj ni primeren
- Klepet, odgovori uporabniku, generiranje besedila ali kode. Jev ne piše besedila – za to so na voljo besedilni modeli.
- Model za Claude Code, Cursor in druge agente. jev-latest ne morete uporabiti namesto agentovega modela: agent potrebuje model, ki piše besedilo in kliče orodja. Jev lahko kličete iz kode, ki jo agent napiše za vas.
- Aritmetika, štetje, primerjava datumov. Po podatkih TypeSafe je to zanesljiveje izvesti v kodi, model pa vprašati le po pomenskem delu – na primer, prek choice izluščiti dele datuma.
- Slike, zvok in video. Model sprejema le besedilo – takšne podatke vnaprej pretvorite v besedilo.
Cena
Obračunajo se samo vhodni žetoni – polje usage.input_tokens odgovora: $0.084 za 1 milijon. Izhodni žetoni so brezplačni.
Zahteva iz primera na tej strani (296 vhodnih žetonov) stane manj kot $0.0001.
Ailoot pred zahtevo rezervira znesek na računu, po odgovoru pa ga bremeni enkrat glede na dejansko porabo – kako deluje.
Omejitve
| Kaj | Omejitev |
|---|---|
| Celotna zahteva: state in vsa vprašanja | 64K žetonov |
| state skupaj z najdaljšim vprašanjem | 32K žetonov |
| Možnosti v enem choice | do 255 |
| Ravni v enem score | od 2 do 10 |
| Vhod | samo besedilo: niz, objekt JSON ali polje besedil |
Omejitve modela so navedene po podatkih TypeSafe. Omejitve vašega ključa in stanja veljajo enako kot pri kateremkoli modelu Ailoot: Napake in omejitve.
Napake
Napake prispejo v skupnem formatu Ailoot API: koda, razumljivo besedilo in Request ID. Pri tej metodi so najpogostejše:
| Koda | Kdaj | Kaj storiti |
|---|---|---|
400 invalid_request | Telo ni prestalo preverjanja: manjka state, model ali questions, neznan type, pri choice več kot 255 možnosti, pri score več kot 10 ravni | Zahtevo popravite glede na besedilo napake: brez popravka ponovno ne bo prestala preverjanja |
400 context_length_exceeded | state in vprašanja skupaj presegajo omejitev modela | Filtrirajte state v kodi in pustite le podatke, ki jih vprašanja potrebujejo |
401 invalid_api_key | Ključ manjka ali je napačen | Ključ pošljite v glavi Authorization |
402 insufficient_balance | Za rezervacijo ni dovolj prostih sredstev | Dodajte sredstva |
404 model_not_found, unsupported_endpoint | ID je napačen ali je model poklican z napačno metodo, na primer prek /v1/chat/completions | jev-latest kličite le prek POST /v1/systemone |
429 rate_limit_exceeded | Preveč zahtev | Počakajte toliko sekund, kot je navedeno v glavi Retry-After, in ponovite |
503 model_overloaded, model_unavailable | Model je začasno preobremenjen ali nedostopen | Če je X-Should-Retry: true – ponovite po številu sekund, navedenem v Retry-After; če je false – najprej preverite Request ID v zgodovini |
504 model_timeout | Model ni odgovoril pravočasno | Zahteve ne pošljite ponovno, dokler ne preverite Request ID v zgodovini |
Celotni seznam kod najdete na strani Napake in omejitve.