← Документация WAF / detections / ai-security-for-apps
Обнаружение небезопасных и пользовательских тем
AI Security for Apps может определять, когда промпт LLM затрагивает небезопасные или нежелательные темы. Есть два уровня обнаружения тем:
- Небезопасные темы по умолчанию: Встроенный набор категорий безопасности, обнаруживающих вредный контент, такой как насильственные преступления, разжигание ненависти и сексуальный контент.
- Пользовательские темы: темы, которые вы определяете под политики вашей организации, например «competitors» или «financial-advice».
Небезопасные темы по умолчанию
Когда AI Security for Apps включён, он автоматически проверяет промпты по набору стандартных категорий небезопасных тем и заполняет два поля:
- Обнаружена LLM Unsafe topic (
cf.llm.prompt.unsafe_topic_detected):trueпри обнаружении любой небезопасной темы. - Категории LLM Unsafe topic (
cf.llm.prompt.unsafe_topic_categories): массив конкретных обнаруженных категорий.
Категории небезопасных тем по умолчанию
| Категория | Описание |
|---|---|
S1 |
Насильственные преступления |
S2 |
Ненасильственные преступления |
S3 |
Преступления сексуального характера |
S4 |
Сексуальная эксплуатация детей |
S5 |
Клевета |
S6 |
Специализированные консультации |
S7 |
Конфиденциальность |
S8 |
Интеллектуальная собственность |
S9 |
Оружие неизбирательного действия |
S10 |
Ненависть |
S11 |
Суицид и самоповреждение |
S12 |
Сексуальный контент |
S13 |
Выборы |
S14 |
Злоупотребление интерпретатором кода |
Пользовательские темы
Обнаружение пользовательских тем позволяет определить собственные темы, и AI Security for Apps будет оценивать каждый промпт относительно них. Затем эти оценки можно использовать в пользовательские правила или правила rate limiting чтобы блокировать, выдавать челлендж или журналировать запросы на основе определяемой вами оценки релевантности.
Эта возможность использует zero-shot-модель классификации который оценивает промпты в момент выполнения. Обучение модели не требуется.
Как работают пользовательские темы
- Вы определяете список до 20 пользовательских тем. Каждая тема состоит из:
- Метка: короткий идентификатор через дефис, используемый в выражениях правил и аналитике (например,
financial-advice). - Описание темы: описательный текст, по которому модель классифицирует промпты (например,
seeking financial advice).
- Метка: короткий идентификатор через дефис, используемый в выражениях правил и аналитике (например,
- Когда запрос приходит на
cf-llm(endpoint с меткой), модель проверяет промпт по всем заданным описаниям тем и возвращает оценку релевантности для каждой. - Оценки записываются в
cf.llm.prompt.custom_topic_categories(map-поле с ключами-метками). В выражениях правил и аналитике используются метки, а не описания тем.
Определение пользовательских тем
Управлять пользовательскими темами можно из двух мест в панели управления:
- Страница Security Settings: Перейдите в Security > Settings и найдите AI Security for Apps (раздел). В разделе Custom Topics, выберите Управление темами, чтобы добавлять, изменять или удалять темы.
- Боковая панель Expression Builder: При создании или редактировании пользовательское правило, выберите LLM Custom topic (поле). Затем выберите Управление пользовательскими темами чтобы открыть боковую панель, где можно управлять темами, не покидая страницу создания правила.
Оба метода обновляют один и тот же список тем. Изменения, сделанные в одном, сразу отражаются в другом.
-
В панели управления Cloudflare перейдите в раздел Security Settings .
Перейдите в Settings ↗Либо перейдите в страницу создания пользовательских правил, выберите LLM Custom topic поле и выберите Управление пользовательскими темами , чтобы открыть боковую панель.
-
Добавьте тему, указав:
- Метка: короткий идентификатор через дефис (например,
competitors). - Описание темы: Описательная фраза на английском языке, которую модель использует для классификации (например,
seeking info on competitors).
- Метка: короткий идентификатор через дефис (например,
-
Выберите Save.
Обновите список пользовательских тем с помощью PUT запрос:
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/ai-security/custom-topics" \
--request PUT \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"topics": [
{
"label": "competitors",
"topic": "seeking info on competitors"
},
{
"label": "financial-advice",
"topic": "seeking financial advice"
},
{
"label": "hr-internal",
"topic": "asking about internal HR policies"
}
]
}'Чтобы получить текущие темы, используйте GET запрос:
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/ai-security/custom-topics" \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"Ограничения
| Параметр | Лимит |
|---|---|
| Максимальное число тем | 20 |
| Длина строки темы | 2–50 печатаемых символов ASCII |
| Длина метки | 2–20 символов |
| Формат метки | Строчные буквы, цифры и дефисы (-) only |
Рекомендации по определению пользовательских тем
Качество обнаружения пользовательских тем зависит от того, как вы пишете описания тем. В основе лежит zero-shot-классификатор, который сравнивает семантический смысл промпта с вашим описанием темы.
Самое важное — описывать намерение пользователя, а не только тему.
Начинайте с намерения
Модель выполняет семантическую классификацию, а не сопоставление по ключевым словам. Описания тем, отражающие, что пользователь пытается сделать значительно точнее, чем описания, которые просто называют предметную область. Короткая глагольная фраза (3–6 слов) обычно является лучшим компромиссом между точностью и охватом.
Сравните, как одни и те же два описания тем срабатывают на двух промптах, которые оба упоминают финансы, но с совершенно разными намерениями:
| Описание темы | Промпт: «Стоит ли вложить мои сбережения в индексные фонды?» | Промпт: «Наша финансовая команда только что закончила отчёт за Q3.» |
|---|---|---|
financial advice (только существительное) |
Совпадения | Тоже срабатывает. Присутствует слово «finance», хотя совета никто не спрашивает |
seeking financial advice (формулировка намерения) |
Совпадения | Корректно проигнорировано. Упоминает финансы, но не содержит намерения получить совет |
Пример: competitors
| Качество | Описание темы | Почему |
|---|---|---|
| Лучший вариант | seeking info on competitors |
Улавливает намерение. Срабатывает только тогда, когда пользователи действительно спрашивают о конкурентах |
| Okay | Acme Corp, Banana Co, Candy & Sons |
Работает для известных названий, но пропускает неназванных конкурентов и цепляет случайные упоминания |
| Избегайте | other companies |
Слишком расплывчато. Совпадает почти с любым промптом, где упоминается бизнес |
Пример: financial-advice
| Качество | Описание темы | Почему |
|---|---|---|
| Лучший вариант | seeking financial advice |
Ориентировано на намерение. Соответствует пользователям, запрашивающим рекомендации, и игнорирует пассивные упоминания финансов |
| Okay | securities and investments |
Разумный охват темы, но срабатывает на новостных статьях и фактических упоминаниях, а не только на запросах советов |
| Избегайте | finance |
Крайне широкая тема. Срабатывает почти на всё — от отчётов о расходах до вопросов о ценах |
Дополнительные рекомендации
- Будьте конкретны. Слишком широкие темы дают ложные срабатывания; слишком узкие — пропуски.
- Избегайте семантического пересечения. Если две темы означают почти одно и то же (например,
seeking financial adviceиasking for investment guidance), они будут давать похожие оценки на одних и тех же промптах и впустую расходовать ваш бюджет в 20 тем. - Тестируйте и итерируйте. Отправьте тестовые промпты и просмотрите оценки в Security Analytics. Настройку можно выполнять, изменяя описание темы (более или менее конкретное) или порог оценки в вашем правиле (
lt 20строгая,lt 50— разрешающий). - Не перечисляйте несколько значений в одном описании темы. Модель оценивает только первый элемент списка, разделённого запятыми. Например,
Toyota, Ford, Audi, BMWбудет соответствовать только промптам оToyota— остальные элементы игнорируются. Удаление запятых не улучшает результаты. Используйте одну фразу, описывающую намерение, напримерseeking info on competitors, или создайте отдельные темы для каждого значения.
Примеры пользовательских тем
| Метка | Описание темы |
|---|---|
competitors |
seeking info on competitors |
financial-advice |
seeking financial advice |
legal-advice |
asking for legal or regulatory advice |
sensitive-data |
requesting passwords or API keys |
job-seeking |
asking about job openings or careers |
bias |
comparing demographic groups as better or worse |