Python library for generating synthetic data with LLMs
Project description
LLM Synthetic Data Generator
This project provides a flexible framework for generating synthetic data using various language models (LLMs) such as OpenAI, Gemini, Perplexity, and LLaMA. Users can specify the LLM they want to use and the type of fake data they need (e.g., name, address, job, credit card, etc.).
Features
- Supports multiple LLMs: OpenAI, Gemini, Perplexity, LLaMA.
- Generates a wide range of synthetic data types including names, addresses, job titles, credit card info, phone numbers, and more.
- Easily extendable to support additional LLMs or data types.
- Centralized
DataPromptsclass to manage prompts for different data types. - User-friendly interface to choose the desired LLM and data type.
Supported Data Types
The following data types can be generated:
- Address
- Automotive
- Bank
- Barcode
- Color
- Company
- Credit Card
- Currency
- Date/Time
- Emoji
- File
- Geo (Geographic Location)
- Internet (IP, Domain, URL)
- ISBN
- Job
- Lorem Ipsum
- Miscellaneous
- Passport
- Person
- Phone Number
- Profile
- Python Code Snippets
- SBN (Standard Book Number)
- SSN (Social Security Number)
Installation
You can install with any package manager:
- Pip
pip install fake-data-agents
- Poetry
poetry add fake-data-agents
- uv
uv add fake-data-agents
To set up the project locally, follow these steps:
1. Clone the repository
git clone https://github.com/your-username/fake-data-agents.git
cd fake-data-agents
2. Install dependencies
Make sure you have Python 3.12 installed. Install the required dependencies with uv:
uv sync
Dependencies include:
openai(for OpenAI API)- Any other relevant LLM libraries (if using Gemini, Perplexity, LLaMA, etc.)
3. Set up API keys
For each LLM you plan to use, make sure you have the appropriate API keys. You can store them in environment variables for easy access.
4. Run the program
You can start the synthetic data generation by running the faker.py file:
python3 src/fake_data_agents/faker.py
You can also import generate_fake_data from faker.py in your project. It accepts llm type and the datatype you want to generate as arguments
Usage
To generate synthetic data, you can use the generate_fake_data function from the faker.py module.
-
Import the function:
from faker import generate_fake_data
-
Call the function with the required arguments:
llm_type: The language model you want to use (e.g., "OpenAI", "Gemini", "Perplexity", "LLaMA").data_type: The type of synthetic data to generate (e.g., "person", "address", "job", "credit card", etc.).n_samples: The number of synthetic samples to generate.
Example:
generate_fake_data(llm_type="openai", data_type="person", n_samples=10)
Store API keys for your chosen LLM in .env file.
The function will return and/or display the generated synthetic data based on the provided input.
Adding New Data Types
To add new data types, modify the DataPrompts class in data_prompts.py by adding a new key-value pair for the new data type:
class DataPrompts:
prompts = {
# Existing prompts...
"new_data_type": "Generate a random new data type description.",
}
Adding New LLMs
To add a new LLM, create a new class in llm_recipes.py that implements the generate method for interacting with the new LLM API:
class NewLLMRecipe(LLMRecipe):
def generate(self, prompt: str):
# Implement the API call for the new LLM
return "New LLM-generated response"
Then, register this new LLM class in the RecipeManager:
self.llm_classes = {
"openai": OpenAIRecipe,
"gemini": GeminiRecipe,
"perplexity": PerplexityRecipe# Add the new LLM here
}
Future Improvements
- UI/CLI Enhancements: Create a more interactive command-line interface (CLI) or graphical user interface (GUI).
- LLM Benchmarking: Add functionality to compare the performance and quality of the different LLMs for generating specific data types.
- Extended Data Types: Add more data types or improve the complexity of existing prompts (e.g., full user profiles, company financial data).
Contributing
If you'd like to contribute to this project, feel free to fork the repository and submit a pull request. You can also open issues if you encounter any problems or have feature requests.
To contribute:
- Fork the project.
- Create a feature branch:
git checkout -b feature/your-feature. - Commit your changes:
git commit -m 'Add your feature'. - Push to the branch:
git push origin feature/your-feature. - Open a pull request.
License
This project is licensed under the MIT License. See the LICENSE file for more information.
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
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 fake_data_agents-0.3.0.tar.gz.
File metadata
- Download URL: fake_data_agents-0.3.0.tar.gz
- Upload date:
- Size: 4.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.4.24
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a09a40ea04ef9398276f0f29412ca201dbd7214a459c27f0e4054e9496543bae
|
|
| MD5 |
952075bbcf4b8da40b621cd20924021d
|
|
| BLAKE2b-256 |
115b300792c852951db2c4d7c586167b869d4190926f163fca50522ad93afbba
|
File details
Details for the file fake_data_agents-0.3.0-py3-none-any.whl.
File metadata
- Download URL: fake_data_agents-0.3.0-py3-none-any.whl
- Upload date:
- Size: 4.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.4.24
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
03fe98f890bb5ba53153efb2768b27a5dc1b51a9f399ec86669043eaf319e155
|
|
| MD5 |
186303eeb3053f5b65b4ca5189a8ab2a
|
|
| BLAKE2b-256 |
40d244ef39e675c0bcf1fccf9d9a084ab5d5a41308e539a19b3badd27f2e293f
|