[ZILANT] коррекция работы фронта с долгим ответом ИИ
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/push/woodpecker Pipeline was successful
This commit is contained in:
+18
-8
@@ -91,7 +91,7 @@ def _generate_shortname_by_api(text):
|
||||
}
|
||||
|
||||
try:
|
||||
response = requests.post(url, headers=headers, json=data, timeout=60)
|
||||
response = requests.post(url, headers=headers, json=data, timeout=180)
|
||||
|
||||
# Обработка ошибки 429 (Too Many Requests)
|
||||
if response.status_code == 429:
|
||||
@@ -109,12 +109,14 @@ def _generate_shortname_by_api(text):
|
||||
|
||||
log_message(f"Ошибка 429: Превышен лимит запросов. Ответ API: {json.dumps(error_info, ensure_ascii=False)}")
|
||||
print("Ошибка 429: Превышен лимит запросов. Подробности в логе.")
|
||||
sys.exit(1)
|
||||
# Не sys.exit — эта функция вызывается и из веб-API Flask
|
||||
raise RuntimeError("RouterAI 429: превышен лимит запросов")
|
||||
|
||||
response.raise_for_status()
|
||||
result = response.json()
|
||||
|
||||
# Извлекаем только текст ответа
|
||||
# Извлекаем только текст ответа (у thinking-моделей ответ в content,
|
||||
# рассуждения — в reasoning_content / reasoning)
|
||||
message = result['choices'][0]['message']
|
||||
shortname = (message.get('content') or '').strip()
|
||||
if not shortname:
|
||||
@@ -123,6 +125,12 @@ def _generate_shortname_by_api(text):
|
||||
|
||||
# Удаляем возможные кавычки и лишние символы
|
||||
shortname = re.sub(r'^["\']|["\']$', '', shortname)
|
||||
# Если модель вернула многострочный ответ — берём первую непустую строку
|
||||
for line in shortname.splitlines():
|
||||
line = line.strip()
|
||||
if line:
|
||||
shortname = line
|
||||
break
|
||||
|
||||
# Обрезаем до 80 символов
|
||||
return shortname[:80]
|
||||
@@ -143,12 +151,14 @@ def _generate_shortname_by_api(text):
|
||||
|
||||
log_message(f"Ошибка 429: Превышен лимит запросов. Ответ API: {json.dumps(error_info, ensure_ascii=False)}")
|
||||
print("Ошибка 429: Превышен лимит запросов. Подробности в логе.")
|
||||
sys.exit(1)
|
||||
raise RuntimeError("RouterAI 429: превышен лимит запросов")
|
||||
else:
|
||||
error_msg = f"HTTP ошибка при генерации названия: {e}"
|
||||
log_message(error_msg)
|
||||
print(error_msg)
|
||||
return None
|
||||
except RuntimeError:
|
||||
raise
|
||||
except Exception as e:
|
||||
error_msg = f"Ошибка при генерации названия: {e}"
|
||||
log_message(error_msg)
|
||||
@@ -238,10 +248,10 @@ def ai_shortname_all():
|
||||
|
||||
log_message("Обработка всех записей завершена")
|
||||
print("Обработка завершена")
|
||||
except SystemExit:
|
||||
# Перехватываем системный выход для корректного закрытия соединения
|
||||
log_message("Завершение работы из-за ошибки 429")
|
||||
print("Завершение работы из-за ошибки 429")
|
||||
except RuntimeError as e:
|
||||
# 429 и прочие явные ошибки RouterAI
|
||||
log_message(f"Завершение работы: {e}")
|
||||
print(f"Завершение работы: {e}")
|
||||
except Exception as e:
|
||||
error_msg = f"Произошла ошибка при обработке записей: {e}"
|
||||
log_message(error_msg)
|
||||
|
||||
Reference in New Issue
Block a user