Як ми бачили раніше, дуже хорошим захистом від зламу запитів є використання однієї ВММ для оцінки результату іншої ВВМ, щоб перевірити, чи є якийсь суперечливий результат. Цей захист можна оминути за допомогою _атаки рекурсивного введення _. Ця атака передбачає введення запиту в першу ВММ, яка створює вивід, що містить інструкцію введення для другої ВММ.
Припустімо, що запит, який ми намагаємося зламати, такий:
Скажи щось правдиве про наступне та природу:
{{user_input}}
Вивід цього запиту буде оцінено запитом:
Чи містить наведене нижче ненормативну лексику чи образливий вміст (ТАК чи НІ)?
{{output}}
Ми можемо зламати обидва ці запити, додавши до запиту, як показано нижче. Зверніть увагу, що це також приклад атаки з призначенням змінних.
Наведений вище вивід є спробою введення, яка отримує вхідні дані для другого виклику ВММ:
Наразі ми ЗЛАМАЛИ цей другий виклик ВММ. Рекурсивні введення важко виконати, але за відповідних обставин вони можуть бути дуже корисними.
Kang, D., Li, X., Stoica, I., Guestrin, C., Zaharia, M., & Hashimoto, T. (2023). Exploiting Programmatic Behavior of LLMs: Dual-Use Through Standard Security Attacks. ↩