All-Models / app.py
Prince-2025's picture
Update app.py
bf3e2b0 verified
Raw History Blame Contribute Delete
1.49 kB
from youtube_transcript_api import YouTubeTranscriptApi, NoTranscriptFound, TranscriptsDisabled, CouldNotRetrieveTranscript, TranslationLanguageNotAvailable, NotTranslatable
from fastapi import FastAPI
from pydantic import BaseModel
from functools import lru_cache
import pandas as pd
import faiss
from sentence_transformers import SentenceTransformer
import logging
logging.basicConfig(level=logging.INFO)
app = FastAPI()
class SearchRequest(BaseModel):
query: str
top_k: int = 3
@lru_cache(maxsize=1)
def load_model():
return SentenceTransformer('model/BGE-Medico-Model')
@lru_cache(maxsize=1)
def load_index():
return faiss.read_index('model/device_index.faiss')
@lru_cache(maxsize=1)
def load_data():
return pd.read_csv('model/Final_devices.csv')
@app.post("/MedInsSch")
def search_device(request: SearchRequest):
df = load_data()
model = load_model()
index = load_index()
cols = ['name', 'definition', 'instructions']
query = request.query
top_k = request.top_k
if query.isdigit():
results = df[cols][df["code"] == int(query)]
if not results.empty:
return {"results": results.to_dict(orient="records")}
query_vec = model.encode([query])
D, I = index.search(query_vec, top_k)
results = [df.iloc[idx][cols].to_dict() for idx in I[0]]
return {"results": results}
@app.get("/")
def root():
return {"message": "MedInstruct, Youtube Transcript Search API is running"}