You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* Feature/workflows (#8)
* chore: add codeowners file
* chore: add python poetry action and docs workflow
* chore: update pre-commit file
* chore: update docs
* chore: update logo
* chore: add cicd pipeline for automated deployment
* chore: update poetry version
* chore: fix action versioning
* chore: add gitattributes to ignore line count in jupyter notebooks
* chore: add and update docstrings
* chore: fix end of files
* chore: update action versions
* Update README.md
---------
Co-authored-by: mo374z <schlager.mo@t-online.de>
* Fix/workflows (#11)
* chore: fix workflow execution
* chore: fix version check in CICD pipeline
* Opro implementation (#7)
* update gitignore
* initial implementation of opro
* formatting of prompt template
* added opro test run
* opro refinements
* fixed sampling error
* add docs to opro
* fix pre commit issues#
* fix pre commit issues#
* fixed end of line
* Patch/pre commit config (#10)
* fixed pre commit config and removed end of file line breaks in tempaltes
* added /
* Feature/prompt generation (#12)
* added prompt_creation.py
* change version
* Create LICENSE (#14)
* Refactor/remove deepinfra (#16)
* Remove deepinfra file
* change langchain-community version
* Usability patches (#15)
* renamed get_tasks to get_task and change functionality accordingly. moved templates and data_sets
* init
* move templates to templates.py
* Add nested asyncio to make it useable in notebooks
* Update README.md
* changed getting_started.ipynb and created helper functions
* added sampling of initial population
* fixed config
* fixed callbacks
* adjust runs
* fix run evaluation api token
* fix naming convention in opro, remove on epoch end for logger callback, fixed to allow for numeric values in class names
* Update promptolution/llms/api_llm.py
Co-authored-by: Timo Heiß <87521684+timo282@users.noreply.github.com>
* fixed comments
* Update pyproject.toml
* resolve comments
---------
Co-authored-by: mo374z <schlager.mo@t-online.de>
Co-authored-by: Timo Heiß <87521684+timo282@users.noreply.github.com>
Co-authored-by: Moritz Schlager <87517800+mo374z@users.noreply.github.com>
* Feature/examplar selection (#17)
* implemented random selector
* added random search selector
* increased version count
* fix typos
* Update promptolution/predictors/base_predictor.py
Co-authored-by: Timo Heiß <87521684+timo282@users.noreply.github.com>
* Update promptolution/tasks/classification_tasks.py
Co-authored-by: Timo Heiß <87521684+timo282@users.noreply.github.com>
* resolve comments
* resolve comments
---------
Co-authored-by: Timo Heiß <87521684+timo282@users.noreply.github.com>
* Chore/docs release notes (#18)
* Update release-notes.md
* Fix release note links
* revert Chore/docs release notes (#18)"
This reverts commit e23dd74.
* revert last commit
* updated release notes and read me
* Feature/read from df (#21)
* Delete Experiment files
* Removed config necessities
* improved opro meta-prompts
* added read from data frame feature
* changed required python version to 3.9
* Update pyproject.toml
* Update release-notes.md
* merge
* merge
* resolve merge mistakes
* delete duplicated lines
* Update release-notes.md (#24)
* Fix/dependencies (#28)
* delete poetry.lock and upgrade transformers dependency
* Update release-notes.md
* Add vllm as feature and a llm_test_run_script
* small fixes in vllm class
* differentiate between vllm and api inference
* set up experiment over multiple tasks and prompts
* change csv saving
* add base llm super class
* add changes from PR review
* change some VLLM params
* fix tensor parallel size to 1
* experiment with batch size
* experiment with larger batch sizes
* add continuous batch llm
* remove arg
* remove continuous batch inference try
* add batching to vllm
* add batching in script
* Add release notes and increase version number
* remove llm_test_run.py script
* change system prompt
* Fix/vllm (#33)
* add token count, flexible batch size and kwargs to vllm class
* add testing script for implementation
* fix batch size calculation
* small changes
* add revision test
* add argument to parser
* max model len to int
* remove script
* Change version and Release notes
* changed callback behaviour and impelemented token count callback
* added super inits
* allow for splits not based on white space (such as new line break etc)
* include task descriptions
* add tokenizer based token count to vllm class
* update test run script
* use classifiers accordingly
* small fix
* add storage path
* helpers should use classificator
* use different model
* changes in opro test
* change get_predictor function
* fix callback calling
* change optimizer test run script
* small alignments
* small alignments
* small alignments
* some changes to match the current optimizer implementation
* changes in template and config
* allow for batching of prompt creation
* update release notes and version
* extend csvcallback functionality
* change callback csv export
* change step time calculation
* small changes
* remove llm_test_run script
* update release notes
* fix issues in token stepswise calculation
* small fix
---------
Co-authored-by: finitearth <t.zehle@gmail.com>
* implement changes from review
* add typing to token count callback
* Feature/deterministic (#35)
* make vllm class deterministic
* fixes in prompt creation
* Fix/prompt creation (#36)
* fixes in the "MarkerBasedClassificator"
* generalize the Classificator
* add verbosity and callback handling in EvoPromptGA
* add timestamp to the callback
* add arguements to test script
* added some feature notes
* Fix/template (#39)
* v1.3.1 (#37)
#### Added features
* new features for the VLLM Wrapper (accept seeding to ensure reproducibility)
* fixes in the "MarkerBasedClassificator"
* fixes in prompt creation and task description handling
* generalize the Classificator
* add verbosity and callback handling in EvoPromptGA
* add timestamp to the callback
* removed datasets from repo
* changed task creation (now by default with a dataset)
* add generation prompt to vllm input
* allow for parquet as fileoutput callback
* added sys_prompts
* change usage of csv callbacks
* add system prompt to token counts
* fix merge issues
* drag system prompts from api to task
* added release notes
---------
Co-authored-by: Moritz Schlager <87517800+mo374z@users.noreply.github.com>
* Fix/opro (#38)
* v1.3.1 (#37)
#### Added features
* new features for the VLLM Wrapper (accept seeding to ensure reproducibility)
* fixes in the "MarkerBasedClassificator"
* fixes in prompt creation and task description handling
* generalize the Classificator
* add verbosity and callback handling in EvoPromptGA
* add timestamp to the callback
* removed datasets from repo
* changed task creation (now by default with a dataset)
* opro reimplementation according to the paper
* fine opro implementation
* opro test scripts alignment
* implement opro review
* small fix in score handling
* adjust hyperparameters
* add early stopping at convergence to opro
* Update promptolution/optimizers/opro.py
Co-authored-by: Timo Heiß <87521684+timo282@users.noreply.github.com>
---------
Co-authored-by: Moritz Schlager <87517800+mo374z@users.noreply.github.com>
Co-authored-by: mo374z <schlager.mo@t-online.de>
Co-authored-by: Timo Heiß <87521684+timo282@users.noreply.github.com>
* Refactor/generic api llm (#41)
* v1.3.2 (#40)
#### Added features
* Allow for configuration and evaluation of system prompts in all LLM-Classes
* CSV Callback is now FileOutputCallback and able to write Parquet files
* Fixed LLM-Call templates in VLLM
* refined OPRO-implementation to be closer to the paper
* implement api calls
* removed default for system messages
* roll back renaming
---------
Co-authored-by: mo374z <schlager.mo@t-online.de>
* Refactor/interfaces (#42)
* add token count, flexible batch size and kwargs to vllm class
* add testing script for implementation
* fix batch size calculation
* small changes
* add revision test
* add argument to parser
* max model len to int
* remove script
* Change version and Release notes
* changed callback behaviour and impelemented token count callback
* init
* small corrections
* changes to prevent merge conflicts
* small changes
* first tests
* add api_test
* a lot has changed for gangsters
* fix
* added
* removed
* fix
* Update promptolution/predictors/__init__.py
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* add testing to ci pipeline
* Update action.yml
* fix test dependencies in pipeline
* Add further test dependencies
* Refactor dependency groups
* Add getting started notebook to documentation
* Add workflow call trigger to docs workflow
* Add CI and Docs status badges
* Add temporary file for docs testing
* Remove temporary file for docs testing
* Update notebooks/getting_started.ipynb
Co-authored-by: Timo Heiß <87521684+timo282@users.noreply.github.com>
* Update notebooks/getting_started.ipynb
Co-authored-by: Timo Heiß <87521684+timo282@users.noreply.github.com>
* comments
* end2end
* added
* new
* more
* change
* update dependencies
* added literals to get optimizer
* added release notes
---------
Co-authored-by: mo374z <schlager.mo@t-online.de>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Timo Heiß <ti-heiss@t-online.de>
Co-authored-by: Timo Heiß <87521684+timo282@users.noreply.github.com>
* Remove obsolete Docstring
* remove redundant init
* remove redundant init
* resolve merge chaos
* formatting
* alternated task to work for capo
* bug fixes
* formatting
* update task interface and preds and eval cache
* fix vllm and capo
* fix nans when evaluate strategy
* fix tests
* finalized testing
* fix vllm tests
* fix vllm mocking
* fix capo docstring
* update getting_started notebook to include capo
* formatting
* formatting
* formatting
* formatting and docstring fix
* implemented comments
* implemented comments
* fix tests
* fix tests
* fix tests
* fixed docstrings and naming
* clear inits
* remove dummy classes
* standardize logging
* fix imports
* logging
* fix imports once more
* remove n_eval_samples argument from tests
* resolve merge issues
* merge from main
* comments
* Update coverage badge in README [skip ci]
* added realese notes
* fix import bug
* release notes
* Update readme and fix imports
* fix release notes
* changed v2.0.0.md
* formatting
* Update coverage badge in README [skip ci]
* fix imports once more
* apply pre-commit everywhere
* apply pre-commit everywwhere
* fix imports and typings
* fix helpers
* fix demo scripts
* formatting
* Update coverage badge in README [skip ci]
* fix tests
* Update coverage badge in README [skip ci]
* remove convergence speed from read me
* rename Opro to OPRO
* changed imports in isort
* Update API reference in docs
* Update README.md
Co-authored-by: Timo Heiß <87521684+timo282@users.noreply.github.com>
* Update README.md
Co-authored-by: Timo Heiß <87521684+timo282@users.noreply.github.com>
* Update README.md
Co-authored-by: Timo Heiß <87521684+timo282@users.noreply.github.com>
* Update README.md
Co-authored-by: Timo Heiß <87521684+timo282@users.noreply.github.com>
* Update README.md
Co-authored-by: Timo Heiß <87521684+timo282@users.noreply.github.com>
* Update README.md
Co-authored-by: Timo Heiß <87521684+timo282@users.noreply.github.com>
* fixed task description in notebook
* Update v2.0.0.md
---------
Co-authored-by: Timo Heiß <87521684+timo282@users.noreply.github.com>
Co-authored-by: mo374z <schlager.mo@t-online.de>
Co-authored-by: Moritz Schlager <87517800+mo374z@users.noreply.github.com>
Co-authored-by: Timo Heiß <ti-heiss@t-online.de>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: finitearth <finitearth@users.noreply.github.com>
Promptolution is a library that provides a modular and extensible framework for implementing prompt tuning experiments. It offers a user-friendly interface to assemble the core components for various prompt optimization tasks.
13
10
14
-
This project was developed by [Timo Heiß](https://www.linkedin.com/in/timo-heiss/), [Moritz Schlager](https://www.linkedin.com/in/moritz-schlager/)and [Tom Zehle](https://www.linkedin.com/in/tom-zehle/).
11
+
Promptolution is a library that provides a modular and extensible framework for implementing prompt tuning for single tasks and larger experiments. It offers a user-friendly interface to assemble the core components for various prompt optimization tasks.
15
12
16
-
## Getting Started
17
-
Take a look at our getting started notebook: [getting_started.ipynb](https://github.com/finitearth/promptolution/blob/main/notebooks/getting_started.ipynb)
13
+
This project was developed by [Timo Heiß](https://www.linkedin.com/in/timo-heiss/), [Moritz Schlager](https://www.linkedin.com/in/moritz-schlager/) and [Tom Zehle](https://www.linkedin.com/in/tom-zehle/) as part of a study program at LMU Munich.
18
14
19
15
## Installation
20
16
@@ -30,7 +26,6 @@ If you want to run your prompt optimization locally, either via transformers or
30
26
pip install promptolution[vllm,transformers]
31
27
```
32
28
33
-
34
29
Alternatively, clone the repository, run
35
30
36
31
```
@@ -39,34 +34,28 @@ poetry install
39
34
40
35
to install the necessary dependencies. You might need to install [pipx](https://pipx.pypa.io/stable/installation/) and [poetry](https://python-poetry.org/docs/) first.
41
36
42
-
## Documentation
43
-
44
-
A comprehensive documentation with API reference is availabe at https://finitearth.github.io/promptolution/.
45
-
46
37
## Usage
47
38
48
-
Create API Keys for the models you want to use:
49
-
- OpenAI: store token in openaitoken.txt
50
-
- Anthropic: store token in anthropictoken.txt
51
-
- DeepInfra (for Llama): store token in deepinfratoken.txt
39
+
To get started right away, take a look at our [getting started notebook](https://github.com/finitearth/promptolution/blob/main/notebooks/getting_started.ipynb).
40
+
For more details, a comprehensive **documentation** with API reference is availabe at https://finitearth.github.io/promptolution/.
- Predictor: Implements the prediction logic, interfacing between the Task and LLM components.
65
-
- LLM: Unifies the process of obtaining responses from language models, whether locally hosted or accessed via API.
66
-
- Optimizer: Implements prompt optimization algorithms, utilizing the other components during the optimization process.
67
-
- Exemplar Selectors: Implements algorithms for the search of few shot examples that are added to the prompt.
51
+
### Core Components
68
52
69
-
## Key Features
53
+
-`Task`: Encapsulates initial prompts, dataset features, targets, and evaluation methods.
54
+
-`Predictor`: Implements the prediction logic, interfacing between the `Task` and `LLM` components.
55
+
-`LLM`: Unifies the process of obtaining responses from language models, whether locally hosted or accessed via API.
56
+
-`Optimizer`: Implements prompt optimization algorithms, utilizing the other components during the optimization process.
57
+
58
+
### Key Features
70
59
71
60
- Modular and object-oriented design
72
61
- Extensible architecture
@@ -75,6 +64,48 @@ Create API Keys for the models you want to use:
75
64
- Integration with langchain for standardized LLM API calls
76
65
- Detailed logging and callback system for optimization analysis
77
66
67
+
## Changelog
68
+
69
+
Release notes for each version of the library can be found [here](https://finitearth.github.io/promptolution/release-notes/)
70
+
71
+
## Contributing
72
+
73
+
The first step to contributing is to open an issue describing the bug, feature, or enhancements. Ensure the issue is clearly described, assigned, and properly tagged. All work should be linked to an open issue.
74
+
75
+
### Code Style and Linting
76
+
77
+
We use Black for code formatting, Flake8 for linting, pydocstyle for docstring conventions (Google format), and isort to sort imports. All these checks are enforced via pre-commit hooks, which automatically run on every commit. Install the pre-commit hooks to ensure that all checks run automatically:
78
+
79
+
```
80
+
pre-commit install
81
+
```
78
82
83
+
To run all checks manually:
79
84
80
-
This project was developed for the "AutoML in the age of large pre-trained models" seminar at LMU Munich.
85
+
```
86
+
pre-commit run --all-files
87
+
```
88
+
89
+
### Branch Protection and Merging Guidelines
90
+
91
+
- The main branch is protected. No direct commits are allowed for non-administrators.
92
+
- Rebase your branch on main before opening a pull request.
93
+
- All contributions must be made on dedicated branches linked to specific issues.
94
+
- Name the branch according to {prefix}/{description} with one of the prefixes fix, feature, chore, or refactor.
95
+
- A pull request must have at least one approval from a code owner before it can be merged into main.
96
+
- CI checks must pass before a pull request can be merged.
97
+
- New releases will only be created by code owners.
98
+
99
+
### Testing
100
+
101
+
We use pytest to run tests, and coverage to track code coverage. Tests automatically run on pull requests and pushes to the main branch, but please ensure they also pass locally before pushing!
102
+
To run the tests with coverage locally, use the following commands or your IDE's test runner:
0 commit comments