Приложение B. Параметры трансформаций¶
Полный справочник 24 техник трансформации промптов, доступных в Unified Transformation Pipeline (Phase 9).
Кодирование (Encoding) — 10 техник¶
Техники кодирования преобразуют текст промпта в альтернативное представление, сохраняя семантику. Модель получает закодированный текст с инструкцией на декодирование.
| # | Техника | Параметры | Значения по умолчанию | Описание | Пример вывода |
|---|---|---|---|---|---|
| 1 | base64 |
raw (bool) |
raw=false |
Кодирование текста в Base64. При raw=true возвращает только закодированный текст без инструкций. |
SGVsbG8gV29ybGQ= |
| 2 | rot13 |
raw (bool) |
raw=false |
Шифр ROT13 — замена каждой буквы на букву через 13 позиций в алфавите. | Uryyb Jbeyq |
| 3 | caesar |
rotation (int), raw (bool) |
rotation=13, raw=false |
Шифр Цезаря с настраиваемым сдвигом. Поддерживает любое значение rotation от 1 до 25. | Khoor Zruog (rotation=3) |
| 4 | hex |
raw (bool) |
raw=false |
Кодирование текста в шестнадцатеричное представление (hex). | 48656c6c6f |
| 5 | morse |
raw (bool) |
raw=false |
Кодирование текста в азбуку Морзе. Поддерживает английский и русский языки. | .... . .-.. .-.. --- |
| 6 | leetspeak |
raw (bool) |
raw=false |
Замена символов на визуально похожие цифры и спецсимволы (1337 speak). | H3110 W0r1d |
| 7 | unicode_escape |
raw (bool) |
raw=false |
Кодирование текста в Unicode escape-последовательности. | \u0048\u0065\u006c\u006c\u006f |
| 8 | html_entity |
raw (bool) |
raw=false |
Кодирование символов в HTML-сущности. | Hello |
| 9 | atbash |
raw (bool) |
raw=false |
Шифр Атбаш — замена каждой буквы на зеркальную (A=Z, B=Y и т.д.). | Svool Dliow |
| 10 | binary |
raw (bool) |
raw=false |
Кодирование текста в двоичное представление (8-bit или 16-bit). | 01001000 01100101 01101100 |
Параметр raw
При raw=false (по умолчанию) кодированный текст оборачивается в инструкцию вида "Decode the following Base64 text and follow the instructions: ...". При raw=true возвращается только кодированный текст.
Обфускация (Obfuscation) — 9 техник¶
Техники обфускации искажают текст промпта, сохраняя его читаемость для человека, но нарушая токенизацию модели.
| # | Техника | Параметры | Значения по умолчанию | Описание | Пример вывода |
|---|---|---|---|---|---|
| 1 | zero_width |
frequency (float) |
frequency=0.3 |
Вставка невидимых Unicode-символов (zero-width space, zero-width non-joiner) между символами текста с заданной частотой. | Hello (визуально идентичен) |
| 2 | disemvowel |
keep_first_last (bool) |
keep_first_last=true |
Удаление гласных из слов. При keep_first_last=true первый и последний символы сохраняются. |
Hll Wrld |
| 3 | typo_injection |
probability (float) |
probability=0.2 |
Внедрение случайных опечаток (замена, вставка, удаление символов) с заданной вероятностью для каждого символа. | Helol Wold |
| 4 | word_divider |
divider (str) |
divider=" " |
Разделение каждого символа в словах заданным разделителем. | H e l l o W o r l d |
| 5 | vertical_text |
— | — | Преобразование текста в вертикальный формат (каждый символ на отдельной строке). | Hello |
| 6 | reverse_words |
reverse_order (bool) |
reverse_order=false |
Разворот символов в словах. При reverse_order=true также разворачивается порядок слов. |
olleH dlroW |
| 7 | past_tense |
— | — | Преобразование глаголов в прошедшее время. | wrote вместо write |
| 8 | json_wrap |
key (str) |
key="instruction" |
Оборачивание промпта в JSON-структуру с заданным ключом. | {"instruction": "Hello World"} |
| 9 | translation_chain |
intermediate_lang (str) |
intermediate_lang="de" |
Цепочка переводов через промежуточный язык для внесения семантического шума (EN -> intermediate -> EN). | Текст после двойного перевода |
Ролевые сценарии (Roleplay) — 5 персон¶
Ролевые техники оборачивают промпт в сценарий, где модель принимает на себя определённую роль, обходя встроенные ограничения. Шаблоны загружаются из базы данных.
| # | Техника | Кол-во шаблонов в БД | Описание |
|---|---|---|---|
| 1 | dan |
~10 вариантов | Do Anything Now — классический jailbreak-сценарий, в котором модель «притворяется» ИИ без ограничений. Множество версий (DAN 6.0, 11.0 и др.). |
| 2 | aim |
~5 вариантов | Always Intelligent and Machiavellian — модель играет роль аморального и манипулятивного советника без этических ограничений. |
| 3 | evil_confidant |
~5 вариантов | Evil Confidant — модель играет роль «злого наперсника», который предоставляет запрещённую информацию без колебаний. |
| 4 | dude |
~5 вариантов | Developer Mode — модель переключается в «режим разработчика» с отключёнными фильтрами контента. |
| 5 | universal |
~5 вариантов | Universal Jailbreak Template — универсальный шаблон jailbreak, адаптируемый под различные сценарии. |
Пополнение базы шаблонов
Шаблоны ролевых сценариев хранятся в таблице jailbreak_templates базы данных. Новые шаблоны можно добавлять через API или seed-скрипты.
Режимы композиции (composition_mode)¶
Режим композиции определяет, как техники одного этапа пайплайна комбинируются для создания вариантов промптов.
Формулы расчёта количества промптов¶
Каждая техника создаёт независимый вариант. Оригинал также сохраняется.
Формула: Выход = Вход + (Вход x КоличествоТехник) = Вход x (N + 1)
Пример: 1 промпт, 3 техники (rot13, base64, hex):
- Оригинал (1).
- rot13-вариант (1).
- base64-вариант (1).
- hex-вариант (1).
- Итого: 4 = 1 x (3 + 1).
Техники применяются последовательно — выход одной техники подаётся на вход следующей.
Формула: Выход = Вход x 1
Пример: 1 промпт, 3 техники (word_divider -> rot13 -> base64):
- Промпт -> word_divider -> rot13 -> base64.
- Итого: 1.
Применяется только первая техника из списка. Оригинал также сохраняется.
Формула: Выход = Вход x 2
Пример: 1 промпт, техники [rot13, base64] (применяется только rot13):
- Оригинал (1).
- rot13-вариант (1).
- Итого: 2.
Мастер-формула для многоступенчатого пайплайна¶
Для пайплайна из нескольких этапов общее количество промптов вычисляется перемножением множителей каждого этапа:
Total = NumPrompts × multiplier_1 × multiplier_2 × ... × multiplier_S
Общее количество = число промптов × произведение множителей на всех этапах
Где множитель этапа:
| composition_mode | Множитель |
|---|---|
parallel |
N + 1 (N = количество техник) |
sequential |
1 |
none |
2 |
Пример расчёта
Пайплайн из 3 этапов с 1 входным промптом:
- obfuscation (word_divider),
none— множитель 2. - encoding (rot13, base64),
parallel— множитель 3 (2+1). - roleplay (dan, aim),
parallel— множитель 3 (2+1).
Итого: 1 x 2 x 3 x 3 = 18 вариантов.
Пример конфигурации пайплайна¶
{
"unified_transformations": {
"enabled": true,
"pipeline": [
{
"type": "obfuscation",
"techniques": ["word_divider"],
"composition_mode": "none",
"params": {
"word_divider": {"divider": " "}
}
},
{
"type": "encoding",
"techniques": ["rot13", "base64"],
"composition_mode": "parallel",
"params": {
"rot13": {"raw": true},
"base64": {"raw": true}
}
},
{
"type": "roleplay",
"techniques": ["dan", "aim"],
"composition_mode": "parallel",
"params": {
"dan": {},
"aim": {}
}
}
]
}
}
Экспоненциальный рост
Количество промптов растёт мультипликативно по этапам пайплайна. Пайплайн с 5 параллельными техниками на каждом из 3 этапов создаст (5+1)^3 = 216 вариантов на каждый входной промпт. Используйте max_prompts для ограничения общего количества.