Skip to main content

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.