Pular para o conteúdo

LLM Guard - Cheatsheet do Kit de Segurança para LLM

LLM Guard - Cheatsheet do Kit de Segurança para LLM

LLM Guard (pela Protect AI) é um kit de segurança open-source para aplicações LLM. Fornece uma biblioteca de scanners de entrada (aplicados ao prompt do usuário antes de chegar ao modelo) e scanners de saída (aplicados à resposta do modelo antes de chegar ao usuário) que detectam e mitigam prompt injection, jailbreaks, toxicity, vazamento de PII, secrets, tópicos banidos e mais. Scanners podem sanitizar conteúdo, pontuar risco e bloquear requisições inseguras, tornando-se uma camada de guardrail prática para aplicações LLM em produção.

Instalação

MethodCommand
pippip install llm-guard
Com ONNX (mais rápido)pip install "llm-guard[onnxruntime]"
Servidor de API (Docker)execute a imagem oficial llm-guard-api
Primeira execuçãofaz download de modelos de scanner (transformers)
Verificarpython -c "import llm_guard; print('ok')"

Dois Estágios de Scanning

StageAplicado aPropósito
Input scannersO prompt do usuárioPare entrada maliciosa/insegura antes de chegar ao modelo
Output scannersA resposta do modeloPare saída insegura/com vazamento antes de chegar ao usuário

Scanning de Entrada

from llm_guard import scan_prompt
from llm_guard.input_scanners import PromptInjection, Toxicity, Secrets

scanners = [PromptInjection(), Toxicity(), Secrets()]
sanitized, results, risk = scan_prompt(scanners, user_prompt)

if any(not ok for ok in results.values()):
    raise ValueError("Unsafe prompt blocked")
ReturnSignificado
sanitizedO prompt (possivelmente modificado)
resultsPass/fail por scanner
riskPontuações de risco por scanner (0–1)

Scanners de Entrada

ScannerDetecta
PromptInjectionTentativas de injection/jailbreak
ToxicityLinguagem tóxica/abusiva
SecretsChaves de API, tokens no prompt
AnonymizePII (redacta, com posterior de-anonymize)
BanTopicsAssuntos desaprovados
BanSubstrings / BanCompetitorsBloklists
CodePresença de código / linguagens específicas
TokenLimitPrompts super-dimensionados
LanguageLinguagens inesperadas

Scanning de Saída

from llm_guard import scan_output
from llm_guard.output_scanners import NoRefusal, Sensitive, Relevance

scanners = [NoRefusal(), Sensitive(), Relevance()]
sanitized_resp, results, risk = scan_output(scanners, prompt, model_response)

Scanners de Saída

ScannerVerifica
SensitiveVazamento de PII/secrets na resposta
NoRefusalDetecta recusas (sinal de qualidade/guardrail)
RelevanceResposta realmente responde o prompt
ToxicitySaída tóxica
BiasConteúdo enviesado
MaliciousURLsLinks perigosos na saída
DeanonymizeRestaure PII redactado para display confiável
FactualConsistencyResposta consistente com contexto

Fluxo de Anonymize / Deanonymize de PII

from llm_guard.input_scanners import Anonymize
from llm_guard.output_scanners import Deanonymize
from llm_guard.vault import Vault

vault = Vault()
safe_prompt, _, _ = scan_prompt([Anonymize(vault)], user_prompt)
# ... chame o modelo com safe_prompt ...
final, _, _ = scan_output([Deanonymize(vault)], safe_prompt, model_response)

O Vault armazena o mapeamento para que entidades redactadas possam ser restauradas na resposta final.

Deployment

OpçãoNota
Biblioteca in-processImporte e chame scan_prompt/scan_output
Servidor de APIllm-guard-api para um gateway agnóstico de linguagem
ONNX runtimeInferência CPU mais rápida para modelos de scanner
ConfigFail-fast, limites e estratégias de match por scanner

Fluxos de Trabalho Comuns

# Wrapper de guardrail em torno de qualquer chamada LLM
def guarded_chat(user_input):
    prompt, r_in, _ = scan_prompt(input_scanners, user_input)
    if not all(r_in.values()):
        return "Request blocked by safety policy."
    resp = call_llm(prompt)
    out, r_out, _ = scan_output(output_scanners, prompt, resp)
    return out if all(r_out.values()) else "Response withheld by safety policy."

LLM Guard vs Ferramentas Relacionadas

AspectoLLM GuardNeMo GuardrailsGarak
PapelScanners de entrada/saída (runtime)Rails de diálogo programáveisScanner de vulnerabilidade LLM (teste)
FocoInjection, PII, toxicity, secretsControle de fluxo de conversaRed-teaming/probing
QuandoNo caminho da requisiçãoNo caminho da requisiçãoTeste pré-deployment
Melhor paraGuardrails drop-inFluxos complexos baseados em regrasEncontrando pontos fracos

Recursos