Skip to content
System One

kyle-pena-nlp/jevchat

Turns Jev into a chatbot by repeatedly asking it which symbol comes next from an alphabet of options, then sampling from the returned probabilities. An experiment built by describing the sampling strategies to Claude and having it implement them.

Image from kyle-pena-nlp/jevchat
Image from github.com

kyle-pena-nlp/jevchat on GitHub

Stars
90
Forks
5
Language
Python
Last push
20 Sep 2026

Read from GitHub on . Counts change daily.

jevchat turns Jev, a model that only answers typed questions, into something that behaves like a chatbot. At every step it asks Jev a single choice question: given the user’s message and the reply written so far, which symbol comes next? The options are a fixed alphabet plus a stop token, Jev returns a probability for each one, and a sampler draws the next symbol from that distribution, appends it, and repeats until stop is drawn.

Several alphabets are available, including truncated token lists, and several sampling strategies: choice asks one question over the whole alphabet at once, while bisect sorts the alphabet and asks a series of earlier-or-later yes-no questions to narrow it down before a final choice inside the smaller group. A beam-search mode costs one score per live beam per step. While generating, a live panel shows the generation rate in symbols and characters per second, milliseconds per API call, and the top few symbols Jev scored at the last step.

The author calls this a Claude-accelerated experiment: they described the sampling algorithms to Claude and had it implement them. They’re upfront that it’s built for fun, that the cost is somewhat impractical, and that the results are hilarious.

How it uses Jev

class JevClient:
    """Calls ``POST {api_base}/systemone`` with one choice question at a time."""

    def __init__(
        self,
        api_key: str,
        *,
        model: str = "jev-latest",
        api_base: str = "https://api.typesafe.ai/v1",
        timeout: float = 60.0,
        max_retries: int = 4,
        client: httpx.Client | None = None,
    ) -> None:
        self.model = model
        self.api_base = api_base.rstrip("/")

View in jevchat/client.py

Open on GitHub

PrimitivesChoice

More like this

Keep browsing