darkmedia-x-api / backend /api /gemini_wrapper.py
cybermedia's picture
Upload folder using huggingface_hub
343eed9 verified
import json
import os
import sys
import requests
try:
from dotenv import load_dotenv
load_dotenv()
except ImportError:
pass
SMART_ROUTER_URL = os.getenv("SMART_ROUTER_URL", "https://cybermedia-darkmedia-xapi-ai-smart-router.hf.space")
API_SECRET = os.getenv("SMART_ROUTER_HEADER_API_KEY", "")
def _headers():
h = {"Content-Type": "application/json"}
if API_SECRET:
h["Authorization"] = f"Bearer {API_SECRET}"
return h
def run_gemini_prompt(prompt, mode="auto", system=None):
"""Route toutes les requêtes AI via le Smart Router."""
try:
from .ai_mode import resolve_ai_mode, is_cloud_mode
except ImportError:
from ai_mode import resolve_ai_mode, is_cloud_mode
ai_mode = resolve_ai_mode()
if is_cloud_mode() and mode in ("auto", "local", "ollama"):
mode = "auto"
if not mode or mode == "" or mode == "null":
mode = "local" if ai_mode == "local" else "auto"
print(f"DEBUG_AI: Smart Router request (mode={mode}, ai_mode={ai_mode}, prompt_len={len(prompt)})")
messages = []
if system:
messages.append({"role": "system", "content": system})
messages.append({"role": "user", "content": prompt})
payload = {"messages": messages}
if mode not in ("auto", "local", ""):
payload["model"] = mode
try:
res = requests.post(f"{SMART_ROUTER_URL}/api/chat", json=payload, headers=_headers(), timeout=120)
if res.status_code == 200:
data = res.json()
if "donnees" in data:
donnees = data["donnees"]
text = donnees.get("text") or donnees.get("content") or donnees.get("response")
elif "choices" in data:
text = data["choices"][0]["message"]["content"]
else:
text = data.get("text") or data.get("content") or data.get("response")
if text:
print(f"DEBUG_AI: Smart Router SUCCESS")
return {"status": "success", "response": text.strip(), "error": None}
return {"status": "error", "error": "Empty response from Smart Router"}
else:
err = f"Smart Router Error: {res.status_code} - {res.text}"
print(f"DEBUG_AI: {err}")
return {"status": "error", "error": err}
except Exception as e:
print(f"DEBUG_AI: Smart Router EXCEPTION - {str(e)}")
return {"status": "error", "error": str(e)}
if __name__ == "__main__":
if len(sys.argv) > 1:
print(run_gemini_prompt(" ".join(sys.argv[1:])))