ChatLLM / app.py
VikaskumarDas's picture
Update app.py
bdaa416 verified
Raw
History Blame Contribute Delete
1.73 kB
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))