Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions pdf-ai-app/.env
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
GEMINI_API_KEY=your_api_key_here
10 changes: 10 additions & 0 deletions pdf-ai-app/README.md
Original file line number Diff line number Diff line change
@@ -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
48 changes: 48 additions & 0 deletions pdf-ai-app/main.py
Original file line number Diff line number Diff line change
@@ -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}
5 changes: 5 additions & 0 deletions pdf-ai-app/requirements.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
fastapi
uvicorn
pypdf
google-generativeai
python-dotenv