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