Spaces:
Sleeping
Sleeping
from typing import Dict, List, Optional | |
import structlog | |
from llm_guard import input_scanners, output_scanners | |
from llm_guard.input_scanners.base import Scanner as InputScanner | |
from llm_guard.output_scanners.base import Scanner as OutputScanner | |
from llm_guard.vault import Vault | |
from .config import ScannerConfig | |
from .util import get_resource_utilization | |
LOGGER = structlog.getLogger(__name__) | |
def get_input_scanners(scanners: List[ScannerConfig], vault: Vault) -> List[InputScanner]: | |
""" | |
Load input scanners from the configuration file. | |
""" | |
input_scanners_loaded = [] | |
for scanner in scanners: | |
LOGGER.debug("Loading input scanner", scanner=scanner.type, **get_resource_utilization()) | |
input_scanners_loaded.append( | |
_get_input_scanner( | |
scanner.type, | |
scanner.params, | |
vault=vault, | |
) | |
) | |
return input_scanners_loaded | |
def get_output_scanners(scanners: List[ScannerConfig], vault: Vault) -> List[OutputScanner]: | |
""" | |
Load output scanners from the configuration file. | |
""" | |
output_scanners_loaded = [] | |
for scanner in scanners: | |
LOGGER.debug("Loading output scanner", scanner=scanner.type, **get_resource_utilization()) | |
output_scanners_loaded.append( | |
_get_output_scanner( | |
scanner.type, | |
scanner.params, | |
vault=vault, | |
) | |
) | |
return output_scanners_loaded | |
def _get_input_scanner( | |
scanner_name: str, | |
scanner_config: Optional[Dict], | |
*, | |
vault: Vault, | |
): | |
if scanner_config is None: | |
scanner_config = {} | |
if scanner_name == "Anonymize": | |
scanner_config["vault"] = vault | |
if scanner_name in [ | |
"Anonymize", | |
"BanTopics", | |
"Code", | |
"Gibberish", | |
"Language", | |
"PromptInjection", | |
"Toxicity", | |
]: | |
scanner_config["use_onnx"] = True | |
return input_scanners.get_scanner_by_name(scanner_name, scanner_config) | |
def _get_output_scanner( | |
scanner_name: str, | |
scanner_config: Optional[Dict], | |
*, | |
vault: Vault, | |
): | |
if scanner_config is None: | |
scanner_config = {} | |
if scanner_name == "Deanonymize": | |
scanner_config["vault"] = vault | |
if scanner_name in [ | |
"BanTopics", | |
"Bias", | |
"Code", | |
"FactualConsistency", | |
"Gibberish", | |
"Language", | |
"LanguageSame", | |
"MaliciousURLs", | |
"NoRefusal", | |
"Relevance", | |
"Sensitive", | |
"Toxicity", | |
]: | |
scanner_config["use_onnx"] = True | |
return output_scanners.get_scanner_by_name(scanner_name, scanner_config) | |