rag-pdf-chatbot / api.py
shubmrj's picture
redploy project from sketch
0570634
Raw
History Blame Contribute Delete
1.26 kB
from fastapi import FastAPI, File, UploadFile
from pydantic import BaseModel
from rag import ask, index_pdfs, is_ready
app = FastAPI(title="Medical Research Assistant API")
class Question(BaseModel):
question: str
@app.get("/status")
def status():
return {"ready": is_ready()}
@app.post("/index")
async def index_documents(files: list[UploadFile] = File(...)):
try:
if not files:
return {"ok": False, "message": "No files uploaded."}
payload: list[tuple[str, bytes]] = []
for upload in files:
content = await upload.read()
if content and upload.filename:
payload.append((upload.filename, content))
if not payload:
return {"ok": False, "message": "All uploaded files were empty."}
ok, message = index_pdfs(payload)
return {"ok": ok, "message": message}
except Exception as exc:
return {"ok": False, "message": f"Index failed: {exc}"}
@app.post("/chat")
def chat(question: Question):
try:
answer, sources = ask(question.question)
return {"ok": True, "answer": answer, "sources": sources}
except Exception as exc:
return {"ok": False, "answer": f"Chat failed: {exc}", "sources": []}