shipwithjev

Catalog / Tools & apps

0277GitHub

jev-eval-agent

Compares LLM tool selection with Jev routing in a personal-assistant harness containing 100 mocked tools.

vinilana/jev-eval-agentREADME ↗
# jev-eval-agent

🇺🇸 English · 🇧🇷 [Leia em português](README.pt-BR.md)

A personal-assistant agent built with [eve](https://eve.dev) (Vercel), with **100 mocked tools**,
served through **OpenRouter**. The repository exists to answer one question: *how many steps does the
agent need to finish the same task when the LLM picks the tool itself vs. when
[Jev](https://docs.typesafe.ai) (TypeSafe's classifier) picks it?*

| `AGENT_MODE` | Who picks the tool | Model reasoning |
|---|---|---|
| `llm-direct` (default) | the LLM, seeing all 100 tools on every step | on (`DIRECT_REASONING`, preset default) |
| `jev-classifier` | Jev, called before **every** model step with the conversation state; only the chosen tool is exposed to the LLM, which just fills in the arguments | the minimum the endpoint accepts (`JEV_REASONING`) or off |

Everything lives on `main`; the mode is a single environment variable. Instructions, catalog, evals and UI are identical in both modes.

## How it works

```
agent/
  agent.ts              model (OpenRouter); reasoning and providerOptions depend on MODE
  mode.ts               reads AGENT_MODE (llm-direct | jev-classifier)
  instructions.md       shared system prompt
  instructions/mode.ts  extra guidance per mode (session.started)
  lib/models.ts         model presets (EVAL_MODEL)
  lib/catalog.ts        100 tools: name, description, zod schema and mock executor
  lib/world.ts          deterministic mock "world" (calendar, contacts, flights, expenses…)
  lib/jev-router.ts     builds the state from ctx.messages and asks Jev (choice with 101 options)
  lib/trace.ts          writes Jev's decisions to eval-results/jev-trace.jsonl
  tools/catalog.ts      defineDynamic: session.started → 100 tools | step.started → the 1 tool Jev picked
evals/
  prompts

Also filed under Tools & apps

  1. 0616

    Jevstiller: distill Jev calls into a local model

    A self-hosted proxy that trains a local model on Jev's answers. It served 72% of Banking77 locally at 15 ms, with a 2% audit and a bound on disagreement.

    tomerglick57 · Tools & apps · 15 ms local

  2. 0611

    Scruple: code checks for what linters miss

    Semantic-aware linting with System One models: rules you can state in a sentence, checked against your code by Jev.

    @nalexpeae · Tools & apps

  3. 0606

    Algolia-style Postgres search with a Jev reranker

    Typo tolerance, typeahead, barcodes and facet counts in plain Postgres SQL, plus an optional Jev step that asks one question per top-10 result.

    @alex_forman1 · Tools & apps

  4. 0604

    Virtual Closet: outfits from closet videos

    built a virtual closet & outfit generator from raw closet videos. classification + semantic search thanks to jev 🥰. clueless closet dreams finally coming to life

    @maitreemervana · Tools & apps