From 3df7f88fdc842f6102be82dea4f2b590bd93b1b4 Mon Sep 17 00:00:00 2001 From: Anton Vakhrushev Date: Fri, 3 Jul 2026 09:03:14 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A3=D0=B1=D1=80=D0=B0=D0=BB=20=D0=B8=D0=B7?= =?UTF-8?q?=20=D0=B1=D0=B5=D0=BA=D0=BB=D0=BE=D0=B3=D0=B0=20=D1=83=D1=87?= =?UTF-8?q?=D1=91=D1=82=20=D1=81=D1=82=D0=BE=D0=B8=D0=BC=D0=BE=D1=81=D1=82?= =?UTF-8?q?=D0=B8=20=D0=B8=20=D0=BC=D0=B5=D1=82=D1=80=D0=B8=D0=BA=D0=B8=20?= =?UTF-8?q?LLM=20(docs)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Разные провайдеры и мониторинг запросов к LLM закрыты внешним LLM Gateway (bifrost) на сервере; для наблюдения за состоянием пока достаточно slog. Заодно поправил висячую ссылку на удалённый раздел в «Истории переходов». Co-Authored-By: Claude Opus 4.8 (1M context) --- docs/backlog.md | 30 +----------------------------- 1 file changed, 1 insertion(+), 29 deletions(-) diff --git a/docs/backlog.md b/docs/backlog.md index 4f0afea..774b757 100644 --- a/docs/backlog.md +++ b/docs/backlog.md @@ -121,32 +121,6 @@ qBittorrent — осознанный выход за инвариант «ист матча, провайдер-id), [«Улучшения UI: показывать матч»](#улучшения-ui-показывать-матч-с-записью-метабазы), пакет `httpapi`. -### Наблюдаемость: метрики и учёт стоимости LLM - -Сейчас единственное окно в систему — `slog`. Нет быстрых ответов на -вопросы «сколько задач висит в review», «сколько токенов и денег съело -распознавание», «какова медиана времени ingest → done». Нужны метрики: -эндпоинт `/metrics` (Prometheus-формат) со счётчиками загрузок по -состояниям, длительностями стадий и расходом LLM (токены/стоимость на -задачу). - -**Расход LLM уже снимается с провода** — `llm.openai` парсит `usage` -(prompt/completion/total tokens и `cost`, который отдаёт шлюз) в -`llm.Response.Usage` и пишет в лог. Не хватает только **персистентности и -отображения**: сохранять `usage` у попытки распознавания (`recognition`) и -показывать в карточке загрузки + агрегатом в `/metrics`. Где провайдер не -шлёт `cost` — считать из токенов по таблице «модель → цена» в конфиге. - -Отдельный LLM-прокси (LiteLLM и т.п.) для этого **не нужен** и противоречит -принципам «один бинарь» / «минимум компонентов»: подсчёт токенов уже в коде, -а роль мульти-модельного шлюза играет используемый OpenAI-совместимый -эндпоинт (он и возвращает `cost`); разные модели подключаются сменой -`[llm].model` или новым типом провайдера за интерфейсом `llm.Provider`. - -Связано: [architecture.md](specs/architecture.md) → «Логирование», -[recognition.md](specs/recognition.md) (провайдер LLM, `[llm].type`), -пакеты `worker`, `llm`, `httpapi`. - ### Ретеншн и очистка БД Терминальные задачи (`done`/`cancelled`/`failed`/`reverted`), их попытки @@ -231,9 +205,7 @@ qBittorrent, пул LLM-вызовов и запись в SQLite спроект [drafts/logical-title-model.md](drafts/logical-title-model.md) §5.4 (схема `state_transition`, actor `worker|human|reconcile`), [workflow.md](specs/workflow.md) (граф состояний), -[«Наблюдаемость: метрики»](#наблюдаемость-метрики-и-учёт-стоимости-llm) -(длительности стадий), [database.md](specs/database.md), пакеты `worker`, -`store`. +[database.md](specs/database.md), пакеты `worker`, `store`. ### Машина состояний на go-библиотеке