docs: пояснения почему выбрана такая логика (reasoning)
This commit is contained in:
+10
-1
@@ -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}")
|
||||
|
||||
Reference in New Issue
Block a user