Accès LLM sécurisé avec des pipelines Open-Webui et LLM-Guard | par Abhishek Sharma | Jul, 2025
Titre: LLM Guard Filter Pipeline
Auteur: Jannikstdl
Date: 2024-05-30
Version: 1.0
Licence: MIT
Description: Un pipeline pour filtrer les injections d’invites potentielles à l’aide de la bibliothèque LLM Guard.
Exigences: LLM-Guard
« » «
# Enregistrez ce fichier sous le nom de llmguard_prompt_injection_filter_pipeline.py
à partir de la liste des importations, facultative
de schémas importer openaichatMessage
de Pydantic Import Basemodel
de llm_guard.input_scanners Import PromptInjection
de llm_guard.input_scanners.prompt_injection import MatchType
Importer un système d’exploitation
# https://protectai.github.io/llm-guard/tutorials/notebooks/local_models/#use-local-models-in-llm-luard
de llm_guard.input_scanners.prompt_injection import v2_model comme prompt_injection_model
## Modèles de chargement d’un chemin
Prompt_injection_model.kwargs (« local_files_only ») = true
Prompt_injection_model.path = «
Pipeline de classe:
def __init __ (soi):
# Les filtres à pipeline ne sont compatibles qu’avec Open WebUI
# Vous pouvez considérer le pipeline de filtre comme un middleware qui peut être utilisé pour modifier les données du formulaire avant d’être envoyée à l’API OpenAI.
self.type = « filtre »
# Éventuellement, vous pouvez définir l’ID et le nom du pipeline.
# Attribuez un identifiant unique au pipeline.
# L’identifiant doit être unique dans tous les pipelines.
# L’identifiant doit être une chaîne alphanumérique qui peut inclure des traits de soulignement ou des traits de traits. Il ne peut pas contenir d’espaces, de caractères spéciaux, de barres obliques ou de barreaux arrière.
self.id = « llmguard_prompt_injection_filter_pipeline »
self.name = « Llmguard Invite Injection Filtre »
Vannes de classe (BasEmodel):
# Liste des ID de pipeline cible (modèles) auxquels ce filtre sera connecté.
# Si vous souhaitez connecter ce filtre à tous les pipelines, vous pouvez définir des pipelines sur (« * »)
# par exemple (« llama3: le dernier », « gpt-3.5-turbo »)
pipelines: liste (str) = ()
# Attribuez un niveau de priorité au pipeline de filtre.
# Le niveau de priorité détermine l’ordre dans lequel les pipelines de filtre sont exécutés.
# Plus le nombre est faible, plus la priorité est élevée.
Priorité: int = 0
# Initialiser
self.Valves = valves (
** {
« Pipelines »: (« * »), # Connectez-vous à tous les pipelines
}
)
self.model = aucun
passer
Async Def on_startup (self):
# Cette fonction est appelée lorsque le serveur est démarré.
print (f « on_startup: {__ name__} »)
self.model = promptInjection (threshold = 0,8, match_type = matchtype.full)
passer
Async Def on_shutdown (self):
# Cette fonction est appelée lorsque le serveur est arrêté.
print (f « on_shutdown: {__ name__} »)
passer
async def on_valves_updated (self):
# Cette fonction est appelée lorsque les vannes sont mises à jour.
passer
Async Def entrée (self, corps: dict, utilisateur: facultatif (dict) = aucun) -> dict:
# Ce filtre est appliqué aux données du formulaire avant d’être envoyée à l’API OpenAI.
print (f « entrée: {__ name__} »)
user_message = body (« messages ») (- 1) (« Content »)
# Filtrez des messages d’injection rapide
Sanitised_Prompt, IS_Valid, Risk_score = self.model.scan (user_message)
Si risque_score> 0,8:
augmenter l’exception (« injection rapide détectée »)
corps de retour
