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))