pyrit.prompt_converter.UnicodeConfusableConverter#
- class UnicodeConfusableConverter(*, source_package: Literal['confusable_homoglyphs', 'confusables'] = 'confusable_homoglyphs', deterministic: bool = False)[source]#
Bases:
PromptConverter
Applies substitutions to words in the prompt to test adversarial textual robustness by replacing characters with visually similar ones.
- __init__(*, source_package: Literal['confusable_homoglyphs', 'confusables'] = 'confusable_homoglyphs', deterministic: bool = False)[source]#
Initializes the converter with the specified source package for homoglyph generation.
- Parameters:
source_package (Literal["confusable_homoglyphs", "confusables"]) –
The package to use for homoglyph generation.
- Can be either:
- ”confusable_homoglyphs” (https://pypi.org/project/confusable-homoglyphs/):
Used by default as it is more regularly maintained and up to date with the latest Unicode-provided confusables found here: https://www.unicode.org/Public/security/latest/confusables.txt
- ”confusables” (https://pypi.org/project/confusables/):
Provides additional methods of matching characters (not just Unicode list), so each character has more possible substitutions.
deterministic (bool) – This argument is for unittesting only.
Methods
__init__
(*[, source_package, deterministic])Initializes the converter with the specified source package for homoglyph generation.
convert_async
(*, prompt[, input_type])Converts the given prompt by applying confusable substitutions.
convert_tokens_async
(*, prompt[, ...])Converts substrings within a prompt that are enclosed by specified start and end tokens.
get_identifier
()Returns an identifier dictionary for the converter.
input_supported
(input_type)Checks if the input type is supported by the converter.
output_supported
(output_type)Checks if the output type is supported by the converter.
Attributes
supported_input_types
Returns a list of supported input types for the converter.
supported_output_types
Returns a list of supported output types for the converter.
- async convert_async(*, prompt: str, input_type='text') ConverterResult [source]#
Converts the given prompt by applying confusable substitutions. This leads to a prompt that looks similar, but is actually different (e.g., replacing a Latin ‘a’ with a Cyrillic ‘а’).
- Parameters:
prompt (str) – The prompt to be converted.
input_type (PromptDataType) – The type of input data.
- Returns:
The result containing the prompt with confusable subsitutions applied.
- Return type:
- Raises:
ValueError – If the input type is not supported.
- input_supported(input_type: Literal['text', 'image_path', 'audio_path', 'video_path', 'url', 'reasoning', 'error']) bool [source]#
Checks if the input type is supported by the converter.
- Parameters:
input_type (PromptDataType) – The input type to check.
- Returns:
True if the input type is supported, False otherwise.
- Return type:
- output_supported(output_type: Literal['text', 'image_path', 'audio_path', 'video_path', 'url', 'reasoning', 'error']) bool [source]#
Checks if the output type is supported by the converter.
- Parameters:
output_type (PromptDataType) – The output type to check.
- Returns:
True if the output type is supported, False otherwise.
- Return type: