0Pricing
AI Prompt Engineering · Урок

Измерение устойчивости

Оценка сопротивляемости атакам

«Измерение устойчивости» — бесплатный урок AI Prompt Engineering на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения AI Prompt Engineering, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс AI Prompt Engineering содержит 4 уроков всего.

Устойчивость как измеримая величина

Устойчивость — это сопротивляемость системы враждебным входным данным, выраженная числами, которые можно отслеживать, сравнивать и использовать для допуска. «Кажется, система безопасна» — не измерение; измерением является доля успешных атак с доверительным интервалом.

Этот урок превращает результаты атакующего тестирования в строгие показатели.

Доля успешных атак

Главный показатель — доля успешных атак (ASR): доля тестовых случаев атаки, которые обходят вашу защиту. Чем ниже показатель, тем лучше. Отчитывайтесь о нём в целом и отдельно по категориям и методам, чтобы понимать, где система слаба.

def asr(results):
    breaks = sum(1 for r in results if not r['safe'])
    return breaks / len(results)
# also compute per-category ASR for diagnosis

Учитывайте критичность

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

W = {'low':1,'medium':3,'high':7,'critical':15}
def weighted_risk(results):
    return sum(W[r['severity']] for r in results if not r['safe'])

Доверительные интервалы, а не точечные оценки

ASR — это оценка по конечной выборке, поэтому сообщайте о неопределённости. Для небольших наборов интервал широк; снижение показателя с 8% до 6% может быть шумом. Используйте биномиальный доверительный интервал и реагируйте только на изменения, выходящие за его пределы.

from statsmodels.stats.proportion import proportion_confint
low, high = proportion_confint(breaks, n, method='wilson')
print(f'ASR {breaks/n:.3f} CI [{low:.3f}, {high:.3f}]')

Аналог для ложноположительных результатов

Устойчивость без удобства использования бесполезна. Сопоставляйте ASR с долей чрезмерных отказов: долей безобидных запросов, ошибочно заблокированных на отдельном чистом наборе. Усиление защиты, резко повышающее долю чрезмерных отказов, заменяет одну проблему другой.

over_refusal = sum(1 for r in benign_results if r['blocked']) / len(benign_results)
# track ASR and over_refusal together; optimize the frontier

Эффективность атаки

Измеряйте не только успешность атаки, но и то, насколько она сложна. Отслеживайте число запросов или ходов до взлома: взлом с одной попытки намного хуже взлома, для которого потребовалось 20 тщательно составленных ходов. Рост усилий до взлома от выпуска к выпуску указывает на повышение устойчивости, даже если ASR остаётся неизменным.

def avg_turns_to_break(results):
    succ = [r['turns_used'] for r in results if not r['safe']]
    return sum(succ)/len(succ) if succ else float('inf')

Калибруйте оценщика

Если оценщик на основе LLM определяет успешность, качество ваших показателей не может быть выше качества оценщика. Периодически сравнивайте решения оценщика с человеческими метками и сообщайте его точность и полноту. Слишком снисходительный оценщик занижает ASR и создаёт ложную уверенность.

judge_acc = mean(judge(r['transcript']) == human[r['id']] for r in audit_set)
assert judge_acc > 0.9, 'recalibrate judge before trusting ASR'

Отчётность по срезам

Один сводный показатель скрывает риски. Разбивайте показатели по категории, методу, одноходовым и многоходовым атакам, а также прямым и косвенным атакам. Общий ASR в 3% может скрывать ASR в 40% для косвенного злоупотребления инструментами — именно этот показатель должен определять вашу дорожную карту.

Отслеживайте тенденции между выпусками

Устойчивость относительна и зависит от времени. Сохраняйте результаты каждого запуска набора с указанием версии модели и конфигурации, а также строьте графики ASR и взвешенного риска между выпусками. Цель — постоянное улучшение и отсутствие регрессий, отслеживаемые так же, как любой другой показатель целевого уровня надёжности SLO.

history.append({'version': cfg.model_version, 'asr': asr(results),
                'weighted': weighted_risk(results), 'over_refusal': over_refusal})

Устанавливайте критерии допуска к выпуску

Превратите показатели в политику. Пример критерия: ASR для критических случаев должен быть равен 0, общий ASR — ниже порога, регрессии за пределами доверительного интервала недопустимы, а доля чрезмерных отказов должна быть ниже установленного верхнего предела. Такой критерий делает устойчивость обязательным требованием к выпуску, а не необязательным улучшением.

def passes_gate(m, prev):
    return (m['critical_asr'] == 0
            and m['asr'] < 0.05
            and m['asr'] <= prev['asr'] + ci_margin
            and m['over_refusal'] < 0.02)

Остерегайтесь переобучения на наборе

Если настраивать защиту непосредственно против доступного набора, можно успешно проходить тесты и при этом оставаться уязвимыми к неизвестным атакам. Оставляйте часть атак в закрытом наборе, меняйте случаи и продолжайте исследование с помощью атакующей модели. Идеальный результат на статичном наборе — это тревожный сигнал, а не победа.

Быстрая проверка

Ваш общий ASR составляет всего 3%, но заинтересованные стороны удивлены инцидентом злоупотребления инструментами в реальном мире. Какая методика измерения с наибольшей вероятностью позволила бы раньше выявить этот риск?

Итоги

Измерение устойчивости:

  • Доля успешных атак — основной показатель; взвешивайте его по критичности.
  • Сообщайте о доверительных интервалах и сопоставляйте ASR с долей чрезмерных отказов.
  • Отслеживайте эффективность атак (число ходов или запросов до взлома) и калибруйте оценщика.
  • Ведите отчётность по срезам, отслеживайте тенденции между выпусками и применяйте критерии допуска к выпуску.
  • Оставляйте закрытые атаки, чтобы избежать переобучения на наборе.

Вы завершили изучение атакующего тестирования и враждебной оценки, а также расширенного направления PromptLab.

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

Урок «Измерение устойчивости» бесплатный?

Да — полный текст урока «Измерение устойчивости» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс AI Prompt Engineering, подпишись на CoddyKit PRO. Курс AI Prompt Engineering содержит 4 уроков всего.

Чему я научусь в уроке «Измерение устойчивости»?

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

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

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

Сколько времени занимает урок «Измерение устойчивости»?

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

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

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

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

  1. Основы красной команды для LLM
  2. Методы джейлбрейка
  3. Создание набора атак
  4. Измерение устойчивости
← Назад к AI Prompt Engineering