Quran_Agent / README.md
elfarash's picture
Upload 11 files
37fa932 verified
|
Raw
History Blame Contribute Delete
3.01 kB
# Quran RAG Agent System
A comprehensive AI-powered system designed to provide deep, scholarly Tafsir (interpretations) of the Quran. Built using LangChain, OpenAI, and ChromaDB, the system employs a robust **Dual-Agent Architecture** to accurately extract Quranic references and contextualize interpretations from a diverse pool of authenticated scholarly works.
## Features
- **Dual-Agent Workflow:**
- **Contextualizing Agent (Quran Expert):** Precision-parses user queries to identify and extract exact Ayah (verse) references.
- **RAG Agent (Tafsir Specialist):** Analyzes the localized embeddings and generates high-level scholarly responses grounded explicitly in the retrieved Tafsir chunks.
- **Robust Fallback Logic:** Identifies potential model token-limit exceptions when evaluating multiple scattered verses, safely downgrading to single-verse analysis and alerting the user.
- **Interactive UI:** A full Gradio-based web interface (`quran_rag_agent.py`).
- **RESTful API:** A FastAPI backend (`quran_api.py`) for integration into external apps.
## Prerequisites
To run this project, make sure you have [Conda](https://docs.conda.io/en/latest/) installed on your primary system.
## Installation & Setup
All execution and dependency management must happen inside the `quran_llm` Conda environment.
1. **Create and activate the Conda Environment:**
```bash
conda create -n quran_llm python=3.10 -y
conda activate quran_llm
```
2. **Install Dependencies:**
```bash
pip install -r requirements.txt
```
3. **Environment Variables:**
Create a `.env` file in the project's root directory and add your OpenAI API key:
```env
OPENAI_API_KEY=your_openai_api_key_here
```
## Running the Project
### Option 1: Gradio Web Interface
To interact directly with the Quran Expert assistant through a user-friendly Chat UI:
```bash
conda activate quran_llm
python quran_rag_agent.py
```
> The web app will generally launch on `http://127.0.0.1:7860`.
### Option 2: FastAPI Server
To launch the RESTful backend endpoints (great for frontend/mobile app integrations):
```bash
conda activate quran_llm
uvicorn quran_api:app --reload --host 0.0.0.0 --port 8000
```
> Explore the interactive API documentation at `http://127.0.0.1:8000/docs`.
### Initial Run & Vector Store Ingestion
The first time you run the application, it will dynamically authenticate with HuggingFace, download the `MohamedRashad/Quran-Tafseer` dataset, convert all verses and interpretations using OpenAI's `text-embedding-3-small` model, and build the persistent ChromaDB index locally. **This will take time**. Once complete, the vector index will be saved to `./chromadb_quran_tafsir` for instant startup on future executions.
## Architecture Guidelines
To modify the core Tafsir generation prompts, update the System Prompts contained within:
- `agent1_system_prompt` (Ayah parsing logic)
- `agent2_system_prompt` (Generation, restriction, hallucination-guarding logic)
Within both `quran_rag_agent.py` and `quran_api.py`.