Spaces:
Sleeping
Sleeping
| # Document Chat Backend | |
| This is the FastAPI backend for the Document Chat application that enables document uploading, processing, and chat-based Q&A functionality. | |
| ## Project Structure | |
| ``` | |
| backend/ | |
| βββ app/ | |
| β βββ __init__.py | |
| β βββ main.py # FastAPI application and route definitions | |
| β βββ models.py # Pydantic models for request/response validation | |
| β βββ services/ | |
| β β βββ __init__.py | |
| β β βββ document_processor.py # Document processing and chunking | |
| β β βββ vector_store.py # Vector storage and similarity search | |
| β β βββ chat_service.py # OpenAI chat completion handling | |
| β βββ dependencies.py # FastAPI dependencies and shared resources | |
| βββ requirements.txt # Python package dependencies | |
| ``` | |
| ## Setup | |
| 1. Create a virtual environment: | |
| ```bash | |
| python -m venv .venv | |
| source .venv/bin/activate # On Windows: .venv\Scripts\activate | |
| ``` | |
| 2. Install dependencies: | |
| ```bash | |
| pip install -r requirements.txt | |
| ``` | |
| 3. Create a `.env` file in the root directory with your OpenAI API key: | |
| ``` | |
| OPENAI_API_KEY=your_api_key_here | |
| ``` | |
| 4. Run the development server: | |
| ```bash | |
| uvicorn app.main:app --reload | |
| ``` | |
| The API will be available at `http://localhost:8000` | |
| ## API Endpoints | |
| - `POST /upload` | |
| - Upload PDF or TXT files for processing | |
| - Returns a session ID for subsequent chat interactions | |
| - `POST /chat` | |
| - Send messages to chat with the uploaded document | |
| - Requires a session ID from a previous upload | |
| ## Development | |
| - The `services` directory contains the core business logic: | |
| - `document_processor.py`: Handles file uploads and text chunking | |
| - `vector_store.py`: Manages document embeddings and similarity search | |
| - `chat_service.py`: Interfaces with OpenAI for chat completions | |
| - `models.py` defines the data structures using Pydantic | |
| - `main.py` contains the FastAPI application and route handlers | |
| - `dependencies.py` manages shared resources and dependencies | |
| ## Requirements | |
| See `requirements.txt` for a full list of Python dependencies. Key packages include: | |
| - FastAPI | |
| - OpenAI | |
| - PyPDF2 | |
| - python-multipart | |
| - python-dotenv | |
| - uvicorn | |
| ``` | |
| To create the directory structure, you can run these commands: | |
| ```bash | |
| mkdir -p backend/app/services | |
| touch backend/app/__init__.py | |
| touch backend/app/main.py | |
| touch backend/app/models.py | |
| touch backend/app/dependencies.py | |
| touch backend/app/services/__init__.py | |
| touch backend/app/services/document_processor.py | |
| touch backend/app/services/vector_store.py | |
| touch backend/app/services/chat_service.py | |
| touch backend/requirements.txt | |
| ``` | |
| This will create all the necessary files and directories in the structure you specified. The README.md provides a clear overview of the project structure, setup instructions, and key components for developers who will work with the backend. |