A CLI utility for aggregating file contents
Project description
Code Promptify
Code-Promptify is a command-line utility for aggregating code repository contents into a single string based on include and exclude patterns. It also provides metadata information, such as token count and billable characters. It is designed to help you prepare prompts for large language models (LLMs). The output is written to a file and also copied to your clipboard automatically.
Note: Currently metadata is only provided based on using Gemini 1.5 Pro or Gemini 1.5 Flash models. That is because token count depends on the specific tokenizer used by the model, which differents among models, though not significantly. If you're using a different model, you can still obtain the token count using either model's tokenizer and you will get a decent approximation.
See example_output.md for what the output looks like for this repo when running with default settings.
Example metadata output:
Field | Value |
---|---|
Model | gemini-1.5-flash |
Token Count | 16746 |
Billable Character Count | 43197 |
Features
- Aggregate file contents based on include and exclude patterns (glob strings)
- Automatically ignores virtual environment files
- Option to ignore empty files
- Count tokens using Google's Vertex AI GenerativeModel
- Output results to a file and clipboard
Installation using PIP
To install promptify, simply run:
pip install code-promptify
Installation from Source
To install Promptify, follow these steps:
-
Clone the repository:
git clone https://github.com/vmehmeri/promptify.git cd promptify
-
Install the package and its dependencies:
pip install -e . -r requirements.txt
Usage
After installation, you can run Promptify using the following command:
promptify [args]
Arguments
--model
: Generative model to use for token counting (default: "gemini-1.5-flash")--include
: File patterns to include (default:["*.py", "*.html", "*.js", "*.css", "*.json", "*.yaml", "*.txt", "*.md"]
)--exclude
: File patterns to exclude (default:["*.pyc", "*egg-info*", "*tmp*"]
)--ignore-empty
: Flag to Ignore empty files (default: False)
Examples
-
Use default settings:
promptify
-
Include only Python and JavaScript files:
promptify --include "*.py" "*.js"
-
Exclude test files and ignore empty files:
promptify --exclude "*test*" --ignore-empty
-
Use a different model for token counting:
promptify --model "gemini-1.5-pro"
Output
Dependencies
- pyperclip
- tabulate
- google-cloud-aiplatform (for accurate token counting for Gemini models)
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
This project is licensed under the MIT License - 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
Built Distribution
File details
Details for the file code_promptify-0.1.tar.gz
.
File metadata
- Download URL: code_promptify-0.1.tar.gz
- Upload date:
- Size: 4.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 53334a2bccd39d8fe2d0f3886df6deed5dbdb318f39cebb628c6b65b85a3b842 |
|
MD5 | 286bb5e2302292778373639a07fd8370 |
|
BLAKE2b-256 | d43c1438f59ded85b1c216f24218ee29275ef900c267ec019040569fa1b3128c |
File details
Details for the file code_promptify-0.1-py3-none-any.whl
.
File metadata
- Download URL: code_promptify-0.1-py3-none-any.whl
- Upload date:
- Size: 5.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1caedba7e9436ed1a7185433a64ac57804d727afdababee16c96fcf3ee956afa |
|
MD5 | 4b5c90ff286481fc3f06fc0b57ec24a1 |
|
BLAKE2b-256 | f19a4774e01c3c48551acb2f8e347db148dc7c6f79b0a198287f4b6d15f4b815 |