Run ChemCoScientist locally:
Prerequisites: requires Python >=3.12,<3.13, Poetry >=2
- Clone the repository to a local directory of your choice.
- Create a new environment and install dependencies:
poetry install
poetry run pip install --no-deps git+https://github.com/aimclub/ProtoLLM.git@main
- Create a
config.envfile in the root of the project based on example_config.env. - Turn on ITMO VPN to get access to all necessary services (ChromaDB, embedding and reranker services, MinIO (S3), AutoML, and generative models).
Run in CLI:
- Add a new query in main_cli.py, e.g.:
inputs = {"input": "Generate an image of spherical nanoparticles."}
- Run main_cli.py (it will execute the new query)
Run the GUI (Streamlit app):
- Run
streamlit run ChemCoScientist/streamlit_app.py - The app will be available at http://localhost:8501
This project uses a simplified version of Git Flow. The development branch is main.
Direct pushes to main are not allowed. To contribute, always create a new branch following the prefix rules:
- feature/ — for new features or enhancements
- bug/ — for bug fixes
- hotfix/ — for urgent fixes to production issues
Optionally include ticket or issue numbers for traceability, e.g., bug/123-fix-login-error.
Workflow:
- Always rebase your branch onto main before opening a PR.
- Write meaningful commit messages tied to your branch purpose.
- Delete branches after they are merged to keep the repo clean.
- Changes must be merged to main via Pull Requests after code review.
- PR requires at least 1 approval to merge.
- All comments must be answered.
- Comment authors resolve their comments.
- Squash all commits into one before merging.
- PR author merges the PR.
Code formatting is maintained using Black with its standard settings. See black.yml.
The complete suite of tests can be found in the tests folder. Please note that the integration tests depend on auxiliary services hosted on the ITMO servers and therefore require VPN access.
Execute the tests either directly within the IDE or via the command line interface using: pytest tests.
Please create a new task on the board.