| name | adaption-ai |
| description | Adaption AI SDK for synthetic data augmentation and dataset adaptation. Use when building data pipelines with the Adaption Python SDK, uploading datasets (local files, Hugging Face, Kaggle), running augmentation/adaptation jobs, configuring brand controls (hallucination mitigation, safety categories, length), recipe specifications (reasoning traces, deduplication, preference pairs, prompt rephrase), evaluating dataset quality, downloading results, or any workflow involving `pip install adaption`, `from adaption import Adaption`, Adaptive Data, or the adaptionlabs.ai API. Also trigger when the user mentions synthetic data generation for fine-tuning, dataset augmentation pipelines, DPO preference pair generation, or grounding-based hallucination reduction on training data. |
Adaption AI SDK Skill
Build dataset augmentation pipelines with Adaption's Adaptive Data platform. This skill covers the full lifecycle: ingest → adapt → wait → evaluate → export.
Quick Reference
pip install adaption
from adaption import Adaption
client = Adaption(api_key="pt_live_...")
Async client: from adaption import AsyncAdaption
Core Lifecycle
- Ingest — Upload local file, import from HuggingFace, or import from Kaggle
- Adapt — Start an augmentation run with column mapping + optional controls
- Wait — Poll for completion with exponential backoff
- Evaluate — Fetch quality metrics (score_before/after, improvement %)
- Export — Download augmented dataset via presigned URL
Ingest Methods
Local file upload
Supported formats: .csv, .json, .jsonl, .parquet
result = client.datasets.upload_file("training_data.csv")
result = client.datasets.upload_file("data.csv", name="my-dataset")
dataset_id = result.dataset_id
Hugging Face import (async on server — poll before running)
resp = client.datasets.create_from_huggingface(
url="https://huggingface.co/datasets/org/repo",
files=["train.csv"],
)
Kaggle import (requires Kaggle API creds registered in Adaption settings)
resp = client.datasets.create_from_kaggle(
url="https://www.kaggle.com/datasets/org/dataset-name",
files=["data.csv"],
)
Running Adaptation Jobs
datasets.run() — the central method
Required: dataset_id, column_mapping with at least "prompt" key.
run = client.datasets.run(
dataset_id,
column_mapping={
"prompt": "instruction",
"completion": "response",
},
brand_controls={...},
recipe_specification={...},
job_specification={...},
estimate=True,
)
Response fields: run.run_id, run.estimated_credits_consumed, run.estimated_minutes
Brand Controls (brand_controls)
| Key | Type | Purpose |
|---|
hallucination_mitigation | bool | Web-search grounding to reduce fabricated content |
length | "minimal"│"concise"│"detailed"│"extensive" | Target verbosity |
safety_categories | list[str] | Content categories to enforce (e.g. ["harassment","hate"]) |
Recipe Specification (recipe_specification)
recipe_specification={
"recipes": {
"reasoning_traces": True,
"deduplication": True,
"preference_pairs": True,
"prompt_rephrase": True,
"prompt_metadata_injection": True,
},
"version": "...",
}
Job Specification (job_specification)
job_specification={
"max_rows": 500,
"idempotency_key": "...",
}
Wait, Evaluate, Export
from adaption import DatasetTimeout
try:
status = client.datasets.wait_for_completion(dataset_id, timeout=600)
except DatasetTimeout as e:
print(f"Still running after {e.timeout}s")
ev = client.datasets.get_evaluation(dataset_id)
url = client.datasets.download(dataset_id)
When to read more
| Need | Read |
|---|
| Full run parameters, all API endpoints, HTTP/curl examples | references/api-reference.md |
| Hallucination mitigation, safety, length, reasoning traces guides | references/guides.md |
| End-to-end scripts (upload→adapt→evaluate→download) | scripts/e2e_pipeline.py |
| Async patterns | scripts/async_pipeline.py |
Key Patterns
- Always estimate first on large datasets:
estimate=True before real run
- Poll after HF/Kaggle import: ingestion is async; wait for
row_count is not None
- Evaluation lags adaptation: run may show
succeeded before eval finishes — poll get_evaluation separately
- Combine controls freely:
brand_controls + recipe_specification + job_specification all compose on one datasets.run() call