Nudge

Variants

Define multiple prompt variants for A/B testing.

A/B Testing with Variants

Define multiple variants of a prompt for A/B testing. Each variant adds additional steps to the base prompt, giving you explicit control over what differs between variants.

prompt("summarizer", (p) =>
  p
    .persona("expert summarizer")
    .input("text to summarize")
    .output("concise summary")
    // Define variants - each adds steps to the base prompt
    .variant("short", (v) =>
      v.constraint("keep the summary to 1-2 sentences maximum")
    )
    .variant("detailed", (v) =>
      v
        .do("explain the context and background")
        .do("include specific examples where relevant")
    )
);

How it works

  • Base prompt: persona + input + output
  • Variant "short": base + constraint (1-2 sentences)
  • Variant "detailed": base + do (context) + do (examples)

Each variant generates a separate prompt via the AI, ensuring meaningful differences.

Using variants at runtime

// Variant names are typed!
summarizerPrompt.toString({ variant: "short" });
summarizerPrompt.toString({ variant: "detailed" });

// List available variants
console.log(summarizerPrompt.variantNames); // ["short", "detailed"]

A/B testing

const variants = summarizerPrompt.variantNames;
const randomVariant = variants[Math.floor(Math.random() * variants.length)];
summarizerPrompt.toString({ variant: randomVariant });

Variant names are fully typed—TypeScript will autocomplete available options and error on invalid ones.

On this page