Spaces:
Configuration error
Configuration error
File size: 1,401 Bytes
3dcf399 | 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 | """Google Gemini client - generateContent via generativelanguage.googleapis.com.
Key comes from GOOGLE_API_KEY env (never commit a real key).
"""
import os
import requests
BASE = os.getenv("GEMINI_API_BASE", "https://generativelanguage.googleapis.com/v1beta")
KEY = os.getenv("GOOGLE_API_KEY")
def _req(method, path, **kwargs):
if not KEY:
raise RuntimeError("GOOGLE_API_KEY not set")
return requests.request(method, f"{BASE}{path}", params={"key": KEY}, **kwargs)
def generate_content(text, model="gemini-flash-latest", **kwargs):
body = {"contents": [{"parts": [{"text": text}]}], **kwargs}
r = _req("POST", f"/models/{model}:generateContent", json=body, timeout=120)
try:
return r.json()
except Exception:
return {"status_code": r.status_code, "text": r.text}
def chat(messages, model="gemini-flash-latest", **kwargs):
"""Simple OpenAI-style -> Gemini mapping for the router fallback chain."""
system_parts = [m["content"] for m in messages if m.get("role") == "system"]
user_text = " ".join(m["content"] for m in messages if m.get("role") in ("user", "assistant", "tool"))
kwargs.setdefault("systemInstruction", {"parts": [{"text": system_parts[-1]}]} if system_parts else None)
return generate_content(user_text, model=model, **kwargs)
def list_models():
r = _req("GET", "/models", timeout=30)
return r.json()
|