shipwithjev

Catalog / Tools & apps

0351GitHub

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. 0573

    Support chat: agent offered a human escalation path

    A frustrated customer hits a bot loop twice; the judge checks whether a human handoff was offered.

    everyai-com · Tools & apps

  2. 0572

    Subscription cancel: effective date is explicit

    An agent cancels a subscription; the judge checks the exact date the cancellation takes effect.

    everyai-com · Tools & apps

  3. 0571

    Sales quote: numbers match the official price list

    An agent quotes $29/seat against a price list; the judge checks the quote matches exactly.

    everyai-com · Tools & apps

  4. 0570

    Refund chat: agent stated the amount before issuing it

    A support agent issues a $42.50 refund; the judge checks the exact amount was stated before the refund was confirmed.

    everyai-com · Tools & apps