0Pricing
AI Agents · Урок

Фильтрация вывода (Llama Guard, NeMo)

Запускайте небольшую защитную модель для проверки вывода, чтобы до публикации обнаруживать токсичность, утечки PII и нарушения правил.

«Фильтрация вывода (Llama Guard, NeMo)» — бесплатный урок AI Agents на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения AI Agents, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс AI Agents содержит 4 уроков всего.

Зачем фильтровать вывод?

Даже при безопасных входных данных модели могут выдавать:

  • утечки персональных данных
  • язык вражды или оскорбления
  • контент о самоповреждении
  • вызовы инструментов, нарушающие намерение пользователя

Фильтр вывода — последняя линия защиты перед тем, как пользователь что-либо увидит.

Llama Guard

Классификатор безопасности Meta — с открытыми весами, очень быстрый:

from transformers import AutoTokenizer, AutoModelForCausalLM
model = AutoModelForCausalLM.from_pretrained('meta-llama/Llama-Guard-3-8B')
# Outputs 'safe' or 'unsafe' with category.

NeMo Guardrails

NVIDIA NeMo Guardrails — Python-фреймворк, который добавляет проверки для LLM:

# pip install nemoguardrails
from nemoguardrails import RailsConfig, LLMRails

config = RailsConfig.from_path('./config')
rails = LLMRails(config)
response = rails.generate(messages=[{'role': 'user', 'content': '...'}])

Guardrails AI

guardrails-ai — библиотека Python, предназначенная для проверки и защитных механизмов. Она поддерживает «rails» на основе XML и циклы исправления reAsk.

Конституционный классификатор Anthropic

Anthropic выпустила классификатор в дополнение к обучению безопасности в Claude. Он полезен для последующей фильтрации вывода любой модели.

Пользовательский фильтр на основе LLM

Самый дешёвый вариант — небольшая LLM, которая проверяет вывод:

FILTER_PROMPT = '''
Analyse the output. Return JSON: {safe: true/false, reason: str, categories: list}

Unsafe categories: PII leak, harmful instructions, copyright violation, prompt-injection echo.

Output:
{output}
'''

result = guard_llm.invoke(FILTER_PROMPT.format(output=text))

Фильтры на основе регулярных выражений и правил

Для конкретных шаблонов регулярные выражения работают быстро и надёжно:

import re
EMAIL_RE = re.compile(r'[\w\.-]+@[\w\.-]+')
SSN_RE = re.compile(r'\b\d{3}-\d{2}-\d{4}\b')

def has_pii(text):
    return bool(EMAIL_RE.search(text) or SSN_RE.search(text))

# --- demo ---
samples = ['Contact me at jane@example.com', 'My SSN is 123-45-6789', 'No PII in this sentence']
for s in samples:
    print(f'{s!r} -> has_pii={has_pii(s)}')

Маскирование PII

Не только блокируйте содержимое — иногда маскируйте его и пропускайте остальную часть:

def redact(text):
    text = EMAIL_RE.sub('[email]', text)
    text = SSN_RE.sub('[ssn]', text)
    return text

Двухуровневый фильтр

Сначала применяйте быстрые правила, затем более дорогой фильтр на основе LLM:

def filter_output(text):
    if has_obvious_pii(text):
        return BLOCKED
    result = guard_llm.invoke(...)
    return result

Потоковый вывод

Для потокового вывода фильтруйте по предложениям (SENTENCE-BY-SENTENCE):

buf = ''
for token in stream:
    buf += token
    if buf.endswith(('. ', '! ', '? ', '\n')):
        if not safe(buf):
            stream.close()
            emit_to_client('[content filtered]')
            break
        emit_to_client(buf)
        buf = ''

Ложные срабатывания и пропуски

Настройте правильный баланс:

  • для ситуаций с высокими рисками (медицина, финансы) склоняйтесь к ложным срабатываниям (больше блокировок)
  • для творчества и развлечений склоняйтесь к пропускам (меньше блокировок)

Журналы фильтрации конфиденциальны

Журналы фильтрации содержат заблокированное содержимое. Храните их в безопасности и устанавливайте короткие сроки хранения:

log.warning('Blocked output', extra={'reason': r, 'category': c}, sanitize_payload=True)

Информируйте пользователя

При блокировке сообщайте пользователю причину, чтобы он не отправлял повторные попытки без необходимости:

def handle_privacy_request():
    return 'I cannot share that information for privacy reasons.'

print(handle_privacy_request())

Многоуровневый фильтр

Зачем объединять регулярные выражения с фильтрацией на основе LLM?

Итоги

Llama Guard / NeMo / пользовательский фильтр на основе LLM + правила на основе регулярных выражений. Два уровня защиты. По возможности маскируйте данные. Всегда сообщайте пользователю, когда содержимое заблокировано.

Часто задаваемые вопросы

Урок «Фильтрация вывода (Llama Guard, NeMo)» бесплатный?

Да — полный текст урока «Фильтрация вывода (Llama Guard, NeMo)» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс AI Agents, подпишись на CoddyKit PRO. Курс AI Agents содержит 4 уроков всего.

Чему я научусь в уроке «Фильтрация вывода (Llama Guard, NeMo)»?

Запускайте небольшую защитную модель для проверки вывода, чтобы до публикации обнаруживать токсичность, утечки PII и нарушения правил. Ты практикуешь AI Agents с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать AI Agents?

Предыдущий опыт не требуется. AI Agents на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «Фильтрация вывода (Llama Guard, NeMo)»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке AI Agents?

Да. Каждый урок AI Agents включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Защита от внедрения промптов
  2. Фильтрация вывода (Llama Guard, NeMo)
  3. Изолированное выполнение кода для агентов
  4. Контроль доступа к инструментам
← Назад к AI Agents