Loading video...
Video Failed to Load
I built a chat bot with jev, no LLM at all! Responses are instant, no hallucinations. I hooked it up to web search, wikipedia, weather, todoist and home assistant. Jev decides what tool to call and what args to use based on the prompt. Instant answers cite sources as well!
110,921 views • 3 days ago •via X (Twitter)
42 Comments

Watch the full explainer:

TypeSafe: Jev is not a chatbot and cannot chat People: *immediately turn it into a chatbot*

is this the thing that's finally gonna make software feel better??

and I gave it access to a whole falcon-9 class rocket and it was about to launch and land!

no LLM on the chat path is the claim. when wikipedia comes back messy, does Jev still pick the next tool, or do you fall through to a language model for the sentence?

The answer is directly from the article right now. It detects a wikipedia lookup. Gets the article. Then does a second request that includes the full article where each sentence is an option for jev to choose. See their guide here:

wiki article in, each sentence as a choice. no generation on that second pass. do long pages get truncated before Jev chooses, or does every sentence go in?

@thestrabusiness pretty neat

curious how jev picks the tool and the args without an LLM in the loop. keyword rules or a tiny classifier. i tried ollama for local routing before and the arg parsing falls apart the second the prompt gets vague. whats your fallback when it cant decide which tool to fire

I pass a "choice" to jev - "Which tool would fulfil the user's latest request (taking the conversation into account)?" and the options are a dynamic list of every available tool. For arg extraction / matching on the user prompt there is a seperate question for every single available tool like: "For a weather request: which city or place does the user want the weather for? If they don't name one, pick the place from the earlier request." and the options provided are extracted from the user prompt as a list of options. Could be the prompt split on spaces, could be smarter word pairs.

I was thinking exactly the same thing about using Jev as a routing mechanism. It fits the scenario extremely well!

Nice! I've been building a similar website helper with ProgramAsWeights. It combines small neural functions for routing and answering with ordinary code controlling the flow. The functions are compiled from English descriptions and can run locally on CPU, without external model API calls. Code: Demo:

Ok this is sick

One of the tool call is a LLM? for explanations?

Nope! That's just a wikipedia lookup. Jev extracts the topic the user is asking about, queries wikipedia, then a follow up is sent to jev with the content of the wikipedia article asking which line from the article answers the user's prompt.

That sounds awesome 💪😁

How does it handle an ambiguous request between two tools? A quick clarification before changing a Home Assistant device seems more useful than forcing a route. Curious whether you use a confidence threshold or a separate “ask” outcome.

I provide an option to jev for home assistant "no device or room is mentioned at all" - this then asks for a follow up that extracts and matches the name to a device in the home. We can do a similar thing for ambiguous tool calls. Provide jev an option "More than one tool call can satisfy this request" and then give a follow up prompt to choose, OR detect high match percent in multiple tools and automatically give a follow up to the user before executing.

Cool 👍👍

Super interesting! What web search does it choose to use? 🙂

What happens if you say something like "turn the light to green then after 5 seconds turn it to red"?

I'd have to create a new "timer" tool and make it available to jev but definitely doable! Jev would just respond with which action to time delay, and how long. Then we pass that off to a background queue that invokes it when necessary. Compound requests are a bit tricky though. The smart home example from typesafe AI actually detects a compound request, passes to an llm to de-compose into individual commands. Then passes each command to jev.

Interesting. I bet your LLM could make the tool (eg. a python script), pass it back to Jev on the dissected compound step. Now you build toolkit over time automatically.

I wonder how it performs when the answer needs to be the result of thinking and deduction. Jev didn’t have thinking right?

@grok could you explain clearly and concisely what Jev is and how it differs from current LLM and explain its advantages and disadvantages.

That's pretty dope.

I like mine more

"no hallucinations"

Nice work! Quite innovative use of Jev. Getting so many ideas from this!

This is getting crazy. The implications are nuts

@CodingGarden Shared your demo on

amazing demo! thanks for sharing this!

Sir, please don't say this is not that impressive! enjoyed how fast and smooth you implemented this deterministic chat interface!

LLM을 쓰지 않고 도구 선택과 인수만 Jev가 맡는 구조라면 역할 분리가 선명하다. 출처까지 붙는 즉답형 비서가 얼마나 안정적인지 궁금해짐

No LLM in the loop and it still picks the right tool is the surprising part. Instant and boring is exactly what I want from a bot 👌

Wow this is so cool

Please please opensource!!!

Really really incredible

Impressive demo! Thanks for sharing it.

How about needle from @cactuscompute ? Zero token for tool calling.

Seems like a backward step since all the responses have to be pre-coded. Like Apple Siri, it can tell you the weather in Denver, but not much else

Hey, could you teach me how to do this? I’d really love to learn! 🙌
