MusAI / main.py
Eng-Musa's picture
allow hf origin
2388163
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from pydantic import BaseModel
from functools import lru_cache
from clients.groq_client import GroqClient
app = FastAPI()
# ✅ Allowed origins
origins = [
"http://localhost:4200",
"https://mosesmangabo.vercel.app",
"https://chatbot-bridge-service.onrender.com"
"https://eng-musa-chatbotbridge.hf.space"
]
app.add_middleware(
CORSMiddleware,
allow_origins=origins,
allow_credentials=True,
allow_methods=["*"], # allow all HTTP methods (GET, POST, etc.)
allow_headers=["*"], # allow all headers
)
class QueryRequest(BaseModel):
query: str
# Lazy singleton for GroqClient
@lru_cache(maxsize=1)
def get_groq_client():
return GroqClient()
@app.post("/chat")
async def chat_endpoint(request: QueryRequest):
try:
groq_client = get_groq_client()
response = groq_client.ask(request.query)
if response.startswith("Error while"):
return {"status_code": 500, "response": response, "next_questions": []}
return {
"status_code": 200,
"response": response,
"next_questions": groq_client.get_next_questions(),
}
except Exception as e:
return {"status_code": 500, "response": f"Internal error: {e}", "next_questions": []}
@app.get("/")
def healthcheck():
return {"status": "ok"}
#python -m uvicorn main:app --reload