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:])))