manojsilwal44's picture
Update agent.py
3f59d4a verified
import os
import requests
from security import is_safe_input, sanitize_input
OPENROUTER_API_KEY = os.getenv("OPENROUTER_API_KEY")
API_URL = "https://openrouter.ai/api/v1/chat/completions"
# Correct OpenRouter id (was missing -a12b β†’ 400). Override in Space if needed.
MODEL = os.getenv("OPENROUTER_MODEL", "nvidia/nemotron-3-super-120b-a12b")
def run_agent(user_input: str):
if not is_safe_input(user_input):
return "❌ Blocked for safety."
user_input = sanitize_input(user_input)
if not OPENROUTER_API_KEY:
return "❌ Missing OPENROUTER_API_KEY in Space secrets."
headers = {
"Authorization": f"Bearer {OPENROUTER_API_KEY}",
"Content-Type": "application/json",
"HTTP-Referer": "https://huggingface.co",
"X-Title": "Nemoclaw HF Agent",
}
payload = {
"model": MODEL,
"messages": [
{
"role": "system",
"content": "You are a safe AI assistant. Do not execute code or access system resources.",
},
{"role": "user", "content": user_input},
],
"temperature": 0.7,
"max_tokens": 500,
}
try:
response = requests.post(API_URL, headers=headers, json=payload, timeout=120)
data = response.json()
if response.status_code >= 400:
err = data.get("error", data) if isinstance(data, dict) else {}
msg = err.get("message", str(data)) if isinstance(err, dict) else str(data)
return f"❌ OpenRouter ({response.status_code}): {msg}"
return data["choices"][0]["message"]["content"]
except (KeyError, TypeError, ValueError) as e:
return f"❌ Bad API response: {e}"
except requests.RequestException as e:
return f"❌ Request failed: {e}"