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 diagnosisPondere 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 frontierEficiê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
- Fundamentos da equipe vermelha de LLM
- Técnicas de jailbreak
- Criando uma suíte de ataques
- Medindo a robustez