ai: enforce mode timeouts and accept atlasbot reply payload

This commit is contained in:
Brad Stein 2026-03-30 03:37:33 -03:00
parent 03b282da20
commit 9b87c8bfbd
2 changed files with 19 additions and 2 deletions

View File

@ -65,17 +65,25 @@ def _atlasbot_answer(message: str, mode: str, conversation_id: str) -> str:
payload = {"prompt": message, "mode": mode} payload = {"prompt": message, "mode": mode}
if conversation_id: if conversation_id:
payload["conversation_id"] = conversation_id payload["conversation_id"] = conversation_id
with httpx.Client(timeout=settings.AI_ATLASBOT_TIMEOUT_SEC) as client: with httpx.Client(timeout=_atlasbot_timeout_sec(mode)) as client:
resp = client.post(endpoint, json=payload, headers=headers) resp = client.post(endpoint, json=payload, headers=headers)
if resp.status_code != 200: if resp.status_code != 200:
return "" return ""
data = resp.json() data = resp.json()
answer = (data.get("answer") or "").strip() answer = (data.get("reply") or data.get("answer") or "").strip()
return answer return answer
except (httpx.RequestError, ValueError): except (httpx.RequestError, ValueError):
return "" return ""
def _atlasbot_timeout_sec(mode: str) -> float:
if mode == "genius":
return settings.AI_ATLASBOT_TIMEOUT_GENIUS_SEC
if mode == "smart":
return settings.AI_ATLASBOT_TIMEOUT_SMART_SEC
return settings.AI_ATLASBOT_TIMEOUT_QUICK_SEC
def _discover_ai_meta(profile: str) -> dict[str, str]: def _discover_ai_meta(profile: str) -> dict[str, str]:
meta = { meta = {
"node": settings.AI_NODE_NAME, "node": settings.AI_NODE_NAME,

View File

@ -29,6 +29,15 @@ AI_CHAT_TIMEOUT_SEC = float(os.getenv("AI_CHAT_TIMEOUT_SEC", "20"))
AI_ATLASBOT_ENDPOINT = os.getenv("AI_ATLASBOT_ENDPOINT", "").strip() AI_ATLASBOT_ENDPOINT = os.getenv("AI_ATLASBOT_ENDPOINT", "").strip()
AI_ATLASBOT_TOKEN = os.getenv("AI_ATLASBOT_TOKEN", "").strip() AI_ATLASBOT_TOKEN = os.getenv("AI_ATLASBOT_TOKEN", "").strip()
AI_ATLASBOT_TIMEOUT_SEC = float(os.getenv("AI_ATLASBOT_TIMEOUT_SEC", "5")) AI_ATLASBOT_TIMEOUT_SEC = float(os.getenv("AI_ATLASBOT_TIMEOUT_SEC", "5"))
AI_ATLASBOT_TIMEOUT_QUICK_SEC = float(
os.getenv("AI_ATLASBOT_TIMEOUT_QUICK_SEC", str(max(AI_ATLASBOT_TIMEOUT_SEC, 15)))
)
AI_ATLASBOT_TIMEOUT_SMART_SEC = float(
os.getenv("AI_ATLASBOT_TIMEOUT_SMART_SEC", str(max(AI_ATLASBOT_TIMEOUT_SEC, 45)))
)
AI_ATLASBOT_TIMEOUT_GENIUS_SEC = float(
os.getenv("AI_ATLASBOT_TIMEOUT_GENIUS_SEC", str(max(AI_ATLASBOT_TIMEOUT_SEC, 180)))
)
AI_ATLASBOT_MODEL_FAST = os.getenv("AI_ATLASBOT_MODEL_FAST", "").strip() AI_ATLASBOT_MODEL_FAST = os.getenv("AI_ATLASBOT_MODEL_FAST", "").strip()
AI_ATLASBOT_MODEL_SMART = os.getenv("AI_ATLASBOT_MODEL_SMART", "").strip() AI_ATLASBOT_MODEL_SMART = os.getenv("AI_ATLASBOT_MODEL_SMART", "").strip()
AI_ATLASBOT_MODEL_GENIUS = os.getenv("AI_ATLASBOT_MODEL_GENIUS", "").strip() AI_ATLASBOT_MODEL_GENIUS = os.getenv("AI_ATLASBOT_MODEL_GENIUS", "").strip()