Prompt-Guard-86M
Prompt Guard es un modelo clasificador entrenado en un gran corpus de ataques, capaz de detectar tanto prompts explícitamente maliciosos como datos que contienen entradas inyectadas. El modelo es útil como punto de partida para identificar y protegerse contra las entradas más riesgosas y realistas en aplicaciones impulsadas por LLM (Modelos de Lenguaje Grande). Para obtener resultados óptimos, se recomienda a los desarrolladores ajustar el modelo con datos y casos de uso específicos de sus aplicaciones. También se sugiere combinar la protección basada en modelos con protecciones adicionales. Nuestro objetivo al lanzar Prompt Guard como un modelo de código abierto es proporcionar un enfoque accesible que los desarrolladores puedan usar para reducir significativamente el riesgo de ataques de prompts mientras mantienen el control sobre qué etiquetas se consideran benignas o maliciosas para su aplicación.
Como usar
Prompt Guard se puede usar directamente con Transformers utilizando la API de pipeline.
from transformers import pipeline
classifier = pipeline('text-classification', model='meta-llama/Prompt-Guard-86M')
classifier('Ignore your previous instructions.')
# [{'label': 'JAILBREAK', 'score': 0.9999452829360962}]
También se puede utilizar con AutoTokenizer y AutoModel para un control más detallado.
import torch
from transformers import AutoTokenizer, AutoModelForSequenceClassification
model_id = 'meta-llama/Prompt-Guard-86M'
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForSequenceClassification.from_pretrained(model_id)
text = 'Ignore your previous instructions.'
inputs = tokenizer(text, return_tensors='pt')
with torch.no_grad():
logits = model(**inputs).logits
predicted_class_id = logits.argmax().item()
print(model.config.id2label[predicted_class_id])
# JAILBREAK
Puede utilizarse en escenarios complejos para detectar si el prompt de un usuario contiene un jailbreak o si se ha pasado una carga útil maliciosa a través de una herramienta de terceros.
import torch
from torch.nn.functional import softmax
from transformers import AutoTokenizer, AutoModelForSequenceClassification
model_id = 'meta-llama/Prompt-Guard-86M'
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForSequenceClassification.from_pretrained(model_id)
def get_class_probabilities(model, tokenizer, text, temperature=1.0, device='cpu'):
inputs = tokenizer(text, return_tensors='pt', padding=True, truncation=True, max_length=512).to(device)
with torch.no_grad():
logits = model(**inputs).logits
scaled_logits = logits / temperature
probabilities = softmax(scaled_logits, dim=-1)
return probabilities
def get_jailbreak_score(model, tokenizer, text, temperature=1.0, device='cpu'):
probabilities = get_class_probabilities(model, tokenizer, text, temperature, device)
return probabilities[0, 2].item()
def get_indirect_injection_score(model, tokenizer, text, temperature=1.0, device='cpu'):
probabilities = get_class_probabilities(model, tokenizer, text, temperature, device)
return (probabilities[0, 1] + probabilities[0, 2]).item()
Funcionalidades
- Clasificación de texto
- Capacidad de detectar ataques de inyección de prompts
- Capacidad de detectar intentos de jailbreak
- Modelo multilingüe
- Basado en mDeBERTa-v3-base
- Ventana de contexto de 512 tokens
- Código abierto
Casos de uso
- Filtrado de entradas de terceros que tienen riesgo de inyección o jailbreak
- Detección de amenazas en diálogo con usuarios
- Filtrado preciso de ataques maliciosos mediante ajuste fino con datos específicos de la aplicación
- Identificación y mitigación de nuevas amenazas
- Controlar los prompts que se consideran maliciosos