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

# Overview

> Example rows for SFT and DPO

A dataset is a versioned JSONL file of example rows, with no grader. SFT and DPO train on a dataset, which holds finished answers to learn from. GRPO and distillation train on an [environment](https://docs.trymonte.ai/environments/overview.md), which scores attempts. A training run names its dataset with `--data`.

| Kind | `--kind` | Row contents | Method |
| - | - | - | - |
| Demonstrations | `sft` | A prompt and the answer to copy | [SFT](https://docs.trymonte.ai/training/sft.md) |
| Preference pairs | `preference` | A prompt, a preferred answer, and a rejected answer | [DPO](https://docs.trymonte.ai/training/dpo.md) |

Rows can come from a file the team already has, from a generator ([Synthetic Data](https://docs.trymonte.ai/datasets/synthetic-data.md)), or from real data with personal details removed ([Anonymization](https://docs.trymonte.ai/datasets/anonymization.md)).

## Write Demonstration Rows

A demonstration row holds `input` and `output`:

```json theme={null}
{"input": "How do I reset my password?", "output": "On the login page, click Forgot Password and enter your email. The reset link expires in 1 hour."}
```

A row can instead hold a `messages` list of chat turns, which Monte uses as it is:

```json theme={null}
{"messages": [{"role": "system", "content": "Answer from the knowledge base, or escalate the ticket."}, {"role": "user", "content": "How do I reset my password?"}, {"role": "assistant", "content": "On the login page, click Forgot Password..."}]}
```

## Write Preference Rows

A preference row holds `prompt`, `chosen`, and `rejected`. `prompt` can be text or a list of chat turns.

```json theme={null}
{"prompt": "Which plan gives me 1TB of storage?", "chosen": "The Pro plan: 1TB of storage on 5 devices, for $19/mo.", "rejected": "We have Basic, Pro and Business plans. Please check the pricing page."}
```

## Add a Dataset

```bash theme={null}
monte dataset add support-replies --from-file demos.jsonl --kind sft
monte dataset add support-prefs --from-hf example-org/support-tickets@main --file prefs.jsonl --kind preference
```

The command checks every row against the format of its kind. A bad row stops the add, and the error names the line. Columns with other names map with the key flags, such as `--input-key`. [Dataset Commands](https://docs.trymonte.ai/commands/datasets.md#monte-dataset-add) lists them.

Each add makes a new immutable version in artifact storage: `support-replies@1`, then `support-replies@2`. A bare name means the newest version. A run records the exact version it trained on.

## The Overlap Record

Every add compares the rows against every eval environment in artifact storage, and records each eval whose task text appears in the rows. The check finds exact matches of 40 characters or more, not rewritten tasks. The record is a warning: the add always completes, and `monte train` shows the record again when a run uses the dataset.

## List and Show Datasets

```bash theme={null}
monte dataset list --stored
monte dataset show support-replies@1
```

`monte dataset show` prints the rows, origin, kind, and overlap record, and checks the rows against their hash.


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