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

# Overview

> Build custom training and evaluation workflows

Write custom Python recipes for training, evaluation, and other AI workflows using `adaptive_harmony`.

## Getting started

<CardGroup cols={2}>
  <Card title="Installation" icon="download" href="/v0.14/harmony/install">
    Install adaptive-harmony
  </Card>

  <Card title="Local Development" icon="laptop" href="/v0.14/harmony/harmony-client">
    Connect to compute plane for interactive development
  </Card>

  <Card title="Recipe Syntax" icon="code" href="/v0.14/harmony/recipe-syntax">
    Structure and entry points
  </Card>

  <Card title="Configuration" icon="sliders" href="/v0.14/harmony/config">
    Define recipe parameters
  </Card>
</CardGroup>

## Building recipes

<CardGroup cols={2}>
  <Card title="Models" icon="cube" href="/v0.14/harmony/models">
    Load and spawn models
  </Card>

  <Card title="Datasets" icon="database" href="/v0.14/harmony/datasets">
    Load datasets and StringThread
  </Card>

  <Card title="Graders" icon="star" href="/v0.14/harmony/graders">
    Custom reward functions
  </Card>

  <Card title="Platform Graders" icon="plug" href="/v0.14/harmony/platform-graders">
    Load graders from Adaptive
  </Card>
</CardGroup>

## Training & evaluation

<CardGroup cols={2}>
  <Card title="Training Recipes" icon="dumbbell" href="/v0.14/harmony/training">
    SFT, PPO, GRPO, DPO algorithms
  </Card>

  <Card title="Evaluation Recipes" icon="chart-bar" href="/v0.14/harmony/eval">
    Evaluate models and create artifacts
  </Card>

  <Card title="Structured Output" icon="brackets-curly" href="/v0.14/harmony/structured-output">
    JSON and constrained generation
  </Card>

  <Card title="Progress Reporting" icon="chart-line" href="/v0.14/harmony/progress">
    Track recipe progress in UI
  </Card>
</CardGroup>

## Quick reference

Upload a recipe:

```python theme={null}
adaptive.recipes.upload(
    path="/path/to/recipe.py",  # or directory
    recipe_key="my-recipe",
    name="My Training Recipe"
)
```

<Note>
  When uploading a directory, the entry point must be `main.py` and all imports must be relative (e.g., `from .utils import helper`).
</Note>

Run a recipe:

```python theme={null}
job = adaptive.jobs.run(
    recipe_key="my-recipe",
    num_gpus=2,
    args={"model": "llama-3.1-8b", "dataset": "my-data"}
)
```
