File size: 1,517 Bytes
794a4dd
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
58
59
60
61
62
import os
from fastapi import FastAPI, Request, HTTPException
from fastapi.middleware.cors import CORSMiddleware
from google import genai
from google.genai import types

# --------------------
# App setup
# --------------------
app = FastAPI()

app.add_middleware(
    CORSMiddleware,
    allow_origins=["*"],
    allow_methods=["*"],
    allow_headers=["*"],
)

# --------------------
# Gemini client
# --------------------
# HF → Settings → Variables and secrets
# Name: GEMINI_API_KEY
client = genai.Client()  # auto-picks GEMINI_API_KEY

DEFAULT_MODEL = "gemini-2.5-flash"

# --------------------
# Routes
# --------------------
@app.post("/api/generate")
async def generate(req: Request):
    try:
        payload = await req.json()

        model = payload.get("model", DEFAULT_MODEL)
        config = payload.get("config", None)

        # Simple mode
        if "prompt" in payload:
            contents = payload["prompt"]
        # Full SDK-compatible payload
        elif "contents" in payload:
            contents = payload["contents"]
        else:
            raise HTTPException(
                status_code=400,
                detail="Expected `prompt` or `contents`",
            )

        response = client.models.generate_content(
            model=model,
            contents=contents,
            config=config,
        )

        # Return raw structured response
        return response.model_dump()

    except Exception as e:
        raise HTTPException(status_code=500, detail=str(e))