Фото (тест-режим): детальный отчёт ИИ — время, токены (приём/отдача), скорость ток/сек, детали ошибок
This commit is contained in:
+40
-6
@@ -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)
|
||||
|
||||
|
||||
# =========================================================
|
||||
|
||||
Reference in New Issue
Block a user