Spaces:
Runtime error
Runtime error
File size: 1,607 Bytes
e401392 136b6b1 e401392 | 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 46 47 48 49 50 51 52 53 54 55 56 57 | 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"<<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))
@app.get("/")
async def root():
return {"message": "Server jalan boss! 🔥"}
|