- Connect to the subject under test and send it tasks.
- Repeat runs as needed and score each one.
- Save conversations, tool calls, file changes, duration, and cost for every run.
- Compare configurations in the terminal or browser, then inspect a specific failure to see what happened.
What an eval looks like
This eval checks that a weather assistant actually callsget_weather when asked about the weather, instead of making up an answer.
What evals are for
Evals look like unit tests when you write them and work like experiments when you run them. The same set of evals can serve several purposes:- Prevent regressions: rerun after changing prompts, models, or dependencies and check whether the pass rate drops. See Rerun affected evals after changes.
- Compare alternatives: run the same evals against two models, two prompts, or with and without a Skill, then compare each case. See Write an experiment and Compare runs.
- Gate CI: make a PR fail when its evals fail. See CI integration.
- Build coverage over time: turn failures from real use into new evals so every future change checks them.
What you can evaluate
Your own AI Agent
Use AI SDK, LangGraph, Pi, or your own Agent loop, in any language. If it exposes a callable API, you can connect it with an Adapter.
Coding Agents and their extensions
Run Claude Code or Codex in a Sandbox with a real repository and task, then score it with the project’s own tests. Measure the effect of Skills, Plugins, or memory.
Any AI application, including LLM games
If your application exposes operations such as posting, replying, or NPC actions, call them directly from evals and check structured results and world state.
examples/zh/llm-x:
- Connect directly to your application
- Run in a Sandbox
NiceEval calls your Agent or application API through an Adapter. Docker is not required. Use this for conversational Agents and applications that expose business operations.
How NiceEval differs from DeepEval, LangFuse, and Braintrust
DeepEval is a mature Python evaluation framework with a broad library of metrics. NiceEval makes different choices:- Native TypeScript: evals, Adapters, and Experiments are typed TypeScript code.
- Assert what happens along the way: an Agent may need several conversation turns, tool calls, file reads, and code changes to complete a task. The final answer is only part of it. NiceEval asserts these facts directly, without requiring a golden dataset first.
- Score in a real environment: coding Agents run in a Sandbox and are scored using the project’s own tests and file changes, beyond the reply alone.
- Built for controlled experiments: separate evals from Experiments to compare models, prompts, and extensions with the same cases.
Terms you will see often
Other terms are explained where they first appear.