A CLI tool to extract structured Q&A from documents using LLMs.
Project description
DAmon
Data Arrangement/Annotation via Simon's tool.
A CLI tool to extract structured Q&A from documents using Large Language Models (LLMs).
Table of Contents
Features
- Document Parsing: Automatically parses content from various document formats (PDF, CSV, DOCX, PPTX).
- LLM-powered Q&A Extraction: Utilizes Litellm to interact with different LLMs (e.g., gemini/gemini-2.5-flash) to extract question-answer pairs and the AI's thought process.
- Flexible Output: Exports extracted Q&A into
JSONL,CSV, orParquetformats. - Batch Processing: Processes single files or entire directories of documents.
- Hugging Face Hub Integration: Easily push your extracted datasets to the Hugging Face Hub.
Installation
Install the package from PyPI:
pip install DAmon
Configuration
This tool uses litellm to interact with various LLM providers. You'll need to set up your API keys and specify the model.
Create a .env file in the root directory of the project and add your Litellm model and API key. For example, if you are using OpenAI:
GEMINI_API_KEY=<gemini-api-key>
Refer to the Litellm documentation for details on configuring different LLM providers and their respective environment variables.
Usage
The main command-line interface is damon.
Processing Documents
Use the process command to process documents and extract Q&A pairs.
damon process <INPUT_PATH> [OPTIONS]
<INPUT_PATH>: Path to the input document (file or directory).
Options:
--input-format [pdf|csv|docx|pptx|auto]: Format of the input document(s). Use"auto"to detect based on file extension. Default:auto.--model TEXT: Litellm model name to use for Q&A extraction.--output-path PATH: Path to save the extracted Q&A. Can be a file or a directory. If a directory, a timestamped file will be created. Default:results/output.jsonl.--export-format [jsonl|csv|parquet]: Format for exporting the extracted Q&A. Default:jsonl.--num-qa INTEGER: Number of Q&A pairs to extract per document. If not specified, extracts as many as possible.
Examples:
-
Process a single PDF file, output to CSV:
damon process --input data/test.pdf --model gemini/gemini-2.5-flash --output results/cyber_output --export csv --num-qa 5
-
Process all documents in a directory, auto-detect format, output to JSONL:
damon extract data/ --input-format auto --output-path results/ --export-format jsonl
-
Process a specific number of Q&A pairs from a DOCX file:
damon process documents/report.docx --input-format docx --num-qa 5 --output-path results/report_qa.jsonl
Pushing to Hugging Face Hub
Use the push-to-hf command to upload your extracted dataset files to the Hugging Face Hub.
damon push-to-hf --input-file <FILE_PATH> --repo-id <REPO_ID> [--split <SPLIT_NAME>]
--input-file <FILE_PATH>: Path to the data file to push (e.g.,results/output.jsonl).--repo-id <REPO_ID>: Hugging Face Hub repository ID (e.g.,your-username/your-dataset-repo).--split <SPLIT_NAME>: Optional. The name of the dataset split (e.g.,train,validation,test). Defaults totrain.
Prerequisites for pushing:
- You need to have the
datasetsandhuggingface_hublibraries installed (pip install datasets huggingface_hub). - You must be logged in to Hugging Face. Run
huggingface-cli loginin your terminal and follow the prompts.
Example:
damon push-to-hf --input-file results/output_20250630_140154.csv --repo-id your-username/my-extracted-qa-dataset --split train
Supported Document Types
.pdf(Portable Document Format).csv(Comma Separated Values).docx(Microsoft Word Document).pptx(Microsoft PowerPoint Presentation)
Contributing
Contributions are welcome! Please feel free to open issues or submit pull requests.
License
This project is licensed under the MIT License - see the LICENSE file for details. (Note: A LICENSE file is not included in the provided context, but it's good practice to include one.)
Author
Simon Liu
A technology enthusiast in the field of artificial intelligence solutions, he focuses on helping companies to introduce generative artificial intelligence, MLOps and large language model (LLM) technologies to promote digital transformation and technology implementation.
Currently, he is also a Google GenAI developer expert (GDE), actively participating in the technical community, promoting the application and development of AI technology through technical articles, speeches and practical experience sharing. Currently, he has published more than 100 technical articles on the Medium platform, covering topics such as generative AI, RAG and AI Agent, and has served as a speaker in technical seminars many times to share the practical application of AI and generative AI.
My Linkedin: https://www.linkedin.com/in/simonliuyuwei/
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 damon-0.1.1.tar.gz.
File metadata
- Download URL: damon-0.1.1.tar.gz
- Upload date:
- Size: 14.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c9a2348d6296ee39c49e48a9fa2df233e6417e4555c7bf072774e59df88b5d1f
|
|
| MD5 |
4a7856c7e1d8b50adbbe00673e6d34e9
|
|
| BLAKE2b-256 |
ea3892c6529796359eccdf76583135094a2c066a5141d14f7e2a87c958b5ebc2
|
File details
Details for the file damon-0.1.1-py3-none-any.whl.
File metadata
- Download URL: damon-0.1.1-py3-none-any.whl
- Upload date:
- Size: 15.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
19365d2a6bfd9780b6a248a468ac72718c7f774fc25b2b4f6ec77640957ea57a
|
|
| MD5 |
3a356f548b6d45a0bdb39baa5e8deb49
|
|
| BLAKE2b-256 |
493d4532b66e3e93e322a913088ab287f2a4b186bf0fcf078ab256a65ca9675a
|