Download main.py from Eng-Musa/MusAI: direct link, hf CLI and curl.
- Browser
- Download file 1.44 kB
-
https://huggingface.co/spaces/Eng-Musa/MusAI/resolve/c3be2798e8cb337993b91810f855de95dcafe3bd/main.py
- Command line
-
hf download hf://spaces/Eng-Musa/MusAI@c3be2798e8cb337993b91810f855de95dcafe3bd/main.py
-
curl -L -o main.py https://huggingface.co/spaces/Eng-Musa/MusAI/resolve/c3be2798e8cb337993b91810f855de95dcafe3bd/main.py
1.44 kB
| 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, ...) | |
| allow_headers=["*"], # allow all headers | |
| ) | |
| class QueryRequest(BaseModel): | |
| query: str | |
| # Lazy singleton for GroqClient | |
| def get_groq_client(): | |
| return GroqClient() | |
| 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": []} | |
| def healthcheck(): | |
| return {"status": "ok"} | |
| #python -m uvicorn main:app --reload | |