If you want to build a custom AI on top of a language model, the Cat can help you:
- π Language model agnostic (works with OpenAI, Cohere, HuggingFace models, custom)
- π Long term memory
- π§ Can use external tools (APIs, custom python code, other models)
- π Can ingest documents (.pdf, .txt, .md)
- π Extendible via plugins
- π 100% dockerized
- π©βπ§βπ¦ Active Discord community
This project is growing fast, refactorings and code changes happens very often, join the Issues to help!
You just need docker
and docker-compose
installed on your system.
Clone the repo:
git clone https://github.com/pieroit/cheshire-cat.git
Enter the created folder:
cd cheshire-cat
Create your .env
file by copying and renaming .env_example
:
On linux/mac
cp .env.example .env
On Windows
copy .env.example .env
After that you can run:
docker-compose up
The first time (only) it will take several minutes, as the images occupy a few GBs.
- Chat with the Cheshire Cat on localhost:3000.
- You can also interact via REST API and try out the endpoints on localhost:1865/docs
As a first thing, the Cat will ask you to configure your favourite language model. It can be done directly via the interface in the Settings page.
Enjoy the Cat!
When you're done, remember to CTRL+c in the terminal and
docker-compose down
From time to time it is a good idea to update the Cat:
docker-compose down
git pull origin main
docker-compose build --no-cache
docker-compose up
- Version 1
- Version 2
- Dissemination
- website
- how to guides
- use cases examples
- QA / Test
- End2End tests
- Unit tests
- Local LLM / embedder
- CustomLLMConfig / CustomEmbedderConfig adapters
- LLM / embedder example docker container
- Minimal user management
- User specific conversation and memory
- Working memory
- Temporary storage of arbitrary data in cat instance
- Hook surface (20 hooks)
- more hooks where customization is needed
- Plugin management
- Activate / deactivate plugins
- External plugin directory and customization
- Dissemination
Whilst for the current progress of development, take a look at the projects marked as open.
For suggestions, open an issue and we can reason about it. If you want to contribute with code, fork the repo and create a pull request. Before submitting any new pull request, make sure it either fixes an existing issue or is something we have discussed in our Roadmap.
You can start by:
- Making tutorials and docs
- Sharing on social media
If you have any ideas on how to improve the project or if you'd like to suggest new developments, please join our community on Discord
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request (if it contains lots of code, please discuss it beforehand opening a issue)
Don't forget to give the project a star β! Thanks again!π
This project follows the PEP8 naming convention for all backend code. Please ensure that your contributions adhere to this standard.
Logo image generated with MidJourney, prompted by Edgars Romanovskis
"Would you tell me, please, which way I ought to go from here?"
"That depends a good deal on where you want to get to," said the Cat.
"I don't much care where--" said Alice.
"Then it doesn't matter which way you go," said the Cat.
(Alice's Adventures in Wonderland - Lewis Carroll)