from fastapi import FastAPI, HTTPException from pydantic import BaseModel from fastapi.middleware.cors import CORSMiddleware import os import google.generativeai as genai # Load API Key dari environment api_key = os.environ.get("GEMINI_API_KEY") if not api_key: raise RuntimeError("❌ API key Gemini tidak ditemukan. Tambahkan di Secrets!") genai.configure(api_key=api_key) model = genai.GenerativeModel("gemini-1.5-flash") app = FastAPI() # CORS agar bisa diakses dari frontend app.add_middleware( CORSMiddleware, allow_origins=["*"], # Produksi? Ubah ke domain spesifik allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) class PromptRequest(BaseModel): prompt: str max_new_tokens: int = 300 temperature: float = 0.7 @app.post("/generate") async def generate_text(req: PromptRequest): try: system_prompt = """\ Kamu adalah tutor bahasa Inggris yang ramah dan interaktif. Jawab dalam Bahasa Indonesia. Berikan SATU contoh kalimat dalam bahasa Inggris. Jangan membuat dialog, langsung jawab to the point. """ final_prompt = f"<>\n{system_prompt}\n<>\n\n{req.prompt}" result = model.generate_content( [final_prompt], generation_config={ "temperature": req.temperature, "max_output_tokens": req.max_new_tokens, } ) return {"generated_text": result.text} except Exception as e: raise HTTPException(status_code=500, detail=str(e)) @app.get("/") async def root(): return {"message": "Server jalan boss! 🔥"}