06. LLM-аналитик: «спросите свои звонки»

Статус доступно
Доступно «Бизнес» — 300 запросов/мес, «Корпоративный» и выше — без лимита
Зависимости 02-architecture.md (ClickHouse, S3-транскрипты), 03-models.md §3.2 (Qwen локально)

Проблема

Дашборды отвечают на вопросы, которые мы предвидели, а руководитель спрашивает другое: «почему в марте упала конверсия в Москве», «что говорят клиенты про новую цену», «покажи, где менеджеры обещают скидку и не дают». Чтобы ответить, аналитик строит выгрузку, читает транскрипты — и через два дня приносит ответ, который уже неактуален.

Решение

Вопрос на русском языке → ответ с доказательствами. Три шага внутри:

  1. Разбор вопроса. LLM определяет тип: агрегатный («сколько», «динамика», «сравни») или содержательный («что говорят», «какие причины», «найди»).
  2. Исполнение. Для агрегатов генерируется запрос к ClickHouse (только по заранее разрешённым представлениям, без произвольного SQL). Для содержательных вопросов — семантический поиск по транскриптам (индексы фрагментов) + выборка релевантных звонков.
  3. Ответ с цитатами. Всегда: числа — со ссылкой на дашборд-источник, цитаты — с ссылкой на карточку звонка и таймкод. Если данных недостаточно — честное «в базе нет таких разговоров» вместо правдоподобной выдумки.

Границы, которые мы фиксируем заранее: - Отвечаем только по данным заказчика, ничего не додумываем из общей модели. - Никаких персональных данных в ответе: телефоны и суммы маскируются по настройке анкеты E. - Каждый запрос и ответ — в журнале аудита (кто спросил, что получил, сколько стоило). - Стоимость одного запроса оценивается и ограничивается; запросы с тяжёлыми выгрузками уходят в асинхронный режим с уведомлением.

Как это выглядит

Метрики успеха

Метрика Цель
Ответы с корректными ссылками на источник ≥ 95 % (проверяется выборочно)
Ответ на содержательный вопрос ≤ 15 секунд (p95)
Ресурс на запрос локальная LLM внутри контура
Доля вопросов, на которые клиент получил действие ≥ 30 % (перешли в звонок/задачу)
Повторное использование через месяц ≥ 50 % активных пользователей тарифа

Как это устроено у нас