authored_by="generator:<kind>", seed
recorded), routes through the dedupe gates, and returns an accounting report:
generated N, accepted M — dropped k duplicates, j malformed.
Generate QA cases from docs
generate_from_file() reads a text file and produces question-answer cases
grounded in it:
From raw text
generate_from_text() takes the source string directly (same params as
generate_from_file plus context_window):
context_window (int, default 3000) caps the characters of source included per
generation prompt; long inputs are split into overlapping chunks.
Task types
qa(default) — question/answer pairs with context excerpts. Each case hasinput(the question),expected_output(the answer), andcontext(the excerpt). Best for RAG, chatbots, and knowledge-base evaluation.summarization— document chunks with faithful reference summaries.inputis the chunk,expected_outputis the summary.hallucination— faithful-answer cases (expected_output="faithful"). Pair with theHallucinationevaluator to verify your model doesn’t fabricate.
Hallucination benchmark pairs
generate_hallucination_pairs() returns both faithful and hallucinated answer
variants — useful for building your own labeled benchmark (HaluEval-style):
Mutations (free)
CheckList-style robustness suites from cases you already have. Each mutant records its transformation and what you should expect:invariant (the model’s answer
shouldn’t materially change) or flip (the old label no longer applies — the
expectation is cleared, never silently kept).
Template grids (free)
Parametric coverage over axes you define.sample="all" is the full product
(capped at 2000); sample="pairwise" is a greedy covering array that hits every
value pair at least once.
expected_output are valid — judge evaluators score outputs without
a reference answer. No label is ever invented.
Contrast pairs
For each passing case, an LLM proposes a minimally-edited unfaithful twin, and a judge verifies the flip is real before the twin is accepted. Rejected twins are counted in the report, not kept. Twins share apair_id with their source case,
so downstream comparisons are genuinely paired.
Simulation transcripts as datasets
multivon-eval simulate ... --export-cases cases.jsonl turns persona conversation
transcripts into conversation-shaped EvalCases (empty transcripts are skipped
and counted). See the simulate guide.
CLI
Tips
- Start small — generate 10-20 cases first, review them, then scale up.
- Use your actual docs — cases from your real content catch real problems.
- Mix with manual cases — generated cases cover breadth; manual cases cover the edge cases you already know about.
- Task choice matters —
qafor RAG,summarizationfor summarization pipelines,hallucinationto stress-test faithfulness.

