Spaces:
Sleeping
Sleeping
| 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 | |
| # -------------------- | |
| 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)) | |