https://github.com/baselhusam/damj
Python Package for creating a well-defined prompts integrated with specified code snippet.
https://github.com/baselhusam/damj
chatgpt damj llm prompt prompt-engineering python pythonpackage tool
Last synced: 4 months ago
JSON representation
Python Package for creating a well-defined prompts integrated with specified code snippet.
- Host: GitHub
- URL: https://github.com/baselhusam/damj
- Owner: baselhusam
- License: apache-2.0
- Created: 2024-06-15T18:13:51.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-09-01T16:19:41.000Z (over 1 year ago)
- Last Synced: 2025-01-10T09:25:59.310Z (about 1 year ago)
- Topics: chatgpt, damj, llm, prompt, prompt-engineering, python, pythonpackage, tool
- Language: Python
- Homepage:
- Size: 384 KB
- Stars: 2
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README

✨ Damj ✨
damj is a tool for creating comprehensive prompts for language models by combining project files and applying custom processing options.
[](https://pypi.org/project/damj/)
## Introduction
`damj` is designed to help developers create effective prompts for large language models (LLMs) such as ChatGPT. By combining different project files and applying customizable processing options, `damj` simplifies the process of generating prompts tailored to specific project contexts.
## Features
- Combine multiple project files into a single prompt.
- Apply customizable processing options to include/exclude comments, imports, and docstrings for python scripts.
- Support for processing Jupyter notebooks and including cell outputs.
- Easy integration and usage within Python projects.
## Installation
### From PyPI
You can install the latest release from PyPI:
```sh
pip install damj
```
### From Source
```sh
git clone https://github.com/baselhusam/damj.git
cd damj
pip install .
```
## Usage
### Basic Example
```python
import os
from damj import Damj
cwd = os.getcwd()
damj = Damj(cwd)
damj.project_info(
project_overview="This is a sample project.",
add_project_structure=True,
)
prompt = damj.create_prompt(
question="What is the purpose of this project?",
)
print(prompt)
```
Output:
```
# Project Overview
This is a sample project.
# Project Structure
| ├── LICENSE
| ├── README.md
| ├── pyproject.toml
| ├── requirements.txt
├── assets/
| ├── background.png
| ├── logo.png
├── damj/
| ├── __init__.py
| ├── damj.py
| ├── utils.py
# Question
What is the purpose of this project?
```
### Another Detailed Exmaple
```python
import os
from damj import Damj
cwd = os.getcwd()
damj = Damj(
cwd=cwd,
whitelist_files=["*.py"],
blacklist_files=[".venv", "__pycache__"],
snippet_marker="```"
)
damj.project_info(
project_overview="This is a sample project.",
add_project_structure=True,
add_files_content=True,
py_options={
"add_imports": True,
"add_comments": True,
"add_docstrings": False,
"ipynb_output": False
}
)
prompt = damj.create_prompt(
question="What is the purpose of this project?",
copy_to_clipboard=True,
to_markdown=False
)
print(prompt)
```
### Use damj Utils Components
damj also provides several utility functions that can be used independently. These utilities include functions to get the project structure, get file content, and more.
#### Get Project Structure
The `get_project_structure` function generates a markdown representation of the directory structure, excluding blacklisted files and directories.
```python
from damj.utils import get_project_structure
# Get the project structure excluding .venv and __pycache__ directories
cwd = os.getcwd()
blacklist = [".venv", "__pycache__"]
project_structure = get_project_structure(cwd, blacklist)
print(project_structure)
```
#### Get File Content
The `get_file_content` function retrieves the content of a file, applying the specified `py_options`.
```python
from damj.utils import get_file_content
py_options = {
"add_comments": True,
"add_imports": True,
"add_docstrings": False,
"ipynb_output": False
}
# Get the content of a Python file with the specified options
file_content = get_file_content("example.py", py_options)
print(file_content)
```
## License
This project is licensed under the Apache Software License. See the LICENSE file for details.
## Contributors
Basel Mather (baselmathar@gmail.com)
## Contributing
Contributions are welcome! Please fork the repository and open a pull request with your changes.