Come usare
- Copia il comando e controlla il pacchetto prima di installarlo nel tuo ambiente agente.
- Controlla strumenti, credenziali e ambienti richiesti nel documento originale.
- Descrivi input e risultato desiderato; confronta l’output con le fonti.
npx skills add https://github.com/svngoku/coding-agents-skills --skill adaption-aiPrima di iniziare
- L’installazione non include abbonamenti, quote API o accesso ai file.
- Stelle e installazioni indicano attività, non un test indipendente di qualità o sicurezza.
Contenuto dal repository con titoli, esempi, codice, tabelle, link e immagini preservati.
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 adaptionfrom adaption import Adaption
client = Adaption(api_key="pt_live_...") # or set ADAPTION_API_KEY env varAsync 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") # custom name
dataset_id = result.dataset_idHugging 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", # required
"completion": "response", # optional
# "chat": "conversation", # optional — alternative to prompt+completion
# "context": ["source", "ref"],# optional — list of context columns
},
# --- Optional controls (see references/ for details) ---
brand_controls={...},
recipe_specification={...},
job_specification={...},
estimate=True, # dry-run: get cost quote without starting
)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, # chain-of-thought in completions
"deduplication": True, # remove near-duplicates
"preference_pairs": True, # DPO chosen/rejected pairs
"prompt_rephrase": True, # rephrase prompts for variety
"prompt_metadata_injection": True, # inject context into prompts
},
"version": "...", # optional schema version
}Job Specification (job_specification)
job_specification={
"max_rows": 500, # subsample for pilots
"idempotency_key": "...", # safe retries
}Wait, Evaluate, Export
from adaption import DatasetTimeout
# Wait (exponential backoff 2s→30s, default timeout 1hr)
try:
status = client.datasets.wait_for_completion(dataset_id, timeout=600)
except DatasetTimeout as e:
print(f"Still running after {e.timeout}s")
# Evaluate quality
ev = client.datasets.get_evaluation(dataset_id)
# ev.status: pending | running | succeeded | failed | skipped
# ev.quality.score_before, ev.quality.score_after, ev.quality.improvement_percent
# Download
url = client.datasets.download(dataset_id) # presigned S3 URLWhen 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=Truebefore real run - Poll after HF/Kaggle import: ingestion is async; wait for
row_count is not None - Evaluation lags adaptation: run may show
succeededbefore eval finishes — pollget_evaluationseparately - Combine controls freely:
brand_controls+recipe_specification+job_specificationall compose on onedatasets.run()call
Anti-Patterns to Avoid
- Running a real job without estimating first — on large datasets, always call with
estimate=Trueand checkestimated_credits_consumedbefore spending budget - Reading results right after HF/Kaggle import — ingestion is async; wait until
row_count is not Nonebefore running a job, or you'll process an empty dataset - Treating run completion as evaluation completion — the run can show
succeededwhile the evaluation is stillrunning; pollget_evaluationseparately - Retrying without an `idempotency_key` — naive retries on network errors create duplicate jobs; set
job_specification.idempotency_key - Missing the `prompt` key in `column_mapping` — it is required; jobs fail with confusing errors when the mapping is incomplete
When to Use / Not Use
Use this skill when:
- Generating synthetic training data or augmenting existing datasets for fine-tuning
- Building DPO preference pairs, reasoning traces, or grounded (hallucination-mitigated) training data
- Working with the Adaption Python SDK (
pip install adaption) or the adaptionlabs.ai API
Do NOT use this skill when:
- The data only needs simple cleaning/formatting — a local pipeline is cheaper
- The work must stay fully on-premises with no external platform dependency
- You are not using Adaption's platform — use the generic dataset pipelines of the framework you're already on



