File size: 4,973 Bytes
9322f35 eb66dcb e1d7951 eed80a2 9eef858 3b0a769 ef93b5e e1d7951 9322f35 ef93b5e eb66dcb eed80a2 eb66dcb e1d7951 9322f35 e1d7951 eb66dcb 9322f35 ef93b5e 3b0a769 ef93b5e 62da4bb eb66dcb 3b0a769 ef93b5e 3b0a769 eb66dcb 9322f35 9eef858 9322f35 eb66dcb e95de35 ef93b5e e95de35 ef93b5e e95de35 e1d7951 642a8cb e1d7951 cbc2cdd e1d7951 642a8cb 9322f35 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 |
from fastapi import FastAPI, HTTPException,UploadFile,File,Request
from pydantic import BaseModel
from deep_translator import GoogleTranslator
from fastapi.responses import JSONResponse
from fastapi.middleware.cors import CORSMiddleware
import os
from text import fitness_role
# from main import process,audio_process
from dotenv import load_dotenv
import base64
from pathlib import Path
from process import Response
import uuid
load_dotenv()
# Create the FastAPI app instance
os.makedirs("/tmp/huggingface_cache", exist_ok=True)
os.environ["HF_HOME"] = "/tmp/huggingface_cache"
app = FastAPI()
# Allow all CORS (for local testing)
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
uploaded_docs = {}
class UploadRequest(BaseModel):
filename: str
filedata: str
class ChatRequest(BaseModel):
session_id: str
message: str
class ChatBot(BaseModel):
text :str
token:str
# Root endpoint
@app.get("/")
async def home():
return {"message": "Test ok"}
# Token verification function
def verify_token(token: str):
print("token: ",token)
if token != os.getenv("TOKEN"):
raise HTTPException(status_code=401, detail="Token not matched")
# Translate endpoint that accepts a query parameter 'text'
# @app.get("/translate")
# async def translate(text: str = "", token: str = ""):
# if not text or not token:
# raise HTTPException(status_code=400, detail="No text or token provided")
# verify_token(token)
# translator = GoogleTranslator(source="auto", target="mr")
# result = translator.translate(text)
# return {"result": result}
@app.post("/chatbot")
async def chatbot(req:ChatBot):
try:
query = req.text
token = req.token
# print("query : ",query)
if not query or not token:
raise HTTPException(status_code=400, detail="No text provided")
verify_token(token=token)
res = Response().chatbot(query=query)
# print("Chatbot resp :- ", res)
return {"result":res}
except Exception as e:
print(e)
@app.post("/fitnessbot")
async def fitnessbot(req:ChatBot):
try:
query = req.text
token = req.token
# print("query : ",query)
if not query or not token:
raise HTTPException(status_code=400, detail="No text provided")
verify_token(token=token)
res = Response().other_chatbot(query=query,role = fitness_role)
# print("Chatbot resp :- ", res)
return {"result":res}
except Exception as e:
print(e)
# @app.get("/chatbot")
# async def chatbot(text: str = "", token: str = ""):
# if not text or not token:
# raise HTTPException(status_code=400, detail="No text provided")
# verify_token(token)
# print("User_input :- ",text)
# result = process(user_query=text)
# return {"result": result}
@app.post("/audio_chat")
async def audio_chat(audio: UploadFile = File(...), token: str = ""):
if not audio or not token:
raise HTTPException(status_code=400, detail="No audio file provided")
verify_token(token)
try:
result = audio_process(audio.file) # Replace with actual audio processing logic
return {"result": result}
except Exception as e:
raise HTTPException(status_code=500, detail=f"An error occurred: {str(e)}")
# Request model
class FileUploadRequest(BaseModel):
filename: str
content_type: str
base64_file: str
UPLOAD_DIR = "/tmp/uploads"
Path(UPLOAD_DIR).mkdir(parents=True, exist_ok=True)
@app.post("/summarizer")
async def upload_base64(file_data: FileUploadRequest):
try:
print(file_data.filename)
file_path = os.path.join(UPLOAD_DIR, file_data.filename)
with open(file_path, "wb") as f:
f.write(base64.b64decode(file_data.base64_file))
extracted_text = f"Saved file: {file_path}\nContent-Type: {file_data.content_type}\n"
extracted_text += f"(First 100 bytes shown)\n\n"
with open(file_path, "rb") as f:
extracted_text += repr(f.read(100))
return {"text": "api under development"}
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))
@app.post("/upload")
async def upload_file(req: UploadRequest):
session_id = str(uuid.uuid4())
decoded_data = base64.b64decode(req.filedata)
# Save to disk or memory (or pass to RAG pipeline)
uploaded_docs[session_id] = decoded_data
print(session_id)
return {"success": True, "session_id": session_id}
@app.post("/chat")
async def chat(req: ChatRequest):
pdf_data = uploaded_docs.get(req.session_id)
if not pdf_data:
return {"reply": "Session not found."}
# TODO: RAG logic here (e.g., extract text, run through embedding + LLM)
dummy_answer = f" Nice Mocked answer for: '{req.message}'"
return {"reply": dummy_answer}
|