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! 🔥"}