Spaces:
Sleeping
Sleeping
| 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 | |
| # রুট ইউআরএল - মেমোরি ফ্রেন্ডলি টেমপ্লেট রেন্ডারিং | |
| async def get_ui(request: Request): | |
| try: | |
| # index.html সরাসরি রেন্ডার হবে, পাইথনকে কষ্ট করে ফাইল রিড করতে হবে না | |
| return templates.TemplateResponse("index.html", {"request": request}) | |
| except Exception as e: | |
| return HTMLResponse(content=f"<h1>Setup Error: {str(e)}</h1>", status_code=500) | |
| # চ্যাট এপিআই এন্ডপয়েন্ট | |
| 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)) | |