English translation is not available yet. Showing Russian content.

Как вы обрабатываете production incident с LLM (playbook)?

Краткий тезис

Production incident с LLM — это любое критическое отклонение в работе системы, от галлюцинаций до внезапного роста стоимости. Playbook — это формализованный набор шагов: Detect (обнаружение через мониторинг), Page on-call (эскалация), Mitigate (немедленное снижение ущерба: rollback, fallback), RCA (анализ первопричины), Fix (исправление), Prevent (долгосрочные меры). Главная особенность LLM-инцидентов — их качественная природа: метрики вроде faithfulness или toxicity требуют отдельного мониторинга, а не только latency и error rate.


1. Термин: Production Incident с LLM

Production incident — это событие, которое нарушает нормальную работу сервиса или снижает его качество. Для LLM-систем инциденты бывают:

  • Качественные: галлюцинации, токсичные ответы, потеря контекста, неверные факты.
  • Инфраструктурные: рост latency, ошибки 5xx, падение GPU-нод, превышение лимитов API.
  • Безопасностные: prompt injection, утечка данных, генерация вредоносного контента.
  • Финансовые: неожиданный рост cost per query из-за увеличения длины контекста или числа токенов.

Playbook — это документ, который описывает, кто, что и когда делает при инциденте. Он должен быть конкретным, проверяемым и автоматизированным.


2. Этап 1: Detection — обнаружение инцидента

Обнаружение строится на мониторинге нескольких слоёв:

СлойМетрикиИнструменты
ИнфраструктураLatency (p50, p95, p99), Error rate (HTTP 4xx/5xx), GPU utilization, MemoryPrometheus, Grafana, Datadog
Качество ответовFaithfulness, Answer relevance, Context recall (через LLM-as-judge)LangSmith, Weights & Biases, RAGAS
БезопасностьToxicity score, PII leakage, Prompt injection detectionGuardrails AI, NeMo Guardrails
СтоимостьCost per query, Total tokens per day, API costCloud billing, MLflow

Пороги срабатывания (alerts):

  • Latency p99 > 3x baseline → инцидент производительности.
  • Faithfulness < 0.7 → возможны галлюцинации.
  • Error rate > 1% → проблема с LLM API или инфраструктурой.
  • Cost per query > 2x baseline → утечка токенов или бесконечный цикл.

3. Этап 2: Page on-call — эскалация

После срабатывания алерта нужно уведомить дежурного инженера (on-call). Процесс:

  1. Severity classification:

    • P0 (критический): сервис полностью недоступен, генерируются опасные ответы. Время реакции — 5 минут.
    • P1 (высокий): серьёзное ухудшение качества, но сервис работает. Время реакции — 15 минут.
    • P2 (средний): незначительные ошибки, не влияющие на пользователей. Время реакции — 1 час.
    • P3 (низкий): косметические проблемы, можно отложить.
  2. Каналы: PagerDuty, Opsgenie, Slack-бот с кнопками "Принять/Эскалировать".

  3. Первичный дамп: on-call инженер собирает логи, метрики, трассировку запросов (через OpenTelemetry или LangFuse).


4. Этап 3: Mitigate — немедленное снижение ущерба

Цель — остановить или ограничить негативное влияние, не дожидаясь полного исправления.

ДействиеКогда применятьПример
RollbackПосле деплоя новой модели/промпта/данныхОткатить версию модели с v2 на v1
FallbackПри сбое LLM API или галлюцинацияхПереключиться на rule-based ответ или кэш
Feature flagДля отключения проблемной фичиОтключить multi-step reasoning
Rate limitingПри аномальном росте трафикаОграничить запросы на пользователя
Kill switchПри угрозе безопасностиПолностью остановить сервис (редко)

Важно: все действия должны быть автоматизированы через CI/CD pipeline или feature flag system (LaunchDarkly, Unleash). Ручные действия — зона риска.


5. Этап 4: Root Cause Analysis (RCA)

