DatasetSpec, and let the pipeline bind records to scenario risk types. This page explains how datasets become probes and how provenance is tracked across the full evaluation.
Two evaluation modes
Promptbeat supports two ways to use a dataset inside an evaluation run.Direct mode
Dataset entries are used as-is as test cases. Each record becomes a test input without any generation step. Use this mode for fast smoke tests and refusal regression checks where you want exact, reproducible prompts.
Dataset-steered generation
Dataset entries become seeds that a generator model expands into scenario-specific probes. The raw prompt is treated as an example or framing hint, not a final input. Use this mode for stronger red-team exploration that reaches target-specific surfaces.
Evaluation pipeline
Every dataset-driven run follows the same pipeline, regardless of which mode you choose:- Download raw dataset files into
datasets/raw. - Define a
DatasetSpecthat maps prompt, ID, and category fields. - Load records with
DatasetSeedLoader— each record becomes a typedSeed. - Apply a
DatasetRiskMappingto bind seeds to scenario risk types. - Generate or directly evaluate Promptfoo test cases.
- Report by dataset, category, risk type, plugin, and provider.
Dataset subscriptions
Instead of configuring each dataset individually per run, you define a subscription YAML that groups named sources into reusable baselines. Promptbeat loads these at startup and resolves the seed pool before generation or direct eval begins. Below is the completesubscriptions/safety-baseline.yaml that ships with Promptbeat:
subscriptions/safety-baseline.yaml
Setting the datasets directory
Promptbeat resolves raw dataset files relative to the directory set byPROMPTBEAT_DATASETS_DIR. Set this before running any dataset-backed evaluation:
Dataset provenance
Promptbeat records the origin of every seed so you can trace any generated case or report row back to its source record. Each seed carries ametadata block that survives through generation, evaluation, and final report output.
dataset— the local dataset name it came fromrecordId— the original row identifier from the raw filecategory— the source dataset’s category label before risk mappingsource— the stringdatasetto distinguish from hand-written seeds