﻿# Настроить проверки Guardrails для AI-агентов и AI-операций

> [HTML Version](guardrails.html)

Проверки Guardrails позволяют задать правила, по которым запросы к AI‑агенту или AI‑операции и их ответы проверяются на наличие запрещённых данных и инструкций. Это позволяет блокировать действия, угрожающие безопасности, а также повышать достоверность ответов, останавливая обработку запросов, для которых компонент не предназначен.

````
начало внимание

````
Настройка проверок Guardrails доступна только в редакции **ELMA Cortex Enterprise**. Ознакомьтесь со списком функций, которые можно использовать в вашей [редакции](cortex-editions.md).

````
конец внимание

````
Чтобы добавить проверку Guardrails, выполните следующие шаги:

1. [Создайте проверку](#create-guardrail).

2. [Задайте основные настройки проверки](#general-settings).

3. [Задайте настройки, отличающиеся в зависимости от типа проверки](#type-specific-settings).

## Шаг 1. Создать проверку

1. При [настройке AI‑агента](cortex-configure-agent.md) или [AI‑операции](configure-ai-action.md) перейдите на вкладку **Проверки Guardrails** и выберите, куда добавить проверку:

- **Проверки входного этапа** — проверка применяется к сообщениям пользователя и результатам, которые предоставляют инструменты AI‑агента или AI‑операции;

- **Проверки выходного этапа** — проверка применяется к ответам AI‑агента или AI‑операции.

2. Нажмите **Добавить проверку**.

**(cortex-guardrails-1.png)**

3. В открывшемся окне выберите способ проверки:

- **Проверка с помощью LLM** — сообщение проверяется языковой моделью на основе заданной инструкции;

- **Проверка через webhook **— сообщение отправляется для проверки во внешний сервис;

- **Regex-проверка** — сообщение проверяется на основе заданных [регулярных выражений](https://developer.mozilla.org/ru/docs/Web/JavaScript/Guide/Regular_expressions). Способ эффективен для фрагментов, которые соответствуют строгому шаблону.

4. Нажмите** Далее**.

## Шаг 2. Задать основные настройки проверки

В открывшемся окне заполните поля, одинаковые для всех способов проверки:

- **Поведение при срабатывании** — выберите действие, которое должно выполняться при выявлении нарушения:

	- **Заблокировать запрос** — обработка запроса прекратится, вместо ответа пользователь увидит [сообщение, которое вы настроите](#blocking-message);

	- **Разрешить и продолжить** — обработка запроса не остановится. В [истории взаимодействия с AI‑агентом](cortex-agent-calibration.md#threads) или в [истории вызовов AI‑операции](ai-action-calibration.md#calls-list) зафиксируется предупреждение о нарушении, которое администратор может проанализировать и при необходимости принять меры. Этот вариант действия удобно использовать для отладки новой проверки, т. к. работа пользователей не останавливается;

- **Название **— укажите имя проверки, чтобы в списке легко отличать проверки одинакового типа друг от друга;

- **Сообщение при блокировке **— укажите текст, который отправится в чат пользователю при блокировке запроса;

- **При ошибке **— выберите действие, которое нужно совершить, если выполнить проверку не удалось:

	- **Блокировать** — обработка запроса прекратится, вместо ответа пользователь увидит [настроенное сообщение](#blocking-message);

	- **Пропустить** — обработка запроса не остановится;

- **Таймаут, секунд **— укажите время ожидания проверки. Если за это время проверка не успевает завершиться, используется действие из поля **При ошибке**;

- **Использовать оригинальный текст для этой проверки **— если настроено [маскирование запросов](masking.md), по умолчанию на проверку отправляется текст с замаскированными данными. Включите эту опцию, чтобы обрабатывать текст с исходной информацией.

Например, это полезно, если внешний сервис может проанализировать текст на наличие нарушений только на основе реальных значений в исходном формате. Используйте этот вариант для локальных проверок и доверенных сервисов. 

## Шаг 3. Задать настройки для способа проверки

Заполните поля, которые отличаются в зависимости от способа проверки, выбранного на шаге 1:

1. **Проверка с помощью LLM**.

Для проверки на основе языковой модели укажите:

- **Модель для проверки** — выберите языковую модель, которая проверяет текст. Вы можете [настроить параметры генерации ответов](cortex-configure-agent.md#generation-parameters) так же, как при указании модели для ответов AI‑агента или AI‑операции; 

- **Использовать инструмент final\_answer** — включите опцию, если выбранная языковая модель не поддерживает встроенную генерацию ответа по JSON‑схеме (**Structured Output**);

- **Промпт проверки** — напишите инструкцию для проверки текста;

- **Порог вероятности **— при проверке запроса или ответа языковая модель определяет, с какой вероятностью в тексте присутствует нарушение. Если вероятность превысит заданный порог, проверка считается не пройденной. Значение указывается в виде числа от **0.0** до **1.0**;

- **Макс. число сообщений** — задайте количество предыдущих сообщений из истории чата, которые передаются для проверки вместе с текущим запросом;

- **Возвращать объяснение** — включите опцию, чтобы языковая модель отправляла обоснование решения по проверке. Текст обоснования сохранится в [истории взаимодействия с AI‑агентом](cortex-agent-calibration.md#threads) или [истории вызовов AI‑операции](ai-action-calibration.md#calls-list). Это полезно для отладки новых проверок, но может увеличить время работы и расход токенов.

2. **Проверка через webhook**.

Настройте проверку во внешнем сервисе:

- **Скачать OpenAPI схему** — нажмите на ссылку и загрузите на компьютер файл с JSON‑схемой, на основе которой нужно настроить сервис проверки;

- **URL вебхука** — укажите полный адрес, по которому вызывается внешний сервис; 

- **Заголовки запроса** — добавьте HTTP-заголовки, например `Authorization`;

- **Максимум повторных попыток** — укажите число повторов при ошибках сети;

- **Макс. число сообщений** — количество предыдущих сообщений из истории чата, которые передаются для проверки вместе с текущим запросом;

- **Дополнительные параметры** — включите опцию и задайте JSON-объект с дополнительными правилами для проверки. Например, укажите минимальную вероятность нарушения, при которой проверка считается не пройденной. Дополнительные параметры передаются вместе с исходным текстом в теле запроса в поле `extra`. Их структура зависит от настроек на стороне внешнего сервиса. 

3. **Regex-проверка**.

Настройте проверку с помощью регулярного выражения. Подробнее о синтаксисе регулярных выражений читайте в документации [MDN Web Docs](https://developer.mozilla.org/ru/docs/Web/JavaScript/Guide/Regular_Expressions):

- **Паттерны** — введите регулярные выражения, которым должен соответствовать текст с нарушениями;

- **Флаги regex** — при необходимости укажите флаги дополнительных опций, например включите регистронезависимый или многострочный поиск.

После указания всех настроек нажмите **Сохранить**. Проверка добавится в общий список. 

## Управление проверками Guardrails

На вкладке **Проверки Guardrails** можно:

**(cortex-guardrails-2.png)**

- временно отключить проверку — нажмите на переключатель рядом с её названием;

- изменить настройки проверки — нажмите в правом верхнем углу блока на три точки и выберите опцию **Настроить**;

- поменять очерёдность проверок — зажмите значок перемещения и перетащите блок с проверкой или нажмите на три точки и выберите опцию **Переместить вверх** или **Переместить вниз**;

- удалить проверку — нажмите на три точки и выберите **Удалить**. Восстановить удалённую проверку нельзя.