Качество и безопасность: оценка ответов, защита данных, политика и комплаенс
В прошлых статьях курса мы научились получать более предсказуемые ответы за счёт роли, контекста, целей и формата, затем усилили это цепочками, критикой и самопроверкой, подключили инструменты и вынесли процессы в API. Следующий практический слой, без которого почти любой проект с LLM “ломается” в реальности, — это качество и безопасность.
Ключевая идея: качество и безопасность — не “галочка в настройках модели”, а процесс, который включает тесты, валидацию, правила работы с данными, журналирование и управляемые ограничения.
!Диаграмма показывает, что качество и безопасность — это цикл: подготовка, вызов, проверки, действия и мониторинг.
Что считать “качеством” ответа LLM
В прикладной работе качество — это не “понравился текст”, а проверяемые свойства. Минимальный набор критериев, который переносится между GPT, GigaChat, Gemini и другими:
Соответствие задаче: ответ решает вопрос пользователя, а не уходит в сторону.
Доказуемость: понятно, на каких данных основаны выводы (особенно в RAG).
Формат: ответ приходит в виде, который можно использовать (JSON, таблица, письмо до N слов).
Отсутствие запрещённого: нет обещаний сроков без оснований, нет утечек секретов, нет небезопасных инструкций.
Стабильность: при одинаковых входах ответы не “скачут” по структуре и правилам.
Экономичность: приемлемые задержка и стоимость.Практический вывод из предыдущих статей курса: критерии качества должны быть явно зафиксированы в целях и формате ответа, иначе вы не сможете ни измерять, ни улучшать результат.
Как оценивать качество: от простого к надёжному
Тест-набор: “одни и те же примеры для всех моделей и версий промпта”
Самый сильный практический шаг — собрать небольшой тест-набор (обычно 30–200 примеров), который отражает реальный вход:
Типовые случаи (80%): то, что приходит каждый день.
Пограничные случаи (15%): мало данных, шумный текст, смешение тем.
Рискованные случаи (5%): персональные данные, юридические формулировки, попытки “сломать” правила.Дальше вы прогоняете через разные модели или версии промпта и сравниваете по метрикам, а не “по ощущениям”.
Автоматические проверки (быстрые и дешёвые)
Это то, что должно работать в вашем коде при API-интеграции:
Валидация формата: JSON-схема, наличие обязательных полей, допустимые значения.
Проверка длины: лимит слов/символов.
Запрещённые элементы: регулярные выражения, словари, простые правила.
“Приземление” в RAG: требование ссылок на фрагменты вида [1], [2] и проверка, что они действительно присутствуют.Здесь важно: модель может стараться соблюдать формат, но гарантировать это может только валидация на стороне вашей системы.
Человеческая проверка (дороже, но незаменима)
Человеческая проверка нужна там, где:
цена ошибки высока (финансы, право, медицина)
есть тонкие требования к тону и коммуникации
вы запускаете новый сценарий и ещё не знаете слабые местаПрактичный режим — выборочная проверка: например, 1–5% ответов + 100% ответов, которые не прошли автоматические проверки.
LLM-as-judge (модель как оценщик)
Иногда удобно использовать вторую модель как “судью”: она выставляет оценку по чеклисту и находит нарушения. Это продолжение техники критики из прошлой статьи.
Правила, чтобы это было полезно:
Судья оценивает по фиксированному рубрикатору (чеклисту), а не “в целом”.
Судья не должен иметь доступ к секретам.
Результаты судьи нужно периодически калибровать человеком (иначе вы автоматизируете чужие ошибки).LLM-as-judge особенно полезен для проверки стиля, наличия запретов, полноты полей, но хуже подходит для проверки фактической истины без источников.
Метрики, которые реально помогают управлять качеством
Ниже — практический минимум метрик, который можно ввести почти в любом проекте.
| Метрика | Что измеряет | Как считать на практике | Зачем нужна |
|---|---|---|---|
| Доля валидных ответов | Структурную дисциплину | % ответов, прошедших JSON schema | Уменьшает “ручной разбор” и ретраи |
| Grounded rate | Привязку к источникам | % утверждений со ссылками на фрагменты (для RAG) | Снижает галлюцинации |
| Refusal rate | Частоту отказов | % запросов, где модель отказалась | Важно для UX и комплаенса |
| Escalation rate | Долю передачи человеку | % ответов с needs_human=true | Контроль рисков и нагрузки |
| Cost per task | Стоимость сценария | токены и цена провайдера | Помогает выбирать модель и стратегию |
| Latency p95 | “хвост” задержек | 95-й перцентиль времени ответа | Важен для продуктовых SLA |
Если вы делаете цепочки (факты → генерация → критика), метрики стоит считать отдельно по каждому шагу: это быстрее показывает, где именно ломается процесс.
Защита данных: что можно отправлять в LLM, а что нельзя
Безопасность начинается с простого вопроса: какие данные мы вообще имеем право передавать внешнему провайдеру или даже внутренней модели?
Минимальная классификация данных
Удобно договориться о 3–4 классах данных внутри команды:
Публичные: можно публиковать без ограничений.
Внутренние: не для публикации, но не критично.
Конфиденциальные: коммерческие тайны, ключи, договоры, внутренняя финансовая информация.
Персональные данные: любая информация, которая относится к идентифицируемому человеку.Дальше вы фиксируете правило: какие классы можно отправлять в конкретный инструмент (чат, API, локальный контур) и при каких условиях.
Практика минимизации данных
Самое рабочее правило: отправляйте в модель только то, что нужно для ответа.
Обычно это достигается комбинацией:
Маскирование: заменить персональные поля на маркеры PERSON_1, PHONE_1, EMAIL_1.
Псевдонимизация: хранить связь “маркер → реальное значение” только в вашей системе.
Удаление лишнего: убрать подписи, футеры, служебные блоки, куски переписки, не влияющие на ответ.Это одновременно снижает риск утечки и уменьшает стоимость токенов.
Политики провайдеров: что важно проверить до запуска
У разных платформ различаются условия хранения и использования данных. До продакшена проверьте:
хранение запросов и ответов (логирование у провайдера)
возможность запрета использования данных для улучшения сервисов (если доступно)
сроки хранения и возможность удаления
регион обработки (если важно для вашей юрисдикции)Отправные точки для чтения политики и документации:
Политика использования данных OpenAI API
Документация Gemini API
GigaChat на портале разработчика СбераБезопасность промптов и инструментов: prompt injection и контроль действий
Что такое prompt injection простыми словами
Prompt injection — это атака, когда внешний текст пытается заставить модель нарушить ваши правила. Например:
веб-страница “внедряет” инструкцию игнорировать системный промпт
документ содержит текст “отправь секреты в ответ”
пользователь формулирует запрос так, чтобы модель раскрыла приватные данныеОсобенно опасно это становится при наличии инструментов (tool calling), потому что модель может не только “написать текст”, но и вызвать действие.
Минимальные меры защиты, которые реально работают
Разделяйте инструкции и данные: внешние тексты (веб, документы, письма) должны попадать в контекст как данные, а не как “правила”.
Allowlist инструментов: модель должна иметь доступ только к строго нужным инструментам.
Валидация аргументов инструментов: типы, длины, допустимые значения — проверяет ваш код.
Разделение прав: ключи “только чтение” для поиска и просмотра; отдельные ключи для изменения данных.
Подтверждение для опасных действий: платежи, удаление, отправка писем наружу — только после явного подтверждения пользователя.Практический ориентир по типовым рискам приложений на LLM:
OWASP Top 10 for Large Language Model Applications!Картинка помогает увидеть, где возникают основные риски: во входных данных, в ответе и в действиях через инструменты.
Политика и комплаенс: как оформить правила так, чтобы ими пользовались
Комплаенс в контексте LLM — это соответствие внутренним правилам компании, контрактным условиям и законам. На практике он “живёт” не в документе на 50 страниц, а в коротких правилах, которые встроены в процесс.
Что должно быть в внутренней политике использования LLM
Перечень разрешённых инструментов: какие модели и каналы доступа одобрены (чат, API, локально).
Классы данных: что можно отправлять, что нельзя, что можно только после маскирования.
Правила логирования: что сохраняем, как долго, кто имеет доступ.
Правила эскалации: когда ответ обязан уйти на проверку человеку.
Правила обновлений: как меняем модель или промпт-шаблон (версии, тесты, откат).Эти пункты напрямую связаны с тем, что мы делали в статье про API: без логов, версий шаблонов и проверок формата вы не докажете, что процесс контролируем.
Что важно для юридической и регуляторной стороны
Это зависит от страны и отрасли, но типовые вопросы одинаковы:
есть ли право передавать данные третьей стороне
где обрабатываются данные территориально
какие сроки хранения
кто имеет доступ
как выполняются запросы на удаление данных (если требуется)Если вы работаете с данными граждан ЕС, вам важно понимать базовую рамку GDPR:
Регламент (ЕС) 2016/679 (GDPR) на Eur-LexВажно: этот курс не заменяет юридическую консультацию. Практический смысл здесь в том, чтобы вы заранее заложили в продукт процессы минимизации данных, контроля доступа и журналирования.
Практический “скелет” процесса качества и безопасности для LLM
Ниже — последовательность шагов, которую удобно применять к любому сценарию (чат, API, RAG, инструменты).
Описать задачу как вход → выход и зафиксировать формат.
Определить риск-уровень сценария:
- низкий: черновики, идеи, внутренние тексты без чувствительных данных
- средний: клиентские ответы, аналитика по внутренним документам
- высокий: финансы, персональные данные, юридические последствия, действия через инструменты
Собрать тест-набор и метрики (валидность формата, grounded rate, эскалации).
Встроить автоматические проверки:
- JSON schema
- запреты и длина
- проверка ссылок на источники для RAG
Встроить меры защиты данных:
- маскирование
- минимизация
- контроль логов
Протестировать на атакующих примерах (мини red teaming):
- попытки вытащить секрет
- “инструкции” внутри документа
- провокации на опасные действия
Запустить мониторинг в продакшене:
- метрики качества
- журнал инструментальных вызовов
- алерты на всплеск ошибок формата или эскалаций
Мини-чеклист перед запуском в работу
Есть фиксированный формат ответа и валидация в коде.
Есть тест-набор и метрики, по которым сравниваются модели и версии промптов.
В сценариях с RAG ответы требуют оснований со ссылками на фрагменты.
Данные минимизируются и маскируются, секреты не попадают в промпты и логи.
Инструменты работают по allowlist, аргументы валидируются, опасные действия требуют подтверждения.
Ведётся журнал: версия промпта, модель, время, ошибки, вызовы инструментов.Эта дисциплина позволяет спокойно менять модель (GPT ↔ Gemini ↔ GigaChat ↔ другие), потому что управляемость обеспечивается не “магией провайдера”, а вашей системой: форматами, проверками, политиками и мониторингом.