Skip to main content
An evaluation scores one model on the evaluation rows of a dataset. Start one for each model you want to compare, then read their metrics side by side. With SQWISH_DATASET_ID set to a dataset’s ID, this request compares two base models:
The response lists an evaluation for each model in data. Its queued count says how many started, and reused how many were already there. Name each model the way a call names it. A family such as support-router, or a model by its number such as support-router@2, works too:
In the console, choose Evaluate on custom data from Models, or Evaluate models from a dataset. Then select the dataset and one or more models. Progress and results appear on the dataset, beside earlier evaluations and fine-tuning outputs.

Manage evaluations

Sending the same selection again never retries an evaluation that failed or was cancelled. Use /retry for that.

What is reused and charged

  • Each model must be one a call could name. It can be a base model, a family that is switched on, or a model by its number whose own switch is on.
  • A family is resolved to the model it serves before work is queued.
  • Existing results or work for that model and dataset are reused. This holds in a request that also names models with no results yet.
  • Only new predictions are charged, as inference at each model’s price.
  • An evaluation never substitutes a fallback model.
  • An evaluation scores the evaluation rows of one dataset version, shown as dataset_version. So after you add rows, comparing models again makes new evaluations.
A model that joins its family gets an evaluation on its dataset too (read the gate).

Read the metrics

Read each evaluation until its status is no longer queued, running or cancelling. With the Python or TypeScript client:
metrics is null until the evaluation succeeds. For a dataset of expected answers it has accuracy, log loss and calibration error. For a dataset of outcome scores it has expected reward. A result that a fine-tune takes from its own training sent no requests, so it has no latency_ms. Compare models on the same examples. Small datasets give uncertain estimates.