{"slug": "i-made-an-llm-using-521-jev-models", "title": "I made an LLM using 521 Jev models", "summary": "A developer built a text-generation system called Jev that assembles replies from bounded probability decisions rather than a trained language model, with the architecture scaling from V0 to V5 while the underlying Jev decision model stays frozen and untrained. Each word costs two to six requests and ten to several hundred answered questions depending on version, and batching questions into single requests is documented as about 12× cheaper and 10× faster than asking one at a time. The system was evaluated on forty forced-choice tasks across grammar, agreement, memory, reasoning and long-range dependency, with the decoder restricted to listed options so every version is scored the same way.", "body_md": "# What’s on your mind today?\n\n## There is no language model in here\n\nEvery word on this site is chosen by a network of small, bounded decisions. Nothing in the system can generate text.\n\nJev is a decision model. You hand it some state and a set of questions, and it answers all of them at once with calibrated probabilities. It has exactly three kinds of question, and a reply is assembled out of nothing else:\n\n#### Choice\n\nPick one of up to 255 labelled options. Returns a probability for every one.```\n\"cat\" 0.31\n\"dog\" 0.18\n\"the\" 0.07\n```\n#### Score\n\nPlace something on a scale you define, two to ten levels.```\nhow long should\nthe reply be?\n→ 1.0 of 2\n```\n#### Noul\n\nOne statement, one probability that it holds.```\n\"'cat' keeps this\ngrammatical\"\n→ 0.88\n```\nA word is produced by sampling from a Choice over candidate words. Everything else in the architecture exists to make that one Choice a good one.\n\n## What happens when it writes one word\n\nEach box is a batch of questions sent in a single request, so a\n          253-unit step is still only three to six round trips. The documented\n          saving for batching rather than asking one at a time is about\n          **12× cheaper and 10× faster**.\n\nOnly the decoder picks a word. Everything upstream is deciding\n          *what kind of word* should go there, and what the reply already\n          means.\n\n## The versions\n\nEach one is the same engine with more units, more state and more second-guessing. Nothing is trained — Jev is frozen. What changes between V0 and V5 is only the architecture around it. Every diagram below is live: the dots are the actual units that version runs, firing in the order it really fires them.\n\n## The word limit, and what it costs\n\nThe **max words** control next to the version picker is a ceiling,\n          not a target. It is the point at which generation is cut off; the reply\n          usually ends before reaching it, in one of two ways:\n\n#### The decoder stops\n\nEvery candidate list includes an`<end>`\n            option. When that wins, the reply is finished — the network\n            decided it was done, nothing told it to stop.\n#### The plan asks for less\n\nFrom V1 up, a Score unit decides at the start whether this deserves a short phrase, one sentence or two. Whichever is smaller — your ceiling or its answer — wins.\nIt matters because **a word is not a token,\n          it is a whole round of the network**. Every word costs two to six\n          requests and anywhere from ten to several hundred answered questions,\n          depending on the version. Eight words on V2 is about twenty requests;\n          eight words on V5 also writes three complete drafts, judges them and\n          repairs the winner. The first word is always produced, so no setting\n          can give you an empty reply.\n\n## How a word is actually chosen\n\nThe decoder gets 255 slots and fills them in priority order:\n\n#### 1 · what fits\n\nWords matching the role and inflection the syntax units settled on.\n#### 2 · what was said\n\nWords copied from your message and the reply so far. With a small vocabulary this is most of what keeps an answer on topic.\n#### 3 · everything else\n\nFrequent words, filling whatever budget is left, so a wrong guess upstream is still recoverable.\n#### 4 · `<end>`\n\nSo the decoder\n            can decide the reply is finished instead of being told.\nEach option is described by naming it —\n          *\"The next English word is 'cat' (noun, singular)\"*. Describing\n          them by part of speech instead makes every noun in the list read\n          identically, and the decision becomes impossible.\n\n## Measuring it\n\nForty forced-choice tasks in five categories — grammar, agreement, memory, reasoning and long-range dependency. Each runs the full stack over a passage and then restricts the decoder to the listed options, so every version is scored the same way.\n\nThe sharp one is long-range: *\"The keys on the table in the kitchen\n          ___ mine\"* punishes any network that agrees with the nearest noun\n          instead of the head noun. Run it from a terminal:\n\n```\npython -m chatjevs bench --arch v2\npython -m chatjevs compare --archs v0,v1,v2,v3 --limit 2\n```\n## Who made this\n\nChatJEVs is an independent experiment by **Alex**, built on TypeSafe's\n          Jev decision API. It is not affiliated with, endorsed by, or produced by\n          OpenAI or TypeSafe. The source is public — the engine, the unit\n          tables and the benchmark are all a few hundred lines of Python.", "url": "https://wpnews.pro/news/i-made-an-llm-using-521-jev-models", "canonical_source": "https://jevs.chat/", "published_at": "2026-09-21 13:29:15+00:00", "updated_at": "2026-09-21 13:54:24.095982+00:00", "lang": "en", "topics": ["large-language-models", "artificial-intelligence", "ai-research"], "entities": ["Jev", "Jev V0", "Jev V5"], "alternates": {"html": "https://wpnews.pro/news/i-made-an-llm-using-521-jev-models", "markdown": "https://wpnews.pro/news/i-made-an-llm-using-521-jev-models.md", "text": "https://wpnews.pro/news/i-made-an-llm-using-521-jev-models.txt", "jsonld": "https://wpnews.pro/news/i-made-an-llm-using-521-jev-models.jsonld"}}