Spaces:
Sleeping
Sleeping
| import os | |
| from fastapi import FastAPI | |
| from fastapi import UploadFile | |
| from fastapi import File | |
| from fastapi.middleware.cors import CORSMiddleware | |
| from pydantic import BaseModel | |
| from rag import create_vector_store | |
| from rag import ask_question | |
| app = FastAPI( | |
| title="AI Document QA Bot", | |
| description="RAG-based Question Answering using LangChain, ChromaDB and Gemini", | |
| version="1.0.0" | |
| ) | |
| UPLOAD_DIRECTORY = "uploads" | |
| os.makedirs(UPLOAD_DIRECTORY, exist_ok=True) | |
| class QuestionRequest(BaseModel): | |
| question: str | |
| def home(): | |
| return { | |
| "message": "AI Document QA Bot" | |
| } | |
| async def upload_pdf( | |
| file: UploadFile = File(...) | |
| ): | |
| file_path = os.path.join( | |
| UPLOAD_DIRECTORY, | |
| file.filename | |
| ) | |
| with open(file_path, "wb") as f: | |
| f.write(await file.read()) | |
| create_vector_store(file_path) | |
| return { | |
| "message": "PDF uploaded successfully" | |
| } | |
| def ask( | |
| request: QuestionRequest | |
| ): | |
| answer = ask_question( | |
| request.question | |
| ) | |
| return { | |
| "answer": answer | |
| } |