Skip to main content

A package to process CSV text data in batches using OpenAI API

Project description

LLM Batch Processor 🚀

A Python package to process CSV text data in batches using OpenAI's GPT API.

Python License OpenAI API


📌 Features

✅ Processes large CSV files (50K+ rows) in batches of 10 rows
✅ Uses OpenAI GPT-4 API (for now) to generate responses for each row
✅ Saves the results in a new CSV column
✅ CLI support (llm-process) for easy execution
✅ Modular and scalable package design


📂 Project Structure

llm_batch_processor/
│── llm_batch_processor/  # The package
│   │── __init__.py
│   │── config.py         # Configuration settings
│   │── api_client.py     # Handles OpenAI API requests
│   │── processor.py      # Batch processing logic
│── scripts/
│   │── main.py           # CLI entry point
│── data/                 # Place CSV files here
│── setup.py              # Package setup
│── setup.cfg
│── pyproject.toml
│── requirements.txt
│── README.md
│── .gitignore
│── LICENSE

🛠 Installation with repo

1️⃣ Clone the repository

git clone https://github.com/karthikRavichandran/llm_batch_processor.git
cd llm_batch_processor

Or

2️⃣ Install the package

pip install llm-batch-process

3️⃣ Set up OpenAI API Key

Create a .env file in the root directory and add:

OPENAI_API_KEY=your_api_key_here
Project_Id=your_project_id #optional

or

export OPENAI_API_KEY="your_api_key_here"
export Project_Id="your_project_id" #Optional 

🚀 Usage

1️⃣ Prepare your CSV file

  • Place your input CSV file in the data/ folder or mention the location using --input_csv
  • Ensure it has a column containing text (default: "text") or mention the column name using --text_column
  • Place your prompt in prompt.txt or mention it using --prompt_file

2️⃣ Run the batch processor

llm-process 

CLI args

  --api_key API_KEY     OpenAI API Key (default: from environment variable)
  --project_id PROJECT_ID
                        Project ID (default: from environment variable)
  --batch_size BATCH_SIZE
                        Batch size for processing (default: 10)
  --input_csv INPUT_CSV
                        Path to input CSV file (default: data/input.csv)
  --output_csv OUTPUT_CSV
                        Path to output CSV file (default: data/output.csv)
  --text_column TEXT_COLUMN
                        Column name containing input text (default: text)
  --response_column RESPONSE_COLUMN
                        Column name for storing responses (default: response)
  --prompt_file PROMPT_FILE
                        Path to the text file containing the prompt

This will:

  • Read data from data/input.csv
  • Process text in batches of 10 rows
  • Send each batch to OpenAI GPT-4
  • Save responses in data/output.csv under a new column "response"

⚙️ Configuration

Modify config.py for:

BATCH_SIZE = 10  # Number of rows per batch
INPUT_CSV = "data/input.csv"
OUTPUT_CSV = "data/output.csv"
TEXT_COLUMN = "text"
RESPONSE_COLUMN = "response"

🛠 Development

Install dependencies

pip install -r requirements.txt

Run tests

(TODO: Add unit tests)

pytest

📦 Publish to PyPI

1️⃣ Build the package

python setup.py sdist bdist_wheel

2️⃣ Upload to PyPI

twine upload dist/*

3️⃣ Install from PyPI

pip install llm_batch_processor

📜 License

This project is licensed under the MIT License.


💡 Contributing

  1. Fork the repo
  2. Create a feature branch (git checkout -b feature-branch)
  3. Commit changes (git commit -m "Added new feature")
  4. Push to branch (git push origin feature-branch)
  5. Create a Pull Request 🚀

📧 Contact

For support or collaboration, reach out via Karthik Ravichandran.


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

llm_batch_processor-0.1.4.tar.gz (6.1 kB view details)

Uploaded Source

Built Distribution

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

llm_batch_processor-0.1.4-py3-none-any.whl (7.6 kB view details)

Uploaded Python 3

File details

Details for the file llm_batch_processor-0.1.4.tar.gz.

File metadata

  • Download URL: llm_batch_processor-0.1.4.tar.gz
  • Upload date:
  • Size: 6.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.1

File hashes

Hashes for llm_batch_processor-0.1.4.tar.gz
Algorithm Hash digest
SHA256 db528bf7f44fe8be9f05f99806cf99b914c89297699108e72bcea67917c2894d
MD5 0d7871e15e01a13f55de0fc46090c484
BLAKE2b-256 0d4dcd57b3807e8faf699b95b28f909cbba6b6bac9844babecbadf46697f3adf

See more details on using hashes here.

File details

Details for the file llm_batch_processor-0.1.4-py3-none-any.whl.

File metadata

File hashes

Hashes for llm_batch_processor-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 fe1369f6ec88b562c26ad0defe32dc87bfef9eda8d2668d168309a6815367bec
MD5 51a9558ad70735d6a2b6154ebebb9dfb
BLAKE2b-256 6b231e4b68d4f4dcc1b78d662d1cf6c64c62f423766b58279300f2438ad439b2

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