fix(legal): add model cascade fallback on 503/429 high demand spikes
This commit is contained in:
parent
2924765624
commit
5c437b78b0
1 changed files with 40 additions and 26 deletions
|
|
@ -204,8 +204,18 @@ class AILegalEngine:
|
|||
f"{self.get_role_instructions(role)}"
|
||||
)
|
||||
|
||||
model_to_use = self.model_name
|
||||
# Каскад моделей при перегрузке или временной недоступности (503/429)
|
||||
models_to_try = [
|
||||
self.model_name,
|
||||
"gemini-flash-latest",
|
||||
"gemini-3-flash-preview"
|
||||
]
|
||||
# Убираем дубликаты с сохранением порядка
|
||||
seen = set()
|
||||
models_cascade = [m for m in models_to_try if not (m in seen or seen.add(m))]
|
||||
|
||||
last_err = None
|
||||
for model_to_use in models_cascade:
|
||||
try:
|
||||
reply_text = await self._query_rest_api(
|
||||
prompt=prompt,
|
||||
|
|
@ -226,11 +236,15 @@ class AILegalEngine:
|
|||
}
|
||||
|
||||
except Exception as e:
|
||||
last_err = e
|
||||
log.warning(f"Model {model_to_use} failed ({e}), trying next fallback...")
|
||||
await asyncio.sleep(0.5)
|
||||
|
||||
latency = (datetime.now() - start_time).total_seconds()
|
||||
log.error(f"Gemini Error: {e}")
|
||||
log.error(f"All Gemini fallback models failed: {last_err}")
|
||||
return {
|
||||
"success": False,
|
||||
"text": f"Ошибка обработки запроса ИИ: {e}",
|
||||
"text": f"Шлюз ИИ временно перегружен. Пожалуйста, повторите вопрос через несколько секунд.",
|
||||
"role": role,
|
||||
"latency_sec": round(latency, 2)
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue