> ## Documentation Index
> Fetch the complete documentation index at: https://docs.braintrust.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Use datasets in evaluations

> Pass datasets directly to Eval(), assign them to environments, or convert experiment results into dataset format.

Use datasets as the data source for evaluations. You can pass datasets directly or convert experiment results into dataset format.

## Pass datasets directly

Pass datasets directly to `Eval()`:

```typescript theme={"theme":{"light":"github-light","dark":"github-dark-dimmed"}}
import { initDataset, Eval } from "braintrust";
import { Levenshtein } from "autoevals";

Eval("Say Hi Bot", {
  data: initDataset("My App", { dataset: "My Dataset" }),
  task: async (input) => {
    return "Hi " + input;
  },
  scores: [Levenshtein],
});
```

```python theme={"theme":{"light":"github-light","dark":"github-dark-dimmed"}}
from autoevals import Levenshtein
from braintrust import Eval, init_dataset

Eval(
    "Say Hi Bot",
    data=init_dataset(project="My App", name="My Dataset"),
    task=lambda input: "Hi " + input,
    scores=[Levenshtein],
)
```

```csharp #skip-compile theme={"theme":{"light":"github-light","dark":"github-dark-dimmed"}}
using Braintrust.Sdk.Eval;

var braintrust = Braintrust.Sdk.Braintrust.Get();

var dataset = await braintrust.FetchDatasetAsync<string, string>("My Dataset");

using var eval = await braintrust.EvalBuilder<string, string>()
    .Name("Say Hi Bot")
    .Dataset(dataset)
    .TaskFunction(input => "Hi " + input)
    .Scorers(new FunctionScorer<string, string>(
        "exact_match",
        (expected, actual) => expected == actual ? 1.0 : 0.0))
    .BuildAsync();

await eval.RunAsync();
```

The .NET SDK fetches the named dataset from the project set in `BRAINTRUST_DEFAULT_PROJECT_NAME`. To read from a different project, use `Dataset.FetchFromBraintrustAsync`. See the [.NET API reference](https://docs.braintrust.dev/sdks/csharp/api-reference.md#braintrust-fetchdatasetasync) for details.

## Assign to environments

Environments are attached to [dataset snapshots](https://docs.braintrust.dev/annotate/datasets/manage.md#save-snapshots), not datasets directly. To assign a snapshot to an environment:

> [tab] UI
>
> 1. Go to [\*\* Datasets\*\*](https://www.braintrust.dev/app/~/datasets).
>
> 2. Open the dataset.
>
> 3. Click  **Snapshots** in the toolbar.
>
> 4. Find the snapshot you want to assign, then select **Environments**.
>
> 5. Toggle the environments in the submenu.
>
> > [!TIP]
> >
> > You can also tag and untag environments from [Loop](https://docs.braintrust.dev/loop/capabilities.md#curate-datasets) when working on a dataset page.

> [tab] API
>
> ```bash theme={"theme":{"light":"github-light","dark":"github-dark-dimmed"}}
> # 1. Create a snapshot
> curl -X POST https://api.braintrust.dev/v1/dataset_snapshot \
>   -H "Authorization: Bearer $BRAINTRUST_API_KEY" \
>   -H "Content-Type: application/json" \
>   -d '{
>     "dataset_id": "DATASET_ID",
>     "name": "prod snapshot",
>     "xact_id": "DATASET_VERSION_OR_XACT_ID"
>   }'
>
> # 2. Upsert the environment association
> curl -X PUT https://api.braintrust.dev/environment-object/dataset/DATASET_ID/ENVIRONMENT \
>   -H "Authorization: Bearer $BRAINTRUST_API_KEY" \
>   -H "Content-Type: application/json" \
>   -d '{
>     "object_version": "SNAPSHOT_XACT_ID"
>   }'
> ```

Once assigned, load the dataset for that environment in your evals:

```typescript theme={"theme":{"light":"github-light","dark":"github-dark-dimmed"}}
import { Eval, initDataset } from "braintrust";

// Load by environment
Eval("My App", {
  data: initDataset({ project: "My App", dataset: "My Dataset", environment: "production" }),
  task: async (input) => { /* ... */ },
  scores: [],
});

// Load by version name
Eval("My App", {
  data: initDataset({ project: "My App", dataset: "My Dataset", version_name: "version 1" }),
  task: async (input) => { /* ... */ },
  scores: [],
});

// Load by xact_id (less readable, but precise)
Eval("My App", {
  data: initDataset({ project: "My App", dataset: "My Dataset", version: "8234923849293849..." }),
  task: async (input) => { /* ... */ },
  scores: [],
});
```

```python theme={"theme":{"light":"github-light","dark":"github-dark-dimmed"}}
from braintrust import Eval, init_dataset

# Load by environment
Eval(
    "My App",
    data=init_dataset(project="My App", name="My Dataset", environment="production"),
    task=lambda input: ...,
    scores=[],
)

# Load by version name
Eval(
    "My App",
    data=init_dataset(project="My App", name="My Dataset", version_name="version 1"),
    task=lambda input: ...,
    scores=[],
)

# Load by xact_id (less readable, but precise)
Eval(
    "My App",
    data=init_dataset(project="My App", name="My Dataset", version="8234923849293849..."),
    task=lambda input: ...,
    scores=[],
)
```

## Convert experiment results

Convert experiment results into dataset format using `asDataset()`/`as_dataset()`. This is useful for iterative improvement workflows where you want to use the results of one experiment as the baseline for future experiments:

```typescript theme={"theme":{"light":"github-light","dark":"github-dark-dimmed"}}
import { init, Eval } from "braintrust";
import { Levenshtein } from "autoevals";

const experiment = init("My App", {
  experiment: "my-experiment",
  open: true,
});

Eval<string, string>("My App", {
  data: experiment.asDataset(),
  task: async (input) => {
    return `hello ${input}`;
  },
  scores: [Levenshtein],
});
```

```python theme={"theme":{"light":"github-light","dark":"github-dark-dimmed"}}
from autoevals import Levenshtein
from braintrust import Eval, init

experiment = braintrust.init(
    project="My App",
    experiment="my-experiment",
    open=True,
)

Eval(
    "My App",
    data=experiment.as_dataset(),
    task=lambda input: f"hello {input}",
    scores=[Levenshtein],
)
```

## Next steps

* [Run evaluations](https://docs.braintrust.dev/evaluate/run-evaluations.md) for the full evaluation workflow.
* [Track performance](https://docs.braintrust.dev/annotate/datasets/track-performance.md) to see how dataset rows perform across experiments.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.