What is scored
Every score compares text. No model grades an answer, because a model asked whether an answer is right judges how fluent it is, not whether your content supports it.
A question passes when its abstention is right and, for a question that should be answered, every check above holds. The pass rate is the share of questions that passed.
These checks count shared words. They cannot tell a paraphrase that contradicts a passage from one
that agrees with it, so read the answers behind any surprising pass.
The eval-set file
The console, the API and the command line read the same file:evals.json
question is required. A case may name up to 10 facts and 5 sources. In the console, Download file saves the set you built and Import file loads one; the set is also kept in your browser while you edit it.
In the console
- Open Settings → Answer quality.
- Add questions, with the facts and sources a right answer has, or import a file.
- Choose the assistant and select Run. Questions are asked one at a time, so you see progress.
- Each question shows Pass or Fail and the reason. Select Show answer to read the answer and its sources.
Kept sets and runs (Beta)
Under the questions, Kept sets and runs (Beta) keeps a set on the platform under a name, runs it again whenever you like, and lists the runs newest first with their pass rate, so you can watch quality move across a change to your knowledge or to the assistant.- Add the questions, enter a Set name and select Keep this set.
- Select Run beside the set. The platform scores it a few questions at a time and the screen asks again until the run is done, so you see it finish. A run that cannot go on (no model, the model unreachable, the allowance used) is listed as Could not go on with what it scored.
- Each run shows of passed, the set it ran and when it started.
404 and Settings → Answer quality shows only what is above. Access on request.
The API is POST and GET /assistants/{assistant_id}/eval-sets, POST /assistants/{assistant_id}/eval-sets/{set_id}/runs (no body starts a run; {"run_id"} scores the next cases) and GET /assistants/{assistant_id}/eval-runs.
From the API
POST /assistants/{assistant_id}/evals takes the same cases, up to 10 per request.
In CI
Run the file against an assistant withflask mithunai-evals run on the API host:
0 at or above --min-pass-rate (default 1.0), 1 below it, and 2 when it could not run. Add --json for the API’s response shape.