Files
drhider/History/llm/2026-08-19-llm-metrics.md
T

46 lines
2.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# v0.0.34 — вывод токенов и времени LLM — 2026-08-19
**Дата:** 2026-08-19
**Версия:** 0.0.33 → 0.0.34
---
## Суть
Пользователь замечает, что обфускация долгая. Добавлен вывод в UI:
- суммарных токенов LLM за прогон;
- суммарного времени работы LLM за прогон.
Строка статуса после завершения: «✅ Обработано N файлов за Xс · LLM: Yс · Z токенов».
## Изменения
### `drhider/llm_client.py`
- В `LLMClient.__init__` добавлены кумулятивные счётчики:
- `tokens_prompt`, `tokens_completion`, `llm_sec` (float);
- свойство `tokens_total = prompt + completion`.
- В `complete()` после ответа:
- `self.llm_sec += r.elapsed.total_seconds()` — реальное время HTTP-вызова;
- `usage` (из `r.json()`) → `self.tokens_prompt` / `self.tokens_completion`
(через `.get(..., 0)` — устойчиво к отсутствию `usage`).
- Возврат `complete()` не изменён (по-прежнему `content`) — `scan_llm_ner` не трогали.
### `site/routes/api_bp.py`
- В `worker()` после `obfuscate_files` в очередь `result` добавляется
`stats = {tokens: llm.tokens_total, llm_sec: round(llm.llm_sec, 1)}`.
- В `event: complete` данные: `{total, tokens, llm_sec}`.
### `site/templates/index.html`
- В обработчике `complete`: если `d.llm_sec > 0` — добавляет
«· LLM: {llm_sec}с» и, если `d.tokens > 0` — «· {tokens} токенов».
### `site/app.py`
- `VERSION = "0.0.34"`.
## Проверка
- `py_compile` + `node --check` — OK.
- Накопление: 2 вызова → 240 prompt + 90 completion = 330 total, llm_sec = 6.0.
- Устойчивость: ответ без `usage` → токены 0, время 1.0 — без падения.
- SSE end-to-end: `complete` приходит с `{"total":1,"tokens":0,"llm_sec":0.0}`
(локально без ключа LLM — 0; в кластере с ключом — ненулевые).