From 84bd0cb34a642dbd60f192faf2618c3d8611f6f2 Mon Sep 17 00:00:00 2001 From: Repinoid Date: Thu, 28 May 2026 10:48:32 +0300 Subject: [PATCH] =?UTF-8?q?fix:=20LLM=20timeout=2060=E2=86=92120=D1=81=20+?= =?UTF-8?q?=20graceful=20fallback=20=D0=B1=D0=B5=D0=B7=20500=20=D0=BE?= =?UTF-8?q?=D1=88=D0=B8=D0=B1=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- elmer/diagnose.py | 2 +- web/script_endpoint.py | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/elmer/diagnose.py b/elmer/diagnose.py index bbc90c5..d2460e3 100644 --- a/elmer/diagnose.py +++ b/elmer/diagnose.py @@ -28,7 +28,7 @@ class Diagnoser: "temperature": 0.3, # пониже — меньше фантазий "max_tokens": 4096, }, - timeout=60, + timeout=120, # api.aillm.ru бывает медленным ) resp.raise_for_status() data = resp.json() diff --git a/web/script_endpoint.py b/web/script_endpoint.py index 314f3d2..7fd73a8 100644 --- a/web/script_endpoint.py +++ b/web/script_endpoint.py @@ -86,7 +86,11 @@ def register(app): model=cfg["llm"].get("model", "gpt-oss-120b"), base_url=cfg["llm"].get("base_url", "https://api.aillm.ru/v1"), ) - answer = diagnoser.diagnose(SYSTEM_PROMPT, _build_diagnosis_prompt(parsed)) + try: + answer = diagnoser.diagnose(SYSTEM_PROMPT, _build_diagnosis_prompt(parsed)) + except Exception as e: + logger.warning(f"LLM failed: {e}") + answer = format_no_llm(parsed) + f"\n\n(LLM недоступен: {e})" return jsonify({ "diagnosis": answer,