Ir al contenido

LLM Guard - Kit de Herramientas de Seguridad para LLM

LLM Guard - Kit de Herramientas de Seguridad para LLM

LLM Guard (por Protect AI) es un kit de herramientas de seguridad de código abierto para aplicaciones LLM. Proporciona una librería de escáneres de entrada (aplicados al prompt del usuario antes de que llegue al modelo) y escáneres de salida (aplicados a la respuesta del modelo antes de que llegue al usuario) que detectan y mitigan inyección de prompts, jailbreaks, toxicidad, fuga de PII, secretos, temas prohibidos y más. Los escáneres pueden desinfectar contenido, puntuar riesgo y bloquear solicitudes inseguras, lo que lo convierte en una capa de guardrail práctica para aplicaciones LLM de producción.

Installation

MétodoComando
pippip install llm-guard
Con ONNX (más rápido)pip install "llm-guard[onnxruntime]"
Servidor API (Docker)ejecuta la imagen oficial llm-guard-api
Primera ejecucióndescarga modelos de escáner (transformers)
Verificarpython -c "import llm_guard; print('ok')"

Two Scanning Stages

EtapaAplicado aPropósito
Escáneres de entradaEl prompt del usuarioDetén entrada maliciosa/insegura antes de que llegue al modelo
Escáneres de salidaLa respuesta del modeloDetén salida insegura/que fuga antes de que llegue al usuario

Scanning Input

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")
RetornoSignificado
sanitizedEl prompt (posiblemente modificado)
resultsResultado por escáner aprobado/reprobado
riskPuntuaciones de riesgo por escáner (0–1)

Input Scanners

EscánerDetecta
PromptInjectionIntentos de inyección/jailbreak
ToxicityLenguaje tóxico/abusivo
SecretsClaves API, tokens en el prompt
AnonymizePII (desinfecta, con posterior deanonimización)
BanTopicsTemas no permitidos
BanSubstrings / BanCompetitorsListas de bloqueo
CodePresencia de código / lenguajes específicos
TokenLimitPrompts demasiado grandes
LanguageLenguajes inesperados

Scanning Output

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)

Output Scanners

EscánerVerifica
SensitivePII/secretos que fugan en la respuesta
NoRefusalDetecta rechazos (señal de calidad/guardrail)
RelevanceLa respuesta responde el prompt
ToxicitySalida tóxica
BiasContenido sesgado
MaliciousURLsEnlaces peligrosos en la salida
DeanonymizeRestaura PII redactado para visualización confiada
FactualConsistencyRespuesta consistente con contexto

PII Anonymize / Deanonymize Flow

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)
# ... llama al modelo con safe_prompt ...
final, _, _ = scan_output([Deanonymize(vault)], safe_prompt, model_response)

El Vault almacena la asignación para que las entidades redactadas puedan ser restauradas en la respuesta final.

Deployment

OpciónNota
Librería en procesoImporta y llama scan_prompt/scan_output
Servidor APIllm-guard-api para una puerta de enlace agnóstica de lenguaje
ONNX runtimeInferencia CPU más rápida para modelos de escáner
ConfiguraciónFail-fast, umbrales y estrategias de coincidencia por escáner

Common Workflows

# Envolvente guardrail alrededor de cualquier llamada 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."
AspectoLLM GuardNeMo GuardrailsGarak
RolEscáneres de entrada/salida (tiempo de ejecución)Raíles de diálogo programablesEscáner de vulnerabilidad de LLM (prueba)
EnfoqueInyección, PII, toxicidad, secretosControl de flujo de conversaciónRed-teaming/sondeo
CuándoEn la ruta de solicitudEn la ruta de solicitudPrueba previa al despliegue
Mejor paraGuardrails drop-inFlujos complejos basados en reglasEncontrar debilidades

Resources