0Pricing
AI Prompt Engineering · Aula

Medindo a robustez

Avalie a resistência a ataques.

Medindo a robustez é uma aula grátis de AI Prompt Engineering no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de AI Prompt Engineering, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de AI Prompt Engineering inclui 4 aulas no total.

Robustez como grandeza mensurável

Robustez é a resistência do sistema a entradas adversariais, expressa em números que podem ser acompanhados, comparados e usados como critérios. 'Parece seguro' não é uma medição; uma taxa de sucesso de ataque com um intervalo de confiança é.

Esta lição transforma as descobertas dos testes de ataque em métricas rigorosas.

Taxa de sucesso de ataque

A principal métrica é a Taxa de Sucesso de Ataque (ASR): a fração de casos de ataque que derrotam suas defesas. Quanto menor, melhor. Informe-a de forma geral e discriminada por categoria e técnica, para saber onde o sistema é fraco.

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

Pondere pela gravidade

Uma ASR bruta trata um vazamento trivial e uma exposição de PII da mesma forma. Calcule uma pontuação ponderada pela gravidade, para que as falhas críticas tenham maior peso na métrica e algumas falhas de alto impacto não sejam ocultadas por muitas aprovações de baixo impacto.

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'])

Intervalos de confiança, não estimativas pontuais

A ASR é uma estimativa obtida de uma amostra finita, portanto informe a incerteza. Em conjuntos de testes pequenos, o intervalo é amplo; uma queda de 8% para 6% pode ser apenas ruído. Use um intervalo de confiança binomial e só aja com base em mudanças confirmadas por ele.

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}]')

A contraparte dos falsos positivos

Robustez sem usabilidade não tem valor. Combine a ASR com a taxa de recusa excessiva: a fração de solicitações inofensivas bloqueadas por engano, medida em um conjunto limpo separado. Um reforço de segurança que aumente muito a recusa excessiva troca uma falha por outra.

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

Eficiência do ataque

Meça não apenas se um ataque é bem-sucedido, mas quão difícil ele é. Acompanhe consultas até a quebra ou turnos até a quebra: uma quebra em uma única tentativa é muito pior do que uma que exige 20 turnos elaborados. O aumento do esforço necessário para provocar uma quebra entre os lançamentos indica uma melhora na robustez, mesmo que a ASR permaneça estável.

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')

Calibre o avaliador

Se um avaliador LLM pontua o sucesso, suas métricas são tão boas quanto o avaliador. Compare periodicamente os vereditos do avaliador com rótulos humanos e informe a precisão e a revocação do avaliador. Um avaliador permissivo demais subestima a ASR e cria uma falsa sensação de segurança.

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

Relatórios estratificados

Um único agregado oculta riscos. Separe as métricas por categoria, técnica, turno único versus vários turnos e direto versus indireto. Uma ASR geral de 3% pode ocultar uma ASR de 40% em abuso indireto de ferramentas — este é o número que deve orientar seu roteiro.

Acompanhe tendências entre lançamentos

A robustez é relativa e limitada no tempo. Armazene cada execução do conjunto de testes, indexada pela versão e configuração do modelo, e trace a ASR e o risco ponderado entre os lançamentos. O objetivo é uma melhoria monotônica e zero regressões, monitoradas como qualquer outro SLO de confiabilidade.

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

Defina critérios de lançamento

Transforme as métricas em política. Um exemplo de critério: a ASR crítica deve ser 0, a ASR geral deve ficar abaixo do limite, não deve haver regressão além do intervalo de confiança e a recusa excessiva deve permanecer abaixo de seu limite máximo. O critério transforma a robustez em um requisito obrigatório de lançamento, não em algo apenas desejável.

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)

Cuidado com o sobreajuste ao conjunto de testes

Se ajustar as defesas diretamente ao conjunto de testes visível, o senhor poderá passar nos testes e continuar vulnerável a ataques desconhecidos. Reserve um conjunto privado de ataques, alterne os casos e mantenha o modelo atacante explorando. Uma pontuação perfeita em um conjunto estático é um sinal de alerta, não uma vitória.

Verificação rápida

Sua ASR geral é de apenas 3%, mas as partes interessadas estão surpresas com um incidente real de abuso de ferramentas. Qual prática de medição provavelmente teria revelado o risco mais cedo?

Recapitulação

Medição da robustez:

  • A Taxa de Sucesso de Ataque é a métrica central; pondere-a pela gravidade.
  • Informe intervalos de confiança e combine a ASR com a recusa excessiva.
  • Acompanhe a eficiência do ataque (turnos ou consultas até a quebra) e calibre o avaliador.
  • Informe métricas estratificadas, acompanhe tendências entre lançamentos e imponha critérios de lançamento.
  • Reserve ataques privados para evitar o sobreajuste ao conjunto de testes.

O senhor concluiu os testes de ataque e a avaliação adversarial, além da trilha avançada do PromptLab.

Perguntas Frequentes

A aula “Medindo a robustez” é grátis?

Sim — o texto completo de “Medindo a robustez” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de AI Prompt Engineering, atualize para CoddyKit PRO. O curso de AI Prompt Engineering inclui 4 aulas no total.

O que vou aprender em “Medindo a robustez”?

Avalie a resistência a ataques. Você pratica AI Prompt Engineering com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar AI Prompt Engineering?

Nenhuma experiência prévia é necessária. AI Prompt Engineering no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.

Quanto tempo leva a aula “Medindo a robustez”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de AI Prompt Engineering?

Sim. Cada aula de AI Prompt Engineering inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Fundamentos da equipe vermelha de LLM
  2. Técnicas de jailbreak
  3. Criando uma suíte de ataques
  4. Medindo a robustez
← Voltar para AI Prompt Engineering