Skip to main content
This page walks you through running your first eval against your own application. You write three files:
  • Adapter: tells NiceEval how to call your application.
  • Experiment: says which Adapter to run against and with which model.
  • Eval: says which message to send and what counts as correct.
There are two ways to do it. Having a Coding Agent write them is fastest; writing them yourself shows more clearly what each file is for.

Let a Coding Agent integrate it for you

1

Send the instruction to your Agent

Open the Coding Agent you use in the current project, such as Claude Code or Codex, and send this message:
The Agent first explores your project, confirms which interface to test, then writes the three files and runs them once.
2

Run it again yourself

Run with the Experiment ID the Agent listed at the end. If it did not list one, first see which Experiments exist with pnpm exec niceeval exp list:
3

See the results

The terminal lists each eval’s result, with failures first. For how to read the results, see Read the results below.

Integrate it yourself

Prepare the application under test

First start your application and confirm it has an interface you can call. The example below assumes:
  • the interface is POST http://localhost:3000/chat;
  • the request body is { "message": "...", "model": "..." };
  • the response body is { "reply": "..." }.
If your interface differs, that is fine; you only change the address, the request body, and the line that reads the reply in the Adapter. If you do not have an application you can start yet, pick a runnable project from Examples first.

Install

init creates niceeval.config.ts. It also writes a section into AGENTS.md or CLAUDE.md so your Coding Agent reads the docs that match the installed version.

Write the Adapter

The Adapter does one thing: send the eval’s messages to your application, then hand the reply back to NiceEval.
events is how NiceEval understands the reply. Here it hands back only one assistant message; later you can add events for tool calls, usage, and more.

Write the Experiment

The file name is the Experiment ID, here my-agent. To compare another model later, copy this file and change model; the evals stay the same.

Write the eval

The model’s wording changes every time, so this uses a regex to match “30 days” or “one month” instead of requiring an exact match.

Run

The terminal shows progress while it runs. When it finishes, you see output like this:
Your first eval is now running.

Read the results

The title tells you the conclusion of this run: Each failed Attempt has a line details: niceeval show @<locator> below it. Copy it to see that run’s conversation and assertions in the terminal. To see the whole run, copy the show: command in the NEXT panel; to browse the conversation and durations in the browser, copy the view: line. For more ways to view results, see View Run Results.

Next steps

This minimal Adapter only supports single-turn conversations: the second turn does not carry the first turn’s history, and tool calls are not visible. Choose based on what you need next:
  • To test multi-turn conversations, tool calls, or usage: extend the Adapter following Write send; existing evals stay unchanged.
  • To write more evals that tell results apart better: read Write Evals.
  • To compare two models or two prompt versions: read Organize Experiments.
  • To run automatically on PRs: read CI Integration.