Jev – model pro rozhodování
MarkdownModel pro rozhodování Jev od TypeSafe odpovídá na typované otázky o textu nebo JSON: volba varianty, hodnocení na stupnici nebo „ano/ne“ s pravděpodobnostmi. Nejde o chat ani generování textu.
Úplný průvodce
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": "Pomoc! Už 3 dny mi neprocházejí výplaty.",
"questions": {
"is_urgent": {
"type": "noul",
"instructions": "Vyjadřuje to naléhavost?"
}
}
}' import json, os, urllib.request
body = {
"model": "jev-latest",
"state": "Pomoc! Už 3 dny mi neprocházejí výplaty.",
"questions": {
"is_urgent": {"type": "noul", "instructions": "Vyjadřuje to naléhavost?"},
},
}
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: "Pomoc! Už 3 dny mi neprocházejí výplaty.",
questions: {
is_urgent: { type: "noul", instructions: "Vyjadřuje to naléhavost?" },
},
}),
});
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 pro rozhodování třídy System One od TypeSafe. Nepíše text ani nevede dialog: předáváte stav (state) – text nebo JSON – a sadu otázek a jako odpověď dostanete typované hodnoty s pravděpodobnostmi. Na jejich základě kód rovnou větví běh, třídí a směruje, bez rozboru volného textu.
Všechny otázky jednoho požadavku se vyhodnocují paralelně a nezávisle na sobě nad stejným state. Podle údajů TypeSafe přidání otázek téměř nemění dobu odpovědi a otázky se navzájem neovlivňují.
| Co | Stručně |
|---|---|
| Model | jev-latest – alias nejnovější stabilní verze Jev; karta v katalogu |
| Metoda | POST /v1/systemone. Nejde o chat: formáty OpenAI, Anthropic a Gemini pro Jev nelze použít. Odpověď přichází celá, jako jeden JSON |
| Co přijímá | Pouze text: řetězec, objekt JSON nebo pole textů. Obrázky, zvuk a video nejprve převeďte na text |
| Kontext | 64K tokenů na požadavek – state a všechny otázky dohromady; state společně s nejdelší otázkou – až 32K |
| Jazyk | Podle údajů TypeSafe model nejpřesněji pracuje v angličtině; přijímá i jiné jazyky, ale s nižší přesností – ověřte jej na vlastních datech |
| Cena | Vstup $0.084 za 1 milion tokenů, výstup zdarma |
Požadavek
Autorizace
- Authorizationheaderpovinný
Klíč Ailoot ve tvaru
Bearer sk-….
Tělo požadavku
- modelstringpovinný
jev-latest. - statestring | object | arraypovinný
Co vyhodnotit: řetězec s textem nebo JSON – sdělení zákazníka, záznam z databáze, korespondenci, aktuální stav vaší aplikace. Objekt se srozumitelnými názvy polí je obvykle praktičtější než jeden řetězec.
- questionsobjectpovinný
Otázky. Klíče volíte vy, odpovědi přijdou pod stejnými klíči; klíč nemá vliv na odpověď – samotnou otázku zadáváte v
instructions. - questions.*.typestringpovinný
noul,choiceneboscore– viz níže. - questions.*.instructionsstring | object | arraypovinný
Samotná otázka. Dlouhou otázku s daty lze předat jako objekt: otázku v jednom poli, data v dalších; na pole odkazujte jejich názvem ve zpětných apostrofech.
- questions.*.criteriaobject | array
Varianty odpovědi, specifické pro každý typ: popisy „ano“ a „ne“ pro noul (nepovinné), slovník variant pro choice, seřazený seznam úrovní pro score.
Typy otázek
| Typ | Na co se ptá | Co vrací |
|---|---|---|
noul | Je tvrzení pravdivé: ano nebo ne | noul – pravděpodobnost „ano“ od 0 do 1 |
choice | Která z uvedených variant je vhodná | choice, probabilities, confidence |
score | Kde se state nachází na vaší stupnici úrovní | score, legend, probabilities, confidence |
Typy lze kombinovat v jednom požadavku.
noul – ano nebo ne
Pole criteria je nepovinné: můžete v něm popsat, co znamená „ano“ (true) a „ne“ (false). Odpověď noul – číslo od 0 (ne) do 1 (ano).
"is_urgent": {
"type": "noul",
"instructions": "Vyjadřuje to naléhavost?",
"criteria": {
"true": "Výslovně vyjádřená časová naléhavost",
"false": "Naléhavost není vyjádřena"
}
}"is_urgent": {
"type": "noul",
"noul": 0.95
}choice – výběr varianty
criteria – slovník „varianta → popis“; pokud popis není potřeba, uveďte null. Až 255 variant. V odpovědi choice – nejpravděpodobnější varianta, probabilities – pravděpodobnost každé varianty (součet je 1), confidence – míra jistoty od 0 do 1.
"department": {
"type": "choice",
"instructions": "Který tým by to měl řešit?",
"criteria": {
"billing": "Platby, fakturace, vracení peněz",
"technical": "Chyby, výpadky, integrace",
"sales": "Ceny, přechod na vyšší tarif, noví zákazníci"
}
}"department": {
"type": "choice",
"choice": "billing",
"probabilities": { "billing": 0.88, "technical": 0.12, "sales": 0.0 },
"confidence": 0.81
}score – hodnocení na stupnici
criteria – úrovně od nejnižší po nejvyšší, nejvýše 10 (TypeSafe doporučuje alespoň dvě). V odpovědi score – hodnota vážená pravděpodobnostmi úrovní (může ležet mezi úrovněmi), legend – číslo úrovně a její popis, probabilities a confidence. Podle údajů TypeSafe, score je vhodný pro porovnání s prahem, nikoli jako přesné číslo mezi úrovněmi.
"frustration": {
"type": "score",
"instructions": "Jak moc je zákazník frustrovaný?",
"criteria": ["Klidný", "Frustrovaný", "Velmi rozzlobený"]
}"frustration": {
"type": "score",
"score": 1.05,
"legend": { "0": "Klidný", "1": "Frustrovaný", "2": "Velmi rozzlobený" },
"probabilities": { "0": 0.0, "1": 0.95, "2": 0.05 },
"confidence": 0.92
}Odpověď
- modelstring
Která verze modelu odpověděla. Alias jev-latest postupně přechází na nové verze: pokud jste nastavili prahy
confidencepro konkrétní verzi, sledujte toto pole. - answersobject
Jedna odpověď na každou otázku, pod stejnými klíči. Každá odpověď má
type, u choice a score navícconfidence. - usageobject
input_tokensaoutput_tokens. Účtují se pouze vstupní tokeny.
Více otázek v jednom požadavku
Pokládejte všechny otázky k jednomu state v jediném požadavku: vyhodnocují se paralelně a state se předává jen jednou. Podle údajů TypeSafe byl v jejich příkladu s 13 otázkami jeden společný požadavek 12,2krát levnější a 10krát rychlejší než 13 samostatných požadavků odesílaných postupně, při stejných odpovědích.
Složité posouzení je lepší rozdělit na jednoduché otázky a odpovědi spojit v kódu: například místo „zhodnoť žádost“ – samostatná hodnocení trhu, proveditelnosti a odlišností od konkurence. Váhy se pak mění v kódu, nikoli v textu otázky.
{
"model": "jev-latest",
"state": "Pomoc! Už 3 dny mi neprocházejí výplaty.",
"questions": {
"department": {
"type": "choice",
"instructions": "Který tým by to měl řešit?",
"criteria": {
"billing": "Platby, fakturace, vracení peněz",
"technical": "Chyby, výpadky, integrace",
"sales": "Ceny, přechod na vyšší tarif, noví zákazníci"
}
},
"frustration": {
"type": "score",
"instructions": "Jak moc je zákazník frustrovaný?",
"criteria": ["Klidný", "Frustrovaný", "Velmi rozzlobený"]
},
"is_urgent": {
"type": "noul",
"instructions": "Vyjadřuje to naléhavost?"
}
}
}Kdy se hodí
- Směrování. Předat sdělení příslušnému oddělení a požadavek správnému zpracovateli: jednoduchému kódu, velkému modelu nebo člověku.
- Třídění a priorita. Naléhavost, vyznění, riziko – na stupnici, s prahy v kódu.
- Moderování a kontroly. Zda zpráva porušuje pravidla, zda zdroj potvrzuje citaci, zda dokument obsahuje odpověď na otázku – dříve, než se text předá dál.
- Hodnocení a řazení. Vyhodnotit dokumenty, kandidáty nebo nalezené úryvky podle vlastních hodnoticích kritérií a v kódu rozhodnout, co se předá dál.
- Namísto křehkého „vrať JSON“. Volání, které už svou konstrukcí vrací typované hodnoty, nikoli text, který je nutné rozebírat.
Kdy se nehodí
- Chat, odpovědi uživateli, generování textu nebo kódu. Jev nepíše text – k tomu slouží textové modely.
- Model pro Claude Code, Cursor a další agenty. Nahradit model agenta modelem jev-latest nelze: agent potřebuje model, který píše text a volá nástroje. Jev můžete volat z kódu, který pro vás agent napíše.
- Aritmetika, počítání, porovnávání kalendářních dat. Podle údajů TypeSafe je spolehlivější dělat to v kódu a modelu zadávat jen významovou část – například vyjmout části data pomocí choice.
- Obrázky, zvuk a video. Model přijímá pouze text – taková data převeďte na text předem.
Cena
Účtují se pouze vstupní tokeny – pole usage.input_tokens odpovědi: $0.084 za 1 milion. Výstupní tokeny jsou zdarma.
Požadavek z příkladu na této stránce (296 vstupních tokenů) stojí méně než $0.0001.
Před požadavkem Ailoot rezervuje částku na zůstatku a po odpovědi ji jednou strhne podle skutečné spotřeby – jak to funguje.
Limity
| Co | Limit |
|---|---|
| Celý požadavek: state a všechny otázky | 64K tokenů |
| state společně s nejdelší otázkou | 32K tokenů |
| Počet variant v jednom choice | až 255 |
| Počet úrovní v jednom score | od 2 do 10 |
| Vstup | pouze text: řetězec, objekt JSON nebo pole textů |
Limity modelu jsou podle údajů TypeSafe. Omezení vašeho klíče a zůstatku platí stejně jako pro kterýkoli model Ailoot: Chyby a limity.
Chyby
Chyby přicházejí v obecném formátu Ailoot API: kód, srozumitelný text a Request ID. U této metody se nejčastěji vyskytují:
| Kód | Kdy | Co dělat |
|---|---|---|
400 invalid_request | Tělo neprošlo kontrolou: chybí state, model nebo questions, neznámý type, u choice více než 255 variant, u score více než 10 úrovní | Opravte požadavek podle textu chyby: beze změny kontrolou znovu neprojde |
400 context_length_exceeded | state a otázky dohromady překračují limit modelu | V kódu odfiltrujte state a ponechte jen to, co otázky potřebují |
401 invalid_api_key | Klíč chybí nebo je neplatný | Předejte klíč v hlavičce Authorization |
402 insufficient_balance | Nedostatek volného zůstatku pro rezervaci | Doplňte zůstatek |
404 model_not_found, unsupported_endpoint | Chybné ID nebo model volaný nesprávnou metodou, například přes /v1/chat/completions | jev-latest volejte pouze přes POST /v1/systemone |
429 rate_limit_exceeded | Příliš mnoho požadavků | Vyčkejte tolik sekund, kolik uvádí hlavička Retry-After, a opakujte požadavek |
503 model_overloaded, model_unavailable | Model je dočasně přetížený nebo nedostupný | Pokud X-Should-Retry: true – opakujte po počtu sekund uvedeném v Retry-After; pokud false – nejprve zkontrolujte Request ID v historii |
504 model_timeout | Model neodpověděl včas | Neposílejte požadavek znovu, dokud neověříte Request ID v historii |
Úplný seznam kódů najdete na stránce Chyby a limity.