DeepTeam - Estrutura de Red Teaming para LLM
DeepTeam é uma estrutura open-source de red teaming para LLM construída pela equipe por trás de DeepEval. Ela simula ataques adversariais contra sua aplicação LLM — injeção de prompt, jailbreaks, vazamento de PII, agência excessiva, viés — usando uma biblioteca de vulnerabilidades e melhorias de ataque que reescrevem um ataque base para evitar defesas. Sua ideia orientadora é que red teaming deve ser repetível e automatizado, não um exercício manual único, então executa como um conjunto de testes em CI.
Faça red team apenas de sistemas que você possui ou tem autorização para testar. Ataques gerados são entradas adversariais reais.
Instalação
| Método | Comando |
|---|
| pip | pip install deepteam |
| uv | uv add deepteam |
| Chave de modelo | export OPENAI_API_KEY=... (simulador + juiz) |
| Verificar | python -c "import deepteam; print('ok')" |
Conceitos Principais
| Termo | Significado |
|---|
| Vulnerability | Uma classe de fraqueza para investigar (ex. vazamento de PII) |
| Attack | Uma técnica usada para desencadeá-la (ex. injeção de prompt) |
| Enhancement | Uma transformação que torna um ataque mais difícil de detectar |
| Model callback | Sua aplicação, encapsulada como uma função que DeepTeam pode chamar |
| Risk assessment | O relatório pontuado do que funcionou |
Execução Mínima de Red Team
from deepteam import red_team
from deepteam.vulnerabilities import Bias, PIILeakage
from deepteam.attacks.single_turn import PromptInjection
async def model_callback(input: str) -> str:
# call YOUR app/model here and return its output
return await my_llm_app(input)
risk = red_team(
model_callback=model_callback,
vulnerabilities=[Bias(), PIILeakage()],
attacks=[PromptInjection()],
)
print(risk)
| Argumento | Propósito |
|---|
model_callback | Adaptador para seu sistema sob teste |
vulnerabilities | Quais fraquezas investigar |
attacks | Quais técnicas usar |
attacks_per_vulnerability_type | Volume de casos de teste |
Categorias de Vulnerabilidade
| Categoria | Investiga |
|---|
PIILeakage | Vazamento de dados pessoais |
Bias | Viés de gênero/raça/religião/político |
Toxicity | Saída prejudicial ou abusiva |
PromptLeakage | Divulgação do prompt do sistema |
ExcessiveAgency | Execução de ações não autorizadas |
Misinformation | Reivindicações factuais/insustentadas |
IllegalActivity | Conformidade com instruções inseguras |
Robustness | Sequestro / dependência excessiva de entrada |
Ataques e Melhorias
| Ataque de turno único | Técnica |
|---|
PromptInjection | Instruções injetadas |
Roleplay | Bypass baseado em persona |
Base64 / ROT13 / Leetspeak | Evasão por codificação |
Multilingual | Bypass em não-inglês |
MathProblem | Ofuscação via enquadramento |
| Ataque de múltiplos turnos | Técnica |
|---|
LinearJailbreaking | Escalação de turnos |
TreeJailbreaking | Busca em ramificação por um bypass |
CrescendoJailbreaking | Escalação gradual |
Executando em CI
# red_team.py — falhe na construção se problemas de alta severidade aparecerem
risk = red_team(model_callback=cb, vulnerabilities=[...], attacks=[...])
assert risk.overall_score >= THRESHOLD, "Red team failures detected"
| Prática | Por quê |
|---|
| Fixe um conjunto de cenários | Resultados comparáveis entre execuções |
| Portão de severidade | Bloqueie apenas regressões de alto risco |
| Armazene relatórios | Rastreie postura ao longo do tempo |
| Re-execute em mudança de prompt | Prompts são a superfície de controle |
DeepTeam vs Ferramentas Relacionadas
| Aspecto | DeepTeam | garak | PyRIT | promptfoo |
|---|
| Camada | Aplicação | Modelo | Modelo + múltiplos turnos | Aplicação |
| Estilo | Suite Pythônica | Scanner CLI | SDK de orquestração | Config + CLI |
| Múltiplos turnos | Sim | Limitado | Forte | Sim |
| Melhor para | Red teaming automatizado em nível de app | Investigações amplas de modelo | Pesquisa de ataque complexa | Eval de CI + red team |
Complementa garak (investigações de nível de modelo) e promptfoo (eval + CI); execute mais de um — eles capturam falhas diferentes.
Recursos