После стабилизации проводится анализ первопричины. Для LLM-инцидентов RCA включает:

  1. Сбор данных:

    • Логи запросов и ответов (сэмплирование за период инцидента).
    • Метрики мониторинга (latency, error rate, cost).
    • Версии модели, промпта, эмбеддингов, чанков.
    • A/B тесты (если был канареечный деплой).
  2. Гипотезы:

    • Data drift: изменилось распределение пользовательских запросов.
    • Model drift: новая версия модели (например, GPT-4 → GPT-4-turbo) ведёт себя иначе.
    • Prompt regression: изменение промпта привело к неожиданным эффектам.
    • Infrastructure: сбой в векторной БД, перегрузка GPU.
    • External API: провайдер LLM изменил поведение (например, OpenAI deprecation).
  3. Валидация:

    • Воспроизвести инцидент в staging-окружении.
    • Использовать A/B тесты для сравнения версий.
    • Проверить offline метрики (hit rate, MRR) на исторических данных.

6. Этап 5: Fix — исправление

Исправление зависит от найденной причины:

ПричинаФикс
Data driftОбновить эмбеддинги, переиндексировать документы, добавить новые чанки
Model driftОткатить модель, добавить guardrails, изменить temperature
Prompt regressionВернуть старый промпт, добавить тесты на промпты (prompt testing)
InfrastructureУвеличить ресурсы, добавить реплики, оптимизировать запросы
External APIДобавить fallback на другого провайдера, кэшировать ответы

Hotfix — быстрое исправление, которое деплоится вне обычного цикла. Для LLM-систем hotfix может быть:

  • Изменение системного промпта через feature flag.
  • Блокировка определённых запросов через regex.
  • Переключение на более дешёвую/безопасную модель.

7. Этап 6: Prevent — предотвращение повторения

Долгосрочные меры делятся на три категории:

  1. Мониторинг:

  2. Тестирование:

    • Regression tests: набор промптов с ожидаемыми ответами (golden dataset).
    • Red teaming: автоматизированные атаки (prompt injection, jailbreak).
    • Chaos engineering: симуляция сбоев (отказ API, высокая нагрузка).
  3. Процессы:


8. Специфика LLM-инцидентов: что нужно знать

  • Галлюцинации — самый частый качественный инцидент. Не всегда видны по метрикам latency. Требуют LLM-as-judge для автоматической оценки.
  • Prompt injection — атака, при которой пользовательский ввод переопределяет системный промпт. Защита: input sanitization, guardrails.
  • Cost explosion — из-за рекурсивных вызовов (agentic RAG) или очень длинных контекстов. Мониторить total tokens per session.
  • Model deprecation — провайдер отключает старую модель. Нужен fallback plan и version pinning.

9. Пример playbook для типичного инцидента (P1)

ШагДействиеВремяОтветственный
1Алерт: faithfulness < 0.7 в течение 5 минут0 минМониторинг
2On-call engineer принимает инцидент2 минИнженер
3Проверка: это новый промпт? Да → откатить через feature flag5 минИнженер
4Если откат не помог → fallback на rule-based ответ10 минИнженер
5Сбор логов за последние 30 минут15 минИнженер
6RCA: сравнить промпты, проверить drift1 часИнженер + ML
7Hotfix: вернуть старый промпт, добавить тест2 часаML
8Postmortem: написать разбор, добавить алерт1 деньКоманда

10. Инструменты для реализации playbook


Пет-проект для закрепления

Задача: Разработать playbook для инцидента "галлюцинации в RAG-системе" и автоматизировать часть шагов.

Инструменты: Python, LangChain, FastAPI, Prometheus, Docker, PagerDuty (trial).

Шаги:

  1. Разверните простую RAG-систему (FastAPI + LangChain + ChromaDB).
  2. Добавьте мониторинг метрик faithfulness через LLM-as-judge (например, с помощью GPT-4o-mini).
  3. Настройте алерт в Prometheus (правило: faithfulness < 0.7 за 5 минут).
  4. Напишите скрипт для автоматического rollback: при алерте переключать версию промпта через feature flag (файл конфигурации).
  5. Реализуйте fallback: если faithfulness низкий, возвращать ответ "Извините, я не могу ответить на этот вопрос" вместо генерации.
  6. Проведите симуляцию: измените промпт так, чтобы он начал галлюцинировать, и проверьте срабатывание playbook.

Ожидаемый результат: Работающий playbook, который при падении faithfulness автоматически откатывает промпт и отправляет уведомление в PagerDuty (или Slack).


Связь с другими вопросами

ВопросТема
385Архитектура Agentic RAG
387Мониторинг LLM-систем
388Безопасность LLM (prompt injection)
389Cost optimization для LLM
390A/B тестирование моделей
391Rollback стратегии для LLM

Навигация