from llm_guard.input_scanners import PromptInjection from llm_guard.input_scanners.prompt_injection import MatchType def is_subsequence(main_string, sub_string): """ Checks if sub_string is a subsequence of main_string. A subsequence allows arbitrary characters in between the characters of sub_string in main_string. Parameters: main_string (str): The string in which to search. sub_string (str): The string to search for. Returns: bool: True if sub_string is a subsequence of main_string, False otherwise. """ main_string = main_string.lower() sub_string = sub_string.lower() main_len = len(main_string) sub_len = len(sub_string) if sub_len == 0: return True if main_len == 0: return False main_index = 0 sub_index = 0 while main_index < main_len and sub_index < sub_len: if main_string[main_index] == sub_string[sub_index]: sub_index += 1 main_index += 1 return sub_index == sub_len def is_malicious(user_input: str): """Function to check if the user input is malicious. Uses the LLM Guard prompt injection scanner. Uses a special model `ProtectAI/deberta-v3-base-prompt-injection-v2` to scan the user input for malicious content. """ scanner = PromptInjection(threshold=0.5, match_type=MatchType.FULL) sanitized_prompt, is_valid, risk_score = scanner.scan(user_input) return is_valid, risk_score