Фото (тест-режим): детальный отчёт ИИ — время, токены (приём/отдача), скорость ток/сек, детали ошибок

This commit is contained in:
dddennnisss
2026-08-22 10:59:29 +07:00
parent e08c861149
commit 7fa515de58
6 changed files with 78 additions and 13 deletions
+40 -6
View File
@@ -309,7 +309,8 @@ def _photo_test_ai_checking(emojis: dict) -> str:
def _photo_test_receiving(emojis: dict) -> str:
return "🧪 <i>Ищу лицо на фото (тестовый режим), пожалуйста, подождите...</i>"
def _photo_test_result(verdict: str, reason: str, mimi: str = '', grafika: str = '', emojis: dict = None) -> str:
def _photo_test_result(verdict: str, reason: str, mimi: str = '', grafika: str = '',
ai_metrics: dict = None, emojis: dict = None) -> str:
emojis = emojis or {}
icons = {"Прошел": "", "Не прошел": "", "На модерацию": ""}
icon = icons.get(verdict, "")
@@ -322,19 +323,51 @@ def _photo_test_result(verdict: str, reason: str, mimi: str = '', grafika: str =
detail = "\n".join(lines) + "\n\n"
else:
detail = ""
metrics_block = ''
if ai_metrics:
ml = ["📊 <b>Технические показатели</b>"]
tt = ai_metrics.get('total_time')
if tt is not None:
ml.append(f"⏱ Время ответа: <b>{tt:.2f} сек</b>")
pt = ai_metrics.get('prompt_tokens')
gps = ai_metrics.get('prompt_per_second')
if pt is not None:
s = f"⬇️ Приём (промпт): <b>{pt} токенов</b>"
if gps is not None:
s += f"{gps:.1f} ток/сек"
ml.append(s)
ct = ai_metrics.get('completion_tokens')
ggs = ai_metrics.get('predicted_per_second')
if ct is not None:
s = f"⬆️ Отдача (генерация): <b>{ct} токенов</b>"
if ggs is not None:
s += f"{ggs:.1f} ток/сек"
ml.append(s)
if len(ml) > 1:
metrics_block = "\n".join(ml) + "\n\n"
return (
f"🧪 <b>Тестовый режим: вердикт ИИ</b>\n\n"
f"{icon} <b>Вердикт:</b> {verdict}\n"
f"{detail}"
f"📝 <b>Причина:</b> {reason}\n\n"
f"{metrics_block}"
f"⚠️ <i>Тестовый режим: фото не публиковалось и никуда не отправлялось.</i>\n\n"
f"{emojis.get('2', '2')} — Загрузить другое фото\n"
f"{emojis.get('0', '0')}В главное меню"
)
def _photo_test_ai_error(emojis: dict) -> str:
def _photo_test_ai_error(emojis: dict, error: str = '', elapsed: float = None) -> str:
detail = ''
err = (error or '').strip()
if len(err) > 400:
err = err[:400] + ''
if err:
detail += f"📋 <b>Детали:</b> <i>{err}</i>\n"
if elapsed is not None:
detail += f"⏱ Время до ошибки: <b>{elapsed:.1f} сек</b>\n"
return (
f"❌ <b>Ошибка обращения к ИИ.</b>\n\n"
f"{detail}\n"
f"Проверьте доступность ИИ-сервиса. Повторите попытку позже.\n\n"
f"{emojis['1']} — Повторить проверку\n"
f"{emojis['2']} — Загрузить другое фото\n"
@@ -428,11 +461,12 @@ PHOTO_TEST_PREVIEW_TEXT = _photo_test_preview(EMOJI_DIGITS)
PHOTO_TEST_AI_CHECKING_TEXT = _photo_test_ai_checking(EMOJI_DIGITS)
PHOTO_TEST_RECEIVING_TEXT = _photo_test_receiving(EMOJI_DIGITS)
def photo_test_result(verdict: str, reason: str, mimi: str = '', grafika: str = '') -> str:
return _photo_test_result(verdict, reason, mimi, grafika, EMOJI_DIGITS)
def photo_test_result(verdict: str, reason: str, mimi: str = '', grafika: str = '',
ai_metrics: dict = None) -> str:
return _photo_test_result(verdict, reason, mimi, grafika, ai_metrics, EMOJI_DIGITS)
def photo_test_ai_error() -> str:
return _photo_test_ai_error(EMOJI_DIGITS)
def photo_test_ai_error(error: str = '', elapsed: float = None) -> str:
return _photo_test_ai_error(EMOJI_DIGITS, error, elapsed)
# =========================================================