A CLI for generating synthetic data
Project description
Synda
[!WARNING] This project is in its very early stages of development and should not be used in production environments.
[!NOTE] PR are more than welcome. Check the roadmap if you want to contribute or create discussion to submit a use-case.
Synda (synthetic data) is a package that allows you to create synthetic data generation pipelines. It is opinionated and fast by design, with plans to become highly configurable in the future.
Installation
Synda requires Python 3.10 or higher.
You can install Synda using pip:
pip install synda
Usage
- Create a YAML configuration file (e.g.,
config.yaml) that defines your pipeline:
input:
type: csv
properties:
path: tests/stubs/simple_pipeline/source.csv
target_column: content
separator: "\t"
pipeline:
- type: split
method: chunk
name: chunk_faq
parameters:
size: 500
# overlap: 20
- type: split
method: separator
name: sentence_chunk_faq
parameters:
separator: .
keep_separator: true
- type: generation
method: llm
parameters:
provider: openai
model: gpt-4o-mini
template: |
Ask a question regarding the sentence about the content.
content: {chunk_faq}
sentence: {sentence_chunk_faq}
Instructions :
1. Use english only
2. Keep it short
question:
- type: clean
method: deduplicate-tf-idf
parameters:
strategy: fuzzy
similarity_threshold: 0.9
keep: first
- type: ablation
method: llm-judge-binary
parameters:
provider: openai
model: gpt-4o-mini
consensus: all # any, majority
criteria:
- Is the question written in english?
- Is the question consistent?
output:
type: csv
properties:
path: tests/stubs/simple_pipeline/output.csv
separator: "\t"
- Add a model provider:
synda provider add openai --api-key [YOUR_API_KEY]
- Generate some synthetic data:
synda generate config.yaml
Pipeline Structure
The Nebula pipeline consists of three main parts:
- Input: Data source configuration
- Pipeline: Sequence of transformation and generation steps
- Output: Configuration for the generated data output
Available Pipeline Steps
Currently, Synda supports four pipeline steps (as shown in the example above):
- split: Breaks down data into chunks of defined size (
method: chunkormethod: split) - generation: Generates content using LLM models (
method: llm) - clean: Delete the duplicated data (
method: deduplicate-tf-idf) - ablation: Filters data based on defined criteria (
method: llm-judge-binary)
More steps will be added in future releases.
Roadmap
The following features are planned for future releases.
Core
- Implement a Proof of Concept
- Implement a common interface (Node) for input and output of each step
- Add SQLite support
- Add setter command for provider variable (openai, etc.)
- Store each execution and step in DB
- Add "split" -> "separator" step
- Add named step
- Store each Node in DB
- Add "clean" -> "deduplicate" step
- Allow injecting params from distant step into prompt
- Retry logic for LLM steps
- Move input into pipeline (step type: 'load')
- Move output into pipeline (step type: 'export')
- Allow pausing and resuming pipelines
- Trace each synthetic data with his historic
- Enable caching of each step's output
- Implement custom scriptable step for developer
- Add Ollama, VLLM and transformers provider
- Use Ray for large workload
- Batch processing logic (via param.) for LLMs steps
- Add a programmatic API
Steps
- loader: Hugging Face datasets
- loader: .xls format
- chunk: Semantic chunks
- clean: embedding deduplication
- ablation: LLMs as a juries
- masking: NER (GliNER)
- masking: Regexp
- masking: PII
Ideas
- translations (SeamlessM4T)
- speech-to-text
- text-to-speech
- metadata extraction
- tSNE / PCA
- custom steps?
License
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file synda-0.4.0.tar.gz.
File metadata
- Download URL: synda-0.4.0.tar.gz
- Upload date:
- Size: 20.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.5 CPython/3.13.1 Darwin/24.1.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
50c3b6a5fef22d49c21833bf0017d4207a252ceaf6da7ec47051ff7023bf2730
|
|
| MD5 |
f840e25f99499ff7ca19f1c2176cb7d7
|
|
| BLAKE2b-256 |
66343e299d3465a34180ed608b13c58409053411fa8f62c8b73ea94055853468
|
File details
Details for the file synda-0.4.0-py3-none-any.whl.
File metadata
- Download URL: synda-0.4.0-py3-none-any.whl
- Upload date:
- Size: 32.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.5 CPython/3.13.1 Darwin/24.1.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
324d5d14c15c106d34ee69ea30ef2c80dd1323898d7db7576cfb71abcca9650c
|
|
| MD5 |
360dcfa272d2144d754d9061ffc47f4a
|
|
| BLAKE2b-256 |
80790852868e90393d51592f4eefd24dbebe675d17127a6ad97c8a76aa11b105
|