import os from fastapi import FastAPI, HTTPException, Request from fastapi.responses import HTMLResponse from fastapi.staticfiles import StaticFiles from fastapi.templating import Jinja2Templates from pydantic import BaseModel from google import genai app = FastAPI() # স্ট্যাটিক এবং টেমপ্লেট পাথ সেটআপ (যাতে মেমোরি লিক না হয়) templates = Jinja2Templates(directory=".") API_KEY = os.environ.get("GEMINI_API_KEY") if API_KEY: client = genai.Client(api_key=API_KEY) else: client = None class ChatRequest(BaseModel): message: str # রুট ইউআরএল - মেমোরি ফ্রেন্ডলি টেমপ্লেট রেন্ডারিং @app.get("/", response_class=HTMLResponse) async def get_ui(request: Request): try: # index.html সরাসরি রেন্ডার হবে, পাইথনকে কষ্ট করে ফাইল রিড করতে হবে না return templates.TemplateResponse("index.html", {"request": request}) except Exception as e: return HTMLResponse(content=f"

Setup Error: {str(e)}

", status_code=500) # চ্যাট এপিআই এন্ডপয়েন্ট @app.post("/api/chat") async def chat_endpoint(request: ChatRequest): if not client: raise HTTPException(status_code=500, detail="Gemini API Key is missing!") try: response = client.models.generate_content( model='gemini-2.5-flash', contents=request.message, ) return {"reply": response.text} except Exception as e: raise HTTPException(status_code=500, detail=str(e))