Data Forge
Manage synthetic fine-tuning dataset generation.
Access it as client.data_forge on a Strongly client, or the same path on AsyncStrongly with await. All methods exist on both with identical signatures.
Methods
All methods
analytics
analytics(project_id: str) -> DataForgeAnalytics
Get comprehensive analytics for a project.
Args: project_id: The project ID.
available_models
available_models() -> List[Dict[str, Any]]
List AI models available for generation/validation.
bulk_action_pairs
bulk_action_pairs(project_id: str, *, action: str, pair_ids: Optional[List[str]] = None, filters: Optional[Dict[str, Any]] = None) -> Dict[str, Any]
Perform a bulk action on pairs.
Args:
project_id: The project ID.
action: Action to perform (accept, reject, delete, reset).
pair_ids: Specific pair IDs to act on.
filters: Filter criteria to select pairs (alternative to pair_ids).
cancel_generation
cancel_generation(generation_id: str) -> Dict[str, Any]
Cancel a running generation job.
Args: generation_id: The generation ID.
create_project
create_project(*, name: str, description: Optional[str] = None) -> DataForgeProject
Create a new Data Forge project.
Args: name: Project name (required). description: Project description.
delete_document
delete_document(project_id: str, document_id: str) -> None
Delete a document and its parsed chunks.
Args: project_id: The project ID. document_id: The document ID.
delete_project
delete_project(project_id: str) -> None
Delete a Data Forge project and all its data.
export_dataset
export_dataset(project_id: str, *, format: str = "chatml", include_system_prompt: bool = True, min_quality_score: Optional[float] = None) -> DataForgeExport
Export accepted pairs as a training dataset.
Args:
project_id: The project ID.
format: Export format (chatml or alpaca).
include_system_prompt: Include system prompt in ChatML output.
min_quality_score: Minimum quality score filter (0.0-1.0).
Returns: Export metadata with download URL and version number.
generation_logs
generation_logs(generation_id: str, *, tail: int = 200) -> Dict[str, Any]
Get logs for a generation run.
Args: generation_id: The generation ID. tail: Number of recent log entries to return.
list_chunks
list_chunks(project_id: str, *, document_id: Optional[str] = None, page: int = 1, page_size: int = 50) -> Dict[str, Any]
List parsed chunks for a project.
Args: project_id: The project ID. document_id: Optionally filter by document. page: Page number (1-based). page_size: Results per page.
list_documents
list_documents(project_id: str) -> List[DataForgeDocument]
List all documents in a project.
Args: project_id: The project ID.
list_generations
list_generations(project_id: str) -> List[DataForgeGeneration]
List all generation runs for a project.
Args: project_id: The project ID.
list_pairs
list_pairs(project_id: str, *, status: Optional[str] = None, generation_id: Optional[str] = None, search: Optional[str] = None, page: int = 1, page_size: int = 50) -> Dict[str, Any]
List generated Q&A pairs for a project.
Args:
project_id: The project ID.
status: Filter by review status (pending, accepted, rejected, edited).
generation_id: Filter by generation run.
search: Full-text search in question/answer.
page: Page number (1-based).
page_size: Results per page.
Returns:
Dict with pairs list, total, page, page_size.
list_projects
list_projects(*, status: Optional[str] = None, search: Optional[str] = None, limit: Optional[int] = None) -> SyncPaginator[DataForgeProject]
List Data Forge projects with pagination.
Args: status: Filter by project status. search: Search by name or description. limit: Maximum number of items to return (default: all matching items).
parse_documents
parse_documents(project_id: str) -> Dict[str, Any]
Start parsing/chunking all documents in a project.
Args: project_id: The project ID.
Returns: Dict with generation_id and status.
register_document
register_document(project_id: str, *, filename: str, content_type: str, file_size: int, s3_key: str) -> DataForgeDocument
Register a document after uploading to S3.
Args:
project_id: The project ID.
filename: Document filename.
content_type: MIME type.
file_size: File size in bytes.
s3_key: The S3 key returned from get_upload_url.
retrieve_export
retrieve_export(project_id: str, version: int) -> DataForgeExport
Get download URL for a specific export version.
Args: project_id: The project ID. version: Export version number.
retrieve_generation
retrieve_generation(generation_id: str) -> DataForgeGeneration
Get a single generation run by ID.
Args: generation_id: The generation ID.
retrieve_project
retrieve_project(project_id: str) -> DataForgeProject
Get a single Data Forge project by ID.
start_generation
start_generation(project_id: str, *, teacher_model_id: str, output_format: str = "qa", pairs_per_chunk: Optional[int] = None, difficulty_distribution: Optional[Mapping[str, Any]] = None, system_prompt: Optional[str] = None, temperature: Optional[float] = None, style_template: Optional[str] = None, thresholds: Optional[Mapping[str, Any]] = None) -> DataForgeGeneration
Start generating synthetic Q&A pairs from parsed chunks.
Args:
project_id: The project ID.
teacher_model_id: Teacher model ID used to generate pairs (see available_models).
output_format: Generation type / output format, e.g. qa.
pairs_per_chunk: How many pairs to generate per chunk.
difficulty_distribution: Free-form difficulty mix as fractions, e.g. {"easy": 0.3, "medium": 0.5, "hard": 0.2}.
system_prompt: Custom system prompt for the teacher LLM.
temperature: Sampling temperature for the teacher model.
style_template: Style template applied to generated pairs.
thresholds: Free-form auto-filter thresholds, e.g. {"min_quality_score": 0.7, "min_grounding_score": 0.7}.
update_chunk
update_chunk(project_id: str, chunk_id: str, *, content: Optional[str] = None, **kwargs) -> Dict[str, Any]
Update a chunk's content.
Args: project_id: The project ID. chunk_id: The chunk ID. content: Updated chunk text.
update_pair
update_pair(pair_id: str, *, status: Optional[str] = None, question: Optional[str] = None, answer: Optional[str] = None, reviewer_notes: Optional[str] = None, **kwargs) -> Dict[str, Any]
Update a Q&A pair (edit content or change review status).
Args:
pair_id: The pair ID.
status: New review status (accepted, rejected, pending).
question: Updated question text.
answer: Updated answer text.
reviewer_notes: Reviewer notes.
update_project
update_project(project_id: str, *, name: Optional[str] = None, description: Optional[str] = None, default_config: Optional[Mapping[str, Any]] = None) -> DataForgeProject
Update a Data Forge project.
Args: project_id: The project ID. name: New project name. description: New project description. default_config: Default generation config applied to new generations (free-form).
upload_url
upload_url(project_id: str, *, filename: str, content_type: str) -> Dict[str, Any]
Get a presigned S3 URL for direct browser upload.
Args:
project_id: The project ID.
filename: Name of the file being uploaded.
content_type: MIME type (e.g. application/pdf).
Returns:
Dict with upload_url and s3_key.