Spaces:
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
- Create a virtual environment:
python -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
- Install dependencies:
pip install -r requirements.txt
- Create a
.env
file in the root directory with your OpenAI API key:
OPENAI_API_KEY=your_api_key_here
- Run the development server:
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 chunkingvector_store.py
: Manages document embeddings and similarity searchchat_service.py
: Interfaces with OpenAI for chat completions
models.py
defines the data structures using Pydanticmain.py
contains the FastAPI application and route handlersdependencies.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.