docs: пояснения почему выбрана такая логика (reasoning)

This commit is contained in:
Repinoid
2026-06-06 07:24:17 +04:00
parent 8da4876cb8
commit fd8059bb6a
4 changed files with 45 additions and 7 deletions
+10 -1
View File
@@ -41,7 +41,15 @@ class Diagnoser:
self.timeout = timeout
def ask(self, messages: list[dict]) -> str:
"""Отправляет сообщения в LLM API, возвращает текст ответа."""
"""Отправляет сообщения в LLM API, возвращает текст ответа.
Обработка ошибок:
- Timeout: 120+ секунд, LLM могла зависнуть — ретраить
- 429: Rate limit — ждать Retry-After
- 5xx: Сервер LLM упал — ретраить
- 4xx: Наша ошибка (auth, запрос) — не ретраить
Клиенту возвращается безопасное сообщение без технических деталей.
"""
try:
resp = requests.post(
f"{self.base_url}/chat/completions",
@@ -71,6 +79,7 @@ class Diagnoser:
elif 500 <= status < 600:
raise LLMError("LLM временно недоступен. Попробуйте позже.")
else:
# 4xx: неверный ключ, неверный запрос — ретрай бесполезен
raise LLMError("Ошибка LLM. Попробуйте позже.")
except Exception as e:
logger.error(f"LLM unexpected: {e}")