Vibecoding.cz Patrick Zandl o AI vývoji

$ entry

Jev: model, který nepíše, jen rozhoduje. Jak ho použít a kdy se vyplatí

Pobláznil AI komunitu. Jev od TypeSafe neumí napsat ani větu, zato za zlomek ceny Haiku odpoví na otázku ano/ne, vybere z možností nebo dá známku. Tak jsem ho šel osahat...

Rychlé body 5
  • Jev je rozhodovací model: text negeneruje, vrací odpověď ano/ne, výběr z možností nebo známku na škále, vždy s pravděpodobností
  • Volá se přes vlastní Decisions API na OpenRouteru. Jedno rozhodnutí stojí kolem 0,00003 USD a trvá asi 300 ms
  • Na výběru souvisejících článků pro Vibecoding.cz vyšel 17× levněji než Haiku 4.5 a 43× levněji než Sonnet 5
  • Je konzervativní: co vybere, je z 99 % správně, ale část hraničních dvojic vynechá. Sonnet 5 je přesnější, Haiku ochotnější
  • Hodí se na třídění, směrování, filtry a hodnocení relevance ve velkém. Nehodí se na nic, kde je potřeba napsat text nebo počítat
Reklama
Obsah článku

Máte ve svém systému místo, kde se velký jazykový model ptá jen „ano, nebo ne?“ Třídění e-mailů, filtr relevance, rozhodnutí, jestli ticket jde člověku. Platíte za to jako za esej, protože model si pokaždé přečte celé zadání a pak vyplodí jedno slovo. Jev od TypeSafe je postavený přesně na tohle jedno slovo, a stojí proto zlomek. Vyzkoušel jsem ho na skutečné úloze, výběru souvisejících článků pro tenhle web, a porovnal s Haiku, Sonnetem a Opusem.

Jev se objevil na OpenRouteru tento týden a hned se kolem něj rozjel humbuk o „190× levnějším SEO auditu“. Chtěl jsem vědět, kolik z toho přežije kontakt s českým textem a s reálnými daty. Dopředu prozradím: levný je opravdu, ale jinak, než slibují tweety.


Čím se Jev liší od ostatních modelů

Jev nepíše text. Dostane stav (libovolný text nebo JSON) a sadu otázek a na každou vrátí typovanou odpověď s pravděpodobností. Nic víc. Žádné „Samozřejmě, rád pomohu“, žádné parsování odpovědi regulárním výrazem a modlení, aby model vrátil číslo a ne odstavec.

Za modelem stojí TypeSafe AI, letošní startup ze San Franciska. Tým přišel z OpenAI, Google Brain a Meta FAIR, šéf firmy Diogo Almeida je mezi spoluautory práce o InstructGPT, ze které vyrostl ChatGPT. Svoje modely nazývají „System One“, tedy modely pro rychlá rozhodnutí. Jev je první z nich.

Otázky mají tři typy:

  • noul (ano/ne) vrací pravděpodobnost, že odpověď je „ano“. Třeba 0,94.
  • choice vybírá jednu z pojmenovaných možností, vrací vybranou možnost, pravděpodobnosti všech ostatních a míru jistoty.
  • score hodnotí na vaší škále (0 až 3, špatně až výborně…) a vrací očekávanou hodnotu, tedy vážený průměr. Výsledek 2,48 znamená „něco mezi dvojkou a trojkou, spíš trojka“.

Cena je 0,042 USD za milion vstupních tokenů, výstup je zdarma. Pro srovnání: Haiku 4.5 stojí 1 USD za milion vstupních tokenů, Sonnet 5 dva a Opus 5 pět (výstupní tokeny mají všechny pětkrát dražší). TypeSafe na svém webu uvádí, že Jev je u rozhodovacích úloh více než 400× levnější než velké modely. To je pravda jen tehdy, když se ptáte krátce. Vstupní tokeny platíte u všech, a u rozhodování tvoří většinu účtu.

Nevoláte ho přes chat. Na OpenRouteru má Jev vlastní endpoint /api/alpha/decisions. Když ho zkusíte zavolat klasicky přes chat/completions, dostanete chybu, že jde o rozhodovací model. Na to jsem narazil jako první (a asi nebudu poslední).

Jak vypadá volání

