Skip to main content
The clip above builds an experiment on a customer support dataset: a prompt column runs the ten rows, an LLM Answer Match evaluator scores each answer against the expected output, and the column header reads the pass rate, 70 percent on this run.
Let your agent set this up. Copy the evaluations prompt into your coding agent to get started automatically.
An experiment is a table. Each row is a dataset entry, and each column is a prompt, an agent, a comparison or an evaluator that runs on that entry. An evaluator attached to a prompt or an agent column scores the output of that column. You build the table in the workbench, run it, and read the pass rate per column.
The experiments workbench with a dataset, a prompt column with outputs and an evaluator chip with pass and fail results

When to use experiments

  • Check that a prompt change does not regress quality before you deploy it.
  • Compare two prompts, two models or two agent configurations on the same dataset.
  • Gate a deployment on a quality threshold from your CI pipeline.
  • Test an evaluator itself against a dataset with known answers before you use it in production.

Create an experiment

  1. Open Experiments and click New Experiment, then Create Experiment. The workbench opens with a generated name. Click the name to rename it.
  2. Under Datasets, click Add and pick Select existing dataset, Upload CSV or Create new. You can edit cells inline. A dataset created inside the workbench stays there until you pick Save as dataset from its tab menu.
  3. Under Prompts or Agents, click Add. The Add to Evaluation drawer offers four columns: Prompt, Agent, Comparison and Evaluator.
  4. On a prompt or agent column, click Add evaluator and pick a saved evaluator, or create one from the evaluator categories: Expected Answer, LLM as Judge, RAG Quality, Quality Aspects, Safety, Custom (Code) and Custom (from Workflow).
The Choose Evaluator Category drawer with the five categories and the two custom entries
The Add to Evaluation drawer with the Prompt, Agent, Comparison and Evaluator cards
The workbench autosaves. History lists the saved versions, and Restore writes an old setup forward as a new version.

Map evaluator inputs

Every evaluator declares the fields it reads, for example input, output, expected_output or contexts. The Variables section of the evaluator editor maps each field to a source: the output of the column it is attached to, or a dataset column. LangWatch fills the mapping for you when the names match. A dataset column named expected_output, expected_answer or ground_truth maps to the evaluator’s expected_output field; the column output maps to output. A field that stays unmapped shows Required, and the run button reads Configure missing mappings first until you map it.

Run

Run in the header runs every column on every row. The play button on a column header runs that column only, the button on a cell runs one row, and the toolbar that appears when you select rows runs the selection. While a run is in progress the button reads Stop. Run Options sets the concurrency and the row height, and Automation shows the request that triggers this experiment from a pipeline. See Run experiments from CI/CD.

Read the results

Each cell shows the column output, and each evaluator chip shows its verdict. Click a chip to open its Result block with the status, the score or the label when the evaluator returns one, and the details, for example the reason an LLM judge gave. The same popover has Rerun, Run on all rows and Edit Configuration. The column header shows the pass rate for the column. Hover over it to open the summary: Rows, Pass Rate, Avg Latency, Total Cost, Execution Time, and one line per evaluator with its pass rate or average score.
The column summary popover with rows, pass rate, average score, latency, cost and the per-evaluator breakdown

Compare runs

Results in the header opens the results page for the experiment. The Experiment Runs sidebar lists every run, newest first. Tick two runs to see them side by side: one chart per metric (cost, latency, and the pass rate of each evaluator) and, per row, both outputs with their evaluator chips, so you can check that a change fixed the failing rows without breaking the passing ones.
The results page with two experiment runs compared side by side

Run experiments from code

The Python and TypeScript SDKs run the same loop from a notebook or a script: load a dataset, call your application on each row, and log evaluator results to an experiment in LangWatch. See Experiments via SDK.

Next steps

Answer correctness

LLM-as-a-judge

Comparison

Run from CI/CD

Prompt optimization with Langy

Datasets

Last modified on September 8, 2026