Skip to content
SupportGo to app

Applying preferences to a dataset

Three ways to inject your preferences, instructions, or guidelines into an Adaptive Data run — universal prompts, context columns, and the brand-controls blueprint.

A common question: “How do I push my preferences into the dataset?” You have an instruction, a tone, a policy, or a piece of context that should shape what Adaptive Data produces—and you want it applied to the run, not the upstream pipeline.

There are three places to encode that, each with different scope. They’re complementary: most real runs combine at least two.

ApproachWhere it livesScope
Universal promptWeb app (columns step)One instruction applied to every row
Context columnsSDK or appPer-row supporting material
BlueprintSDK (brand_controls) or appOne brand/voice/policy applied to every generated completion

A universal prompt is a single instruction—written once—that the platform applies to every row of your dataset. It’s the right tool when every row should be processed the same way but your data doesn’t have a per-row prompt column.

For example, if every row holds a customer review and you want to classify each one, your universal prompt might be:

Classify the sentiment of this review as one of: positive, neutral, negative. Respond with one word.

The universal prompt is configured in the web app today. Walk-through: Universal prompts.

Context columns carry per-row background information, reference material, or metadata that the model needs to answer the prompt. Use them when your preferences vary row by row—a target audience, a product line, a retrieved document, an internal label—and should ride alongside each prompt.

You can tag multiple columns as context. They are passed to the model together with the prompt at generation time.

run = client.datasets.run(
dataset_id,
column_mapping={
"prompt": "instruction",
"completion": "response",
"context": ["audience", "product_line", "reference_doc"],
},
)

Use this when the preference is structured per row—different audiences for different rows, different reference passages, different policy regions. For the broader concept and the other column roles, see Column selection.

The blueprint is a freeform string injected as a system prompt on every generated completion. It’s the right tool for qualitative preferences that apply to the whole run: tone, persona, language, or any guideline that doesn’t fit a structured field.

run = client.datasets.run(
dataset_id,
column_mapping={"prompt": "instruction", "completion": "response"},
brand_controls={
"blueprint": (
"You are a customer-success assistant for Acme. "
"Answer in British English, stay warm but concise, "
"and never recommend third-party tools."
),
},
)

Blueprint sits alongside the structured brand_controls fields—length, safety_categories, hallucination_mitigation—on the same run. For the full set of brand-control options, see Brand controls.

The three approaches differ along three axes:

  • Scope — universal prompt and blueprint apply to every row; context columns are per row.
  • Where the preference lives — universal prompt and blueprint are part of the run configuration; context columns are part of your dataset.
  • What they steer — universal prompt becomes the instruction the model is asked to follow; context columns supply material the model reads; blueprint becomes a system prompt that shapes how every completion is written.

These compose:

  • Universal prompt + context columns — the instruction is constant; the per-row content varies.
  • Per-row prompts + blueprint — your dataset already has prompts; blueprint adds the brand voice on top.
  • Universal prompt + context columns + blueprint — a constant task, per-row content, and a global voice all on the same run.

Universal prompt and per-row prompt columns are alternatives: a row has either an instruction in its prompt cell, or a universal instruction supplied at run time, but not both.