Welcome to the PromptTrail project! We're glad you're considering contributing to our project!
- We use rye to manage our Python development environment.
- You can set up your development environment as follows:
- Install rye (See their website for the latest installation instructions)
curl -sSf https://rye-up.com/get | bash
- Clone this repository to your desired location
git clone https://github.com/combinatrix-ai/PromptTrail.git
- Set up the environment
cd PromptTrail- Install dependencies
rye sync
- Activate the environment
rye shell
- Run an example
python -m examples.example_openai.py- You may need to set the
OPENAI_API_KEYenvironment variable to run this example.
- You may need to set the
- Install rye (See their website for the latest installation instructions)
- Please ensure that your code passes all tests. (Adding tests is always welcome!)
rye run test
- Please ensure that your code is auto-formatted. (black, autoflake, isort)
rye run format
- Please ensure that your code passes the lint check. (mypy)
rye run lint
- Please build the documentation if you change the public interface. (sphinx)
rye run doc
Note: You can run all of these commands at once using rye run all. GitHub Actions will automatically run these commands in check mode when you submit a pull request. If any of these checks fail, please run these commands locally and fix any errors.
-
This project is currently licensed under the Elastic License 2.0.
- If you're comfortable with Elasticsearch, you should be comfortable with this project as well.
- The Elastic License 2.0 is not OSI-compliant, but if you're okay with the Llama 2 License, you should be okay to use a non-OSI-compliant license.
-
We chose this license because we plan to provide a web service that allows everyone, including non-developers, to collaboratively create, edit, test, and host templates and agents online.
- We aim to build a Huggingface/Github for LLM programming!
- If you want to build this kind of service, we hope you'll contact us first if you want to use this project.
-
In other use cases, which means almost everything you might do, you can use this project commercially.
-
Therefore, before you contribute, you must agree that your contribution will be licensed under the Elastic License 2.0 or other licenses we have chosen for this project.
- You grant us a worldwide, royalty-free, exclusive, perpetual, and irrevocable license, with the right to transfer an unlimited number of non-exclusive licenses or to grant sublicenses to third parties, under the Copyright covering the Contribution to use the Contribution by all means, including, but not limited to:
- Publishing the Contribution
- Modifying the Contribution
- Preparing derivative works based upon or containing the Contribution and/or combining the Contribution with other Materials
- Reproducing the Contribution in its original or modified form
- Distributing, making the Contribution available to the public, displaying, and publicly performing the Contribution in its original or modified form
- You grant us a worldwide, royalty-free, exclusive, perpetual, and irrevocable license, with the right to transfer an unlimited number of non-exclusive licenses or to grant sublicenses to third parties, under the Copyright covering the Contribution to use the Contribution by all means, including, but not limited to:
-
The sentences above may seem a little bit intimidating, but in essence, we want you to declare that your contribution can be used freely in this project so that other people can use it without worry.
-
Note: The Elastic License 2.0 is not compatible with GPL, so we may not use GPL libraries in this project.
- If you know what an LLM is, you must be able to use PromptTrail.
- Agent (Flow) as Code
- Agent that can be written in one place by code
- Hook-based agent definition like PyTorch Lightning
- Agent that can be written in one place by code
- Provide an easy way to debug prompt program
- Record everything for later inspection
- Easy to read error messages with template id, hook name, etc... is included
- Intuitive and explicit (but sometimes convention)
- Everything evolves fast here. You can't be sure what is right now. So explicit is better than implicit. Code is better than document.
- No hidden templates and configurations
- Every parameter should be passed explicitly and be able to be understood by types
- Easy to work with on VSCode and JetBrains IDEs
- Everything must be clear by class inheritance and types. I don't want to read docs.
- Unified access to templates, parameters of agents
- Hook-based agent definition
- More default values
- Everything evolves fast here. You can't be sure what is right now. So explicit is better than implicit. Code is better than document.
- We use pylance (strict) in VSCode and mypy.
- We prefer repeating duplicated type checking code over using
Anyor# type: ignore.
- We prefer repeating duplicated type checking code over using