Контролируемое маскирование запросов к LLM
Контролируемое маскирование запросов к LLM дает вам полный контроль над процессом и сохраняет необходимую для сервисов структуру данных. Вы отправляете исходный запрос в Jay Guard для маскирования, затем передаете его в LLM, а ответ от модели — обратно в Jay Guard для демаскирования.
Используйте контролируемое маскирование для защиты конфиденциальных данных при работе с LLM. Этот метод подходит в случаях, когда вам не требуется проксирование, при котором Jay Guard самостоятельно отправляет запрос модели и получает от нее ответ.
Jay Guard обнаруживает в запросе сущности и применяет к ним одно из следующих действий:
- Пропускать (
allow): сущности не маскируются, но их обнаружение фиксируется в аудите. - Блокировать (
deny): сущности скрываются, а в полеactionответа указываетсяdeny. - Маскировать (
redact): вместо конфиденциальных данных в запросе возвращаются плейсхолдеры.
Эти действия настраиваются в правилах фильтрации.
Принцип работы
-
Маскирование запроса. Приложение отправляет исходный запрос для LLM на эндпоинт маскирования Jay Guard:
POST /api/dataguard/public/user-masking/{service}/maskЗдесь
{service}— это идентификатор сервиса, для которого применяются правила маскирования (например,mlp). Возможные значения:gigachat;mlp— для моделей, размещенных в Caila;openai;yandexgpt.
-
Получение замаскированных данных и ID сессии. Jay Guard возвращает замаскированную версию запроса, сформированную в формате данных для этого сервиса, и уникальный ID сессии
X-DATA-GUARD-MASKING-ID. -
Отправка запроса в LLM. Приложение отправляет замаскированные данные в целевую LLM и получает ответ.
-
Демаскирование ответа. Приложение отправляет ответ от LLM на эндпоинт демаскирования Jay Guard, передавая ID сессии (
X-DATA-GUARD-MASKING-ID) для восстановления исходных данных. Эндпоинт:POST /api/dataguard/public/user-masking/{service}/unmask
Маскирование запроса
Для маскирования запроса, отправьте его на эндпоинт:
POST /api/dataguard/public/user-masking/{service}/mask
Структура запроса
Заголовки
| Заголовок | Описание |
|---|---|
X-DATA-GUARD-API-KEY | Ключ доступа из интерфейса Jay Guard. |
X-META-* (до 5 штук) | Опциональные заголовки для передачи дополнительной метаинформации, которая будет зафиксирована в журнале аудита (например, X-META-USER-ID). |
Тело
Тело запроса может содержать любой валидный JSON-объект, который вы планируете отправить в LLM:
curl -X POST 'https://<your-host>/api/dataguard/public/user-masking/mlp/mask' \
--header 'X-DATA-GUARD-API-KEY: <your_api_key>' \
--header 'Content-Type: application/json' \
--data-raw '{
"model": "gpt-4",
"messages": [
{
"role": "user",
"content": "Меня зовут Иван Петров, мой номер телефона +7(999)123-45-67. Помоги составить письмо."
}
]
}
Ответ
Jay Guard возвращает замаскированную версию запроса, уникальный идентификатор сессии X-DATA-GUARD-MASKING-ID, список сущностей и действия:
// HTTP Headers:
// X-DATA-GUARD-MASKING-ID: 11e8-23e5-11e9-ab14-d663bd873d93
// X-DATA-GUARD-MASKING-ACTION: redact
{
"model": "gpt-4",
"messages": [
{
"role": "user",
"content": "Меня зовут <jg:person_1>, мой номер телефона <jg:phone_1>. Помоги составить письмо."
}
]
}
Сохраните значение идентификатора X-DATA-GUARD-MASKING-ID из ответа. Оно потребуется для демаскирования.
Демаскирование ответа
Чтобы восстановить исходные данные, отправьте ответ от LLM на эндпоинт демаскирования:
POST /api/dataguard/public/user-masking/{service}/unmask
Структура запроса
Заголовки
| Заголовок | Описание |
|---|---|
X-DATA-GUARD-API-KEY | Ключ доступа из интерфейса Jay Guard. |
X-DATA-GUARD-MASKING-ID | Уникальный идентификатор сессии, полученный на шаге маскирования. |
Тело
Тело запроса должно содержать любой валидный JSON-объект c текстом, полученным от LLM, и значением X-DATA-GUARD-MASKING-ID:
curl -X POST 'https://<your-host>/api/dataguard/public/user-masking/mlp/unmask' \
--header 'X-DATA-GUARD-API-KEY: <your_api_key>' \
--header 'X-DATA-GUARD-MASKING-ID: 11e8-23e5-11e9-ab14-d663bd873d93' \
--header 'Content-Type: application/json' \
--data-raw '{
"choices": [
{
"message": {
"role": "assistant",
"content": "Конечно, <jg:person_1>! Я подготовлю для вас шаблон письма. Уточните, на какой адрес его отправить?"
}
}
]
}'
Примеры запросов демаскирования смотрите в соответствующем разделе документации.
Ответ
Jay Guard возвращает демаскированный текст.
{
"choices": [
{
"message": {
"role": "assistant",
"content": "Конечно, Иван Петров! Я подготовлю для вас шаблон письма. Уточните, на какой адрес его отправить?"
}
}
]
}
Потоковое демаскирование
Если вы работаете с LLM, которая возвращает ответ в потоковом режиме, используйте WebSocket-эндпоинт. Фрагменты ответов, полученные таким образом, будут сразу демаскироваться.
URL для подключения: ws://<dataguard-host>/api/dataguard/public/user-masking/unmask/stream
При установке соединения передайте заголовки X-DATA-GUARD-API-KEY и X-DATA-GUARD-MASKING-ID. Фрагменты ответа от LLM будут демаскированы в реальном времени.
Аудит
Все обнаруженные во время маскирования сущности фиксируются в журнале аудита с типом события «Маскирование запроса в LLM».
На данный момент операции демаскирования не логируются в журнале аудита.