Аудит и воспроизводимость решений ИИ: как доказать регулятору, что произошло

Неизменяемый трейс каждого вызова модели — единственное доказательство для регулятора. Архитектура audit plane на OpenTelemetry.

Аудит и воспроизводимость решений ИИ: как доказать регулятору, что произошло

Через полгода после запуска в «Ковчег» приходит запрос от регулятора: клиент обжалует отказ по кредиту, датированный 12 мая. Вопрос простой и убийственный: «Почему ИИ рекомендовал отказать?» Если у вас нет ответа — не «модель так решила», а восстановимая цепочка: какой был системный промпт, какие данные клиента подтянулись, какая версия модели отвечала, какие guardrails и политики сработали, — то high-risk-система недоказуема, а значит несоответствна.

Эта глава — про audit plane: слой, где каждое решение ИИ оставляет неизменяемый след, достаточный, чтобы его воспроизвести и объяснить регулятору, аудитору или при разборе инцидента. Без него все предыдущие плоскости контроля недоказуемы: guardrails, которые нельзя предъявить в логе, для регулятора не существуют.

Бизнес-цена

Возможность по любому решению «Ковчега» восстановить полную цепочку рассуждений и воспроизвести контекст. Обещания бизнесу:

  1. По trace_id восстанавливается всё, что определило решение.
  2. Лог неизменяем — его нельзя переписать задним числом (иначе он бесполезен как доказательство).
  3. Retention и защита лога сами соответствуют GDPR (лог содержит ПДн).

Драйвер: угроза или регулятор

  • EU AI Act: Art. 12 — автоматическое ведение логов на весь срок жизни high-risk; Art. 13 (прозрачность); Art. 86 (право на объяснение отдельного решения).
  • GDPR: ст. 22 — объяснимость автоматизированных решений.
  • Инцидент-разбор: без трейса не отличить баг промпта от дрейфа модели от атаки — три разные причины, три разных ответа.

Архитектурный паттерн

Immutable AI Trace Log Pipeline на базе OpenTelemetry GenAI Semantic Conventions — сквозной трейсинг стандартными спанами, экспорт в неизменяемое хранилище с retention-политикой.

Почему именно OTel SemConv, а не проприетарный формат: экосистема observability фрагментирована (Langfuse, Helicone, Traceloop, LangSmith — несовместимые форматы = vendor lock-in). GenAI Semantic Conventions (под эгидой CNCF) задают единый словарь: спан от LangChain-агента выглядит так же, как от голого вызова OpenAI. Оговорка честности: на середину 2026 конвенции всё ещё в статусе Development — на проде включают OTEL_SEMCONV_STABILITY_OPT_IN для двойной эмиссии (legacy + новые атрибуты), чтобы пережить переход к stable.

Инженерный стек

  • Трейсинг/стандарт: OpenTelemetry + GenAI Semantic Conventions (спаны LLM-вызовов, ретрива, tool-calls; конвенции для MCP-инструментов и мульти-агентов в активной разработке).
  • Бэкенды: Arize Phoenix, Langfuse, LangSmith (принимают OTel).
  • Транспорт: Kafka / NATS.
  • Хранилище: ClickHouse (аналитика) + immutable/WORM-слой под юридический аудит.

Инженерная реализация

Шаг 1. Сквозной trace_id

Единый id через всю цепочку: gateway → RAG + FGA → input guardrails → модель → tools → output guardrails → ответ. Тот же id — ключ mapping ПДн и бюджета.

Шаг 2. Что именно фиксируем в спанах

По GenAI SemConv + расширения под аудит:

  • версия системного промпта (хэш + ссылка на версию);
  • точные RAG-чанки с их distance-скорами и source_doc_id;
  • raw request/response (уже с маскированными ПДн);
  • аргументы вызванных функций (Tool Calling) и вердикт policy-гейта;
  • версия модели/провайдера, температура, seed;
  • вердикты guardrails (что сработало, что заблокировано).

Шаг 3. Экспорт в неизменяемое хранилище

app (OTel SDK) → OTLP → collector → Kafka → ┬→ ClickHouse (аналитика/дашборды)
                                            └→ WORM/append-only (юр. аудит, retention)

Append-only слой — не «база, куда договорились не писать», а хранилище с технической невозможностью перезаписи (object-lock / WORM).

Шаг 4. Воспроизводимость

По trace_id пересобираем полный вход. При фиксированной версии модели и seed можно переиграть решение — с оговоркой из failure modes.

Шаг 5. Приватность самого лога

Аудит содержит ПДн и секреты → шифрование, доступ по ролям, отдельный TTL, который балансирует Art. 12 (хранить) против GDPR (не хранить лишнее).

Где ломается

  • Недетерминизм LLM. Даже с seed воспроизводимость неполная: провайдер меняет модель «под капотом», семплинг варьируется. «Объяснение» — реконструкция контекста решения, а не буквальная причинность.
  • Post-hoc рационализация. Chain-of-thought в логе — это то, что модель написала, а не обязательно то, почему она так решила. Не выдавайте CoT за причинный механизм.
  • Объём и стоимость. Полный трейс с чанками — терабайты; retention под Art. 12 против бюджета ClickHouse против минимизации GDPR — тройной конфликт, решается сэмплингом детализации (полный трейс для high-risk решений, усечённый для остального).
  • Лог как поверхность атаки. Аудит с ПДн и секретами — лакомая цель; его утечка хуже исходной. Защита лога — часть периметра, не афтерсот.
  • Стандарт ещё не stable. SemConv в Development — атрибуты меняются; отсюда dual-emission.

Стандарты и маппинг

  • EU AI Act: Art. 12 (record-keeping), Art. 13 (transparency), Art. 86 (объяснение).
  • ISO/IEC 42001: логирование, мониторинг, управление инцидентами.
  • NIST AI RMF: Measure/Manage — traceability.
  • GDPR: ст. 22.

Лаба и артефакт

Внедрить OTel GenAI SemConv в «Ковчег», экспорт через Kafka в ClickHouse + object-lock слой; по заданному trace_id восстановить полный контекст решения из вступления; настроить retention и шифрование лога. Артефакт: схема трейс-события (атрибуты SemConv + аудит-расширения) + дашборд «разбор одного решения» + retention/защита-политика.

Чеклист зрелости

  • L1: логируются raw запрос/ответ и версия модели.
  • L2: OTel-трейс (SemConv) с чанками, промпт-версией и tool-аргументами в append-only хранилище.
  • L3: воспроизведение решения по trace_id, retention под AI Act, шифрование и RBAC на аудит, dual-emission на переходный период стандарта.

Источники

Регулятор не спрашивает «работает ли ваша модель». Регулятор спрашивает: «докажите, что 12 мая система сделала именно то, что вы утверждаете». Без неизменяемого трейса у вас нет доказательства — есть только уверенность, которая в суде не котируется.

Leave a Reply

Your email address will not be published. Required fields are marked *