Spaces:
Sleeping
Sleeping
File size: 1,732 Bytes
983211a bdaa416 437c93b bdaa416 437c93b 9ab8ebc 0f0e748 437c93b bdaa416 0f0e748 9ab8ebc 0f0e748 9ab8ebc 0f0e748 437c93b 0f0e748 bdaa416 437c93b bdaa416 9ab8ebc bdaa416 9ab8ebc bdaa416 0f0e748 bdaa416 437c93b | 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 | 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"<h1>Setup Error: {str(e)}</h1>", 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))
|