Skip to main content

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

  1. Create a YAML configuration file (e.g., config.yaml) that defines your pipeline:
input:
  type: csv
  properties:
    path: source.csv  # relative path to your source file
    target_column: content
    separator: "\t"

pipeline:
  - type: split
    method: chunk
    parameters:
      size: 500

  - type: generation
    method: llm
    parameters:
      provider: openai
      model: gpt-4o-mini
      template: |
        Ask a question regarding the content.
        content: {chunk}

        Instructions :
        1. Use english only
        2. Keep it short

        question:

  - type: ablation
    method: llm-judge-binary
    parameters:
      provider: openai
      model: gpt-4o-mini
      consensus: all
      criteria:
        - Is the text written in english?
        - Is the text consistent?

output:
  type: csv
  properties:
    path: output.csv
    separator: "\t"
  1. Add a model provider:
synda provider add openai --api-key [YOUR_API_KEY]
  1. 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 three pipeline steps (as shown in the example above):

  • split: Breaks down data into chunks of defined size (method: chunk or method: split)
  • generation: Generates content using LLM models (method: llm)
  • 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:

  • 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
  • Store each node in DB
  • Add named step
  • Allow injecting params from distant step into prompt
  • Add "clean" -> "deduplicate" step
  • Allow pausing and resuming pipelines
  • Enable caching of each step's output
  • Trace each synthetic data with his historic
  • Implement custom scriptable step for developer
  • More steps...
  • Add Ollama, VLLM and transformers provider
  • Add a programmatic API
  • Use Ray for large workload

License

This project is licensed under the Apache License 2.0 - see the LICENSE file for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

synda-0.3.0.tar.gz (17.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

synda-0.3.0-py3-none-any.whl (26.9 kB view details)

Uploaded Python 3

File details

Details for the file synda-0.3.0.tar.gz.

File metadata

  • Download URL: synda-0.3.0.tar.gz
  • Upload date:
  • Size: 17.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.5 CPython/3.13.1 Darwin/24.1.0

File hashes

Hashes for synda-0.3.0.tar.gz
Algorithm Hash digest
SHA256 9afa480bbfbb1716b09092ae74bac7cafe54dd92f7e6abfd1e8ca92dbf010165
MD5 4ae500d6139fc245d65494c8be3c92ce
BLAKE2b-256 e74c525d2ab9cfa4b3a3d1d8fd965ba5a3e5b504fdf5fb4b6a033ecb9286f44b

See more details on using hashes here.

File details

Details for the file synda-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: synda-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 26.9 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

Hashes for synda-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9d68f29bde030e97b0b71501760e1bae82d4a20601761f0139863527a34b7919
MD5 db0e423e67d3bfb00ea6a33b1399d4fe
BLAKE2b-256 8ab9d6dbb7ac65df50f61e4592c92216b1e873f411c797c03d918f046d0f52d5

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page