diff --git a/pdf-ai-app/.env b/pdf-ai-app/.env new file mode 100644 index 000000000..f0d664a31 --- /dev/null +++ b/pdf-ai-app/.env @@ -0,0 +1 @@ +GEMINI_API_KEY=your_api_key_here diff --git a/pdf-ai-app/README.md b/pdf-ai-app/README.md new file mode 100644 index 000000000..06b7de7a6 --- /dev/null +++ b/pdf-ai-app/README.md @@ -0,0 +1,10 @@ +# PDF AI App + +## Features +- Upload PDF +- Ask questions from PDF +- Uses Gemini API + +## Run +pip install -r requirements.txt +python -m uvicorn main:app --reload diff --git a/pdf-ai-app/main.py b/pdf-ai-app/main.py new file mode 100644 index 000000000..deeee9430 --- /dev/null +++ b/pdf-ai-app/main.py @@ -0,0 +1,48 @@ +from fastapi import FastAPI, UploadFile +import shutil +import os +import google.generativeai as genai +from pypdf import PdfReader +from dotenv import load_dotenv + +load_dotenv() + +genai.configure(api_key=os.getenv("GEMINI_API_KEY")) +model = genai.GenerativeModel("gemini-pro") + +app = FastAPI() + +PDF_TEXT = "" + +@app.post("/upload/") +async def upload_pdf(file: UploadFile): + global PDF_TEXT + + with open(file.filename, "wb") as buffer: + shutil.copyfileobj(file.file, buffer) + + reader = PdfReader(file.filename) + text = "" + + for page in reader.pages: + text += page.extract_text() + + PDF_TEXT = text + + return {"message": "PDF uploaded and processed"} + +@app.get("/ask/") +def ask_question(query: str): + global PDF_TEXT + + prompt = f""" + Answer the question based on this PDF content: + + {PDF_TEXT[:3000]} + + Question: {query} + """ + + response = model.generate_content(prompt) + + return {"answer": response.text} diff --git a/pdf-ai-app/requirements.txt b/pdf-ai-app/requirements.txt new file mode 100644 index 000000000..d3440170d --- /dev/null +++ b/pdf-ai-app/requirements.txt @@ -0,0 +1,5 @@ +fastapi +uvicorn +pypdf +google-generativeai +python-dotenv