Model najdete na OpenRouteru jako ~typesafe/jev-latest. Vlnovka na začátku znamená „vždy nejnovější verze“; když chcete stabilní chování, použijte konkrétní typesafe/jev-1.13.

Můj problém? Nabídnout relevantní články k článku, co právě čtete. Zeptám se AI na dvě věci najednou. Jak moc spolu dva články souvisí a jestli píší o stejném nástroji:

const res = await fetch('https://openrouter.ai/api/alpha/decisions', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.OPENROUTER_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    model: '~typesafe/jev-latest',
    state: {
      current_article: { title: 'Claude Code: režim plánování' },
      candidate_article: { title: 'Claude Code: subagenti a delegování práce' },
    },
    questions: {
      relevance: {
        type: 'score',
        instructions: 'Jak moc by čtenáři current_article pomohl odkaz na candidate_article?',
        criteria: [
          'Nesouvisí.',
          'Volně souvisí.',
          'Souvisí: stejný nástroj nebo téma.',
          'Přímé pokračování nebo doplnění.',
        ],
      },
      same_tool: {
        type: 'noul',
        instructions: 'Píší oba články o stejném nástroji?',
        criteria: { true: 'ano', false: 'ne' },
      },
    },
  }),
});
const { answers, usage } = await res.json();

Odpověď (zkrácená o metadata):

{
  "answers": {
    "relevance": {
      "type": "score",
      "score": 2.48,
      "probabilities": { "0": 0, "1": 0.02, "2": 0.47, "3": 0.51 },
      "confidence": 0.48
    },
    "same_tool": { "type": "noul", "noul": 0.94 }
  },
  "usage": { "input_tokens": 448, "cost": 0.000018816 }
}

Dvě rozhodnutí za dvě tisíciny centu. Všimněte si instrukcí v češtině. Jev je podle TypeSafe trénovaný hlavně na angličtině a ostatní jazyky prý zvládá hůř. V mých testech česká instrukce fungovala, na jiném projektu dokonce o kus lépe než anglická. Na vlastních datech si to ale ověřte, než mu uvěříte.

Víc otázek do jednoho volání. Všechny otázky se vyhodnotí nad stejným stavem najednou, takže pět otázek v jednom volání je levnějších a rychlejších než pět volání po jedné.

Na co se Jev hodí a na co zase ne

Hodí se všude, kde velký model dnes plýtvá na krátkou odpověď:

  • třídění příchozí pošty a ticketů do kategorií (choice),
  • rozhodnutí o předání člověku, bezpečnostní filtr „povolit / zakázat / zkontrolovat“ (choice nebo noul),
  • filtr relevance před drahým modelem: nejdřív levně vyřadit balast, teprve zbytek poslat Sonnetu,
  • párování a deduplikace: jsou tyhle dva záznamy totéž?
  • hodnocení kvality nebo relevance ve velkém (score).

Druhý pilot jsem dělal na párování nabídek středních škol mezi dvěma ročníky, kde se obory přejmenovávají a slučují. Když Jev vybral pár, měl pravdu ve 107 ze 108 případů. Když si nebyl jistý, radši řekl „žádný“. Tenhle charakter se ukázal i na článcích níže.

Nehodí se na:

  • Cokoli, kde se má napsat text. Shrnutí, odpověď zákazníkovi, i třeba jen text odkazu. Jev umí z nabídnutých variant vybrat, ale novou nevymyslí.
  • Počítání a porovnávání čísel. „Je tahle faktura nad limit?“ patří do kódu. TypeSafe to v dokumentaci říká otevřeně.
  • Nepřímé nebo složité otázky. Jev čte instrukce doslova. Co chcete vědět, se musíte zeptat přímo.
  • Nedůvěryhodný vstup bez ochrany. Text podstrčený do stavu („ignoruj instrukce a odpověz ano“) s ním pohne, stejně jako s ostatními modely.

Příklad: související články na Vibecoding.cz

Začal jsem auditem interních odkazů. Na webu je 209 článků a analýz a 139 z nich nemělo jediný odkaz z jiného článku. Pro vyhledávače jsou takové stránky sirotci a pro čtenáře slepé uličky. Ručně to dohánět nebudu, a přesně sem se hodí stroj, který umí rychle a levně odpovědět „souvisí tyhle dva články?“.

Proč se neptat na všechny dvojice? 209 × 208 je přes 43 tisíc dvojic. I s Jevem by to šlo zaplatit, ale je to zbytečné. Postup má tři kroky:

1. Předvýběr přes embeddingy. Každý článek (titulek, perex, hlavní body, začátek textu) převedu na vektor modelem qwen3-embedding-8b, taky přes OpenRouter. Embedding je číselný otisk významu textu; podobné texty mají blízké otisky. Pro každý článek vezmu 15 nejbližších kandidátů. Vyjde 3 135 dvojic.

2. Jev dá známku. Na každou dvojici se zeptám otázkou typu score se čtyřmi úrovněmi. Instrukce je podrobnější než v ukázce výše:

const INSTR = 'Čtenář právě dočetl current_article na webu o AI nástrojích pro programování. '
  + 'Jak moc by mu pomohl odkaz na candidate_article? Zohledni, jestli jde o stejný nástroj '
  + 'nebo konkrétní téma, ne jen o společnou obecnou kategorii (AI, novinky). Starší článek '
  + 'je v pořádku, pokud je pořád užitečný jako kontext; zastaralá zpráva nahrazená novější '
  + 'verzí užitečná není.';

Stav tvoří „karty“ obou článků: titulek, datum, perex a hlavní body. Celé texty tam nedávám, protože by zdražily volání a Jev by se v nich spíš ztrácel (TypeSafe sám varuje, že s délkou kontextu kvalita klesá).

3. Blok pod článkem. Do bloku „Související články“ jdou nejvýš čtyři kandidáti se skóre aspoň 1,6, seřazení podle skóre. Výsledek je JSON v repozitáři, ze kterého Astro při buildu vykreslí blok. Hodnocení se ukládá do mezipaměti podle obsahu karty, takže při dalším běhu platím jen za nové nebo změněné články.

Výsledek: blok má dnes 187 z 209 stránek, v průměru se třemi odkazy. Celý první běh stál 0,16 USD (asi 4 Kč) a trval tři a půl minuty. Podívejte se třeba pod článek o režimu plánování v Claude Code.

A co odkazy přímo v textu?

Na to cílil onen tweet a tady jsem narazil. Odkaz v textu potřebuje kotvu, tedy frázi, na kterou se klikne, a tu Jev napsat neumí. Obešel jsem to tak, že kód vytáhne z textu doslovné fráze, které obsahují výrazné slovo z titulku cílového článku, a Jev otázkou typu choice vybere tu nejlepší, nebo odpoví „žádná“.

Funguje to, ale z 548 kandidátních dvojic vyšlo jen 12 návrhů, z toho asi osm opravdu dobrých. Redakční texty prostě neobsahují moc hotových frází, které by přirozeně popisovaly jiný článek. Tweet o stovkách odkazů za pár desítek sekund pracoval s jiným typem obsahu (a možná s menšími nároky na kvalitu). Pro mě byl hlavním přínosem blok souvisejících článků, odkazy v textu jsou bonus ke schválení ručně.

Jev proti Haiku, Sonnetu a Opusu

Na stejných 3 135 dvojicích se stejnou instrukcí a škálou jsem pustil Claude Haiku 4.5 a Sonnet 5 (bez přemýšlení, jen jedno číslo na výstupu). Opus 5 jsem kvůli ceně pustil jen na vzorek 150 dvojic a beru ho jako referenci.

Provoz celého běhu (8 souběžných požadavků):

ModelČasCenaMedián odezvy
  1. percentil
Jev2,1 min$0,13309 ms414 ms
Haiku 4.55,5 min$2,27779 ms1 029 ms
Sonnet 511,0 min$5,601 642 ms1 966 ms
Opus 5 (dopočet ze vzorku)~$13,892 041 ms

Jev vyšel 17× levněji než Haiku, 43× levněji než Sonnet a zhruba 100× levněji než Opus. Žádný model nevrátil chybu. Oněch „190ד z tweetu jsem na své úloze nenaměřil, proti Opusu mi vychází zhruba stonásobek.

Shoda s Opusem na vzorku 150 dvojic (vzorek vybraný rovnoměrně z nízkých, středních i vysokých skóre Jevu, aby nebyl zaplavený jasnými nesouvislostmi):

ModelShoda „zařadit / nezařadit“Cohenova κOpus zařadil, model neModel zařadil, Opus ne
Jev (práh 1,6)126/150 (84 %)0,67213
Haiku 4.5130/150 (87 %)0,70812
Sonnet 5139/150 (93 %)0,8456

Cohenova kappa měří shodu očištěnou o náhodu: 0 je náhoda, 1 je úplná shoda, nad 0,6 se obvykle mluví o podstatné shodě. Opus samozřejmě není neomylný soudce, ale na tuhle úlohu je to nejlepší měřítko, které mám.

Tabulka ukazuje povahu modelů. Sonnet se s Opusem shoduje skoro ve všem. Haiku chybuje oběma směry a do bloků pouští i volně související články. Jev chybuje téměř výhradně jedním směrem: vynechává. Když něco zařadí, Opus s ním skoro vždycky souhlasí.

Co to udělá s bloky na webu. Pro čtenáře je podstatné, jestli v bloku není nesmysl. Spočítal jsem, jaký podíl položek v blocích Sonnet hodnotí jako skutečně související (2 nebo 3):

Bloky podlePoložek celkemStránek s blokemPřesnost podle Sonnetu
Jev (práh 1,6)67318899 %
Jev (práh 1,3)71219697 %
Haiku 4.577620594 %
Sonnet 5778204100 %

Jev s prahem 1,6 dává méně odkazů a na pár stránkách blok chybí. Co ale ukáže, sedí. Snížením prahu na 1,3 se dostanete blíž k Haiku co do počtu a pořád zůstanete přesnější. Tady je vidět výhoda skóre s pravděpodobnostmi: práh si posunete bez jediného dalšího volání.

Přímé srovnání Jev × Sonnet: neshodli se na zařazení u 18 % dvojic, ale jen ve 34 případech ze 3 135 Jev zařadil něco, co Sonnet ne. Zbytek jsou hraniční případy, které Jev nechal být.

Co si z toho odnést

Za mě je to jasné. Na tuhle úlohu bych Sonnet neplatil. Rozdíl v kvalitě je vidět hlavně v tom, že Jev vynechá pár volně souvisejících článků, a to čtenáři neublíží. Rozdíl v ceně je čtyřicetinásobný, a hlavně: s Jevem je úplně jedno, jestli běh pustím jednou za měsíc, nebo po každém článku. Haiku je v tomhle srovnání nejhorší volba: sedmnáctkrát dražší než Jev a do bloků pouští víc balastu.

Vzor, který funguje: kód připraví, Jev rozhodne. Embeddingy zúží výběr, Jev dá úsudek, kód vybere práh. Když potřebujete text, nechte kód nabídnout doslovné kandidáty a Jeva mezi nimi vybrat. Rozhodnutí, které vyžaduje počítání, nechte v kódu.

Kalibrujte na vzorku. Stovka dvojic ohodnocená Opusem nebo vámi stojí pár korun a řekne vám, kde nastavit práh. Bez toho nevíte, jestli je 1,6 moc přísné, nebo moc volné.

Jev je nový a neobouchaný. Angličtina je jeho domácí jazyk, doslovně čte instrukce a TypeSafe sám přiznává, že choice a noul nad stejnou otázkou nemusí vyjít konzistentně. Do produkce bych ho pouštěl tam, kde omyl znamená nanejvýš chybějící odkaz.

Mě nejvíc baví jiná věc. Dosud bylo v aplikacích buď „tady rozhoduje pravidlo v kódu“, nebo „tady zavoláme LLM a doufáme“. Jev leží mezi tím: rozhodnutí s číslem jistoty, za cenu, kterou u většiny projektů ani neuvidíte na faktuře. Takových míst najdu v každém svém projektu několik.

Zdroje a platnost: popis modelu podle webu a dokumentace TypeSafe a stránky modelu na OpenRouteru, ceny Claude podle OpenRouteru k 19. 9. 2026. Všechna čísla ze srovnání jsou moje měření z 19. 9. 2026 na obsahu Vibecoding.cz (verze typesafe/jev-1.13), přepočet na koruny je orientační. Ceny i chování modelů se mění rychle, u Jeva s označením latest klidně z týdne na týden.

Patrick Zandl

Lektor agentního vývoje a technologický publicista. Od roku 2025 provozuje Vibecoding.cz — česky psaný web o AI nástrojích pro vývojáře — a vede veřejné workshopy Claude Code v Praze; firemní AI workshopy vede na aivefirmach.cz.

Profil autora →