Spaces:
Runtime error
Runtime error
| 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 | |
| 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"<<SYS>>\n{system_prompt}\n<</SYS>>\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)) | |
| async def root(): | |
| return {"message": "Server jalan boss! 🔥"} | |