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}
if 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)
if resp.status_code != 200:
return ""
data = resp.json()
answer = (data.get("answer") or "").strip()
answer = (data.get("reply") or data.get("answer") or "").strip()
return answer
except (httpx.RequestError, ValueError):
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]:
meta = {
"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_TOKEN = os.getenv("AI_ATLASBOT_TOKEN", "").strip()
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_SMART = os.getenv("AI_ATLASBOT_MODEL_SMART", "").strip()
AI_ATLASBOT_MODEL_GENIUS = os.getenv("AI_ATLASBOT_MODEL_GENIUS", "").strip()