panscience-api / app.py
ashishbangwal's picture
init
f1d1d20
from typing import List
from fastapi import FastAPI, Form, UploadFile, File
from data_ingetion.data import AdvancedDatabase
from data_ingetion.pre_processor import read_metadata
from generator.response import generate_response
db = AdvancedDatabase()
app = FastAPI()
@app.post("/ingest_files")
async def ingest_files(
metadata: str = Form(...),
group_name: str = Form(...),
files: List[UploadFile] = File(...),
):
"""Upload and process multiple files (PDFs and DOCXs) in single endpoint inference asyncronously"""
result = await db.ingest(files, metadata, group_name)
return result
@app.post("/fetch_response")
async def get_response(query: str, group_name: str, include_chunks: bool = False):
"""Invoke RAG pipeline with given collection as VectorDB to retrieve context and generate context rich responses"""
response = generate_response(query, group_name)
if include_chunks:
return {"llm_response": response[0], "chunks": response[1]}
return {"llm_response": response}
@app.get("/get_metadata")
async def get_metadata():
"""Fetch Metadata of recently uploaded documents grouped by collections ie. time they were uploaded."""
response = read_metadata()
return {"Metadata": response}