Представьте: ваша LLM-система внезапно начинает генерировать опасные ответы — пользователи видят персональные данные в выводе, а compliance-офицер требует аудита. Вы открываете логи: пусто. Ни одного сохранённого запроса. Стоимость токенов растёт, а вы не знаете, какая модель сколько съела. Без структурированного логирования вы теряете контроль над системой. Мы сталкивались с этим десятки раз: компании теряют часы на отладку, потому что не знают, что именно отправили в промпт. У нас за плечами 5+ лет опыта в MLOps и более 30 проектов по логированию AI-систем. Мы настраиваем логирование под ключ, чтобы у вас был полный аудит каждого запроса и ответа. Это не просто логирование — это система, которая позволяет отлаживать ошибки, считать реальную стоимость каждого запроса, соблюдать требования регуляторов (GDPR, 152-ФЗ) и оптимизировать промпты. Без неё вы рискуете потерять деньги и репутацию. Свяжитесь с нами, чтобы получить демо архитектуры за два дня.
Почему логирование критично для LLM?
LLM — это не просто API-вызов. Большие объёмы данных, PII в промптах, high cardinality значений (разные user_id, модели, параметры). Без логов вы не сможете:
- Отлаживать ошибки: при сбое нет контекста.
- Считать стоимость: каждый токен — деньги, но неизвестно, кто и сколько потратил.
- Соблюдать требования регуляторов: GDPR и 152-ФЗ требуют аудита обработки данных.
Мы реализовали систему логирования для fintech-клиента, которая обрабатывает 10 тысяч запросов в минуту. После внедрения клиент сократил затраты на LLM на 30 процентов — выявили неоптимальные промпты и снизили количество токенов. Это типичный кейс: без логов оптимизация сводится к гаданию.
Как PII-фильтрация предотвращает утечки?
Перед записью все сообщения проходят через фильтр, который маскирует номера карт, email, телефоны. Пример:
import re class PIIFilter: PATTERNS = [ (r'\b\d{4}[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4}\b', '[CARD_NUMBER]'), (r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b', '[EMAIL]'), ] def filter(self, text: str) -> str: for pattern, replacement in self.PATTERNS: text = re.sub(pattern, replacement, text) return text Важно: фильтр должен быть исчерпывающим, иначе под раздачу попадут данные клиентов. Мы добавляем кастомные паттерны под ваш домен.
Как настроить логирование: пошаговая инструкция
-
Выбор библиотеки. Используем
structlogдля Python — он даёт чистый JSON с контекстом и легко интегрируется с OpenTelemetry. По умолчанию включает таймстемпы, имена логгеров и уровни — всё, что нужно для централизованного сбора. OpenTelemetry Logging Best Practices - PII-фильтрация. Описана выше.
- Выбор хранилища. Для горячих логов используем ClickHouse — он в 3–5 раз быстрее Elasticsearch на агрегациях. Для холодного архива — S3 Glacier с Lifecycle policies. Например, тёплые логи (7–30 дней) хранятся в S3 Standard, а после 30 дней автоматически мигрируют в Glacier.
- Настройка метрик. Логируем model, prompt_tokens, completion_tokens, latency_ms, cost_usd, error_type. Для compliance — полное тело запроса (после PII-фильтрации).
Пример конфигурации structlog
import structlog structlog.configure( processors=[ structlog.stdlib.filter_by_level, structlog.stdlib.add_logger_name, structlog.stdlib.add_log_level, structlog.processors.TimeStamper(fmt="iso"), structlog.processors.JSONRenderer() ], context_class=dict, logger_factory=structlog.stdlib.LoggerFactory(), cache_logger_on_first_use=True, ) Хранение и архивирование логов
| Уровень | Срок хранения | Хранилище | Назначение |
|---|---|---|---|
| Горячие | < 7 дней | ClickHouse | Поиск и дашборды |
| Тёплые | 7–30 дней | S3 Standard | Аудит |
| Холодные | 30–365 дней | S3 Glacier | Compliance |
Удаление по истечении срока — через Lifecycle rules. Стоимость хранения минимальна: на практике для 10 тысяч запросов в минуту расходы не превышают 3 процентов от бюджета на LLM. Рекомендуем настраивать шифрование server-side AES256 для всех уровней.
Какие метрики мониторить
| Метрика | Описание | Важность |
|---|---|---|
| latency_p99 | Задержка 99-го перцентиля: показатель, на который жалуются пользователи | Критична |
| cost_per_user | Стоимость на пользователя: помогает выявить аномалии потребления | Высокая |
| error_rate | Доля ошибок: если превышает 1% — пора разбираться | Высокая |
| prompt_tokens | Распределение длины промптов: длинные промпты дорогие | Средняя |
| cache_hit_rate | Процент попаданий в кэш: если низкий, кэширование неэффективно | Средняя |
Для каждой метрики настраиваются алерты в Grafana. Если latency_p99 превышает 2 секунды — получаете уведомление в Telegram или Slack.
Что входит в настройку под ключ
- Аудит текущей архитектуры: выявление узких мест и утечек PII.
- Интеграция structlog и OpenTelemetry в ваш сервис на Python или Node.js.
- Развёртывание ClickHouse для горячих логов и S3 для архива.
- Настройка retention, шифрования (server-side AES256) и Lifecycle policies.
- Дашборды в Grafana: latency p99, cost per user, ошибки по модели.
- Документация и обучение команды.
Мы гарантируем, что после внедрения каждый запрос и ответ будут зафиксированы с полным контекстом. Оставьте заявку на аудит текущей системы логирования — наши инженеры проанализируют вашу инфраструктуру и предложат оптимальную конфигурацию. Получите демо архитектуры за два дня.







