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
- uv (Python package and project manager)
- 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-chatuv creates and manages the virtual environment automatically:
uv synccp .env.example .env # then set OPENAI_API_KEYStart the FastAPI server using Uvicorn:
uv run uvicorn app.main:app --reloadThe --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
templatesdirectory. - Static files (CSS, JavaScript) are in the
staticdirectory.
To run tests, use the following command:
uv run pytestThis will execute all tests in the tests/ directory. For measuring test coverage, you can use pytest-cov by running:
uv run pytest --cov=appThis 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.
- Check that all required dependencies are installed correctly by re-running
uv sync. - If you encounter any "Module not found" errors, try re-running
uv sync.
Contributions are welcome! Please feel free to submit a Pull Request.