This project is a RAG (Retrieval-Augmented Generation) based chat application focused on George Fox and Quakerism. It uses FastAPI for the backend and HTMX for dynamic frontend updates, creating a responsive chat interface that provides information about George Fox's writings and Quaker history.
- Interactive chat interface with a bot that answers questions about George Fox and Quakerism
- RAG (Retrieval-Augmented Generation) architecture that retrieves information from a knowledge base
- Citation management showing the sources of information provided
- Smooth animations for messages with typing indicators
- Responsive design with Bootstrap styling
- Python 3.10 or higher
- pip (Python package installer)
- OpenAI API key (for GPT-4o or other specified model)
Follow these steps to set up and run the project on your local machine.
git clone https://github.com/WesternFriend/george-fox-rag-chat.git
cd george-fox-rag-chat
python -m venv venv
python3 -m venv venv
venv\Scripts\activate
source venv/bin/activate
With the virtual environment activated, install the project dependencies:
pip install -r requirements.txt
Start the FastAPI server using Uvicorn:
uvicorn chat:app --reload
The --reload
flag enables auto-reloading on code changes, which is useful for development.
Open your web browser and navigate to:
http://127.0.0.1:8000
You should now see the chat interface and be able to interact with the chatbot.
- The main application code is in
chat.py
. - HTML templates are stored in the
templates
directory. - Static files (CSS, JavaScript) are in the
static
directory.
To run tests, use the following command:
pytest
This will execute all tests in the tests/
directory. For measuring test coverage, you can use pytest-cov
by running:
pytest --cov=app
This command will provide a report on the test coverage for the application.
If you encounter any issues:
- Ensure you're using Python 3.10 or higher.
- Make sure your virtual environment is activated when installing dependencies and running the app.
- Check that all required dependencies are installed correctly.
- If you encounter any "Module not found" errors, try reinstalling the dependencies.
Contributions are welcome! Please feel free to submit a Pull Request.