Комментарии 4
Для затравки в статье говорится об атаках на бота со стороны веб сайта и вообще пользовательского input (интересно как защищаться от этого), а на практике дано не шибко интересное, борьба с финишным токеном — точкой (это вообще слабость LLM-ок)
Это и правда общая проблема генеративных нейросетей (как картиночных, так и текстовых): очень легко получить примерно то, что хочется, но получить точно то, что хочется, бывает сложно, отсюда и борьба с точкой в данном случае. Что же касается каких-то конкретных рекомендаций по защите от атак – очень новая тема, пока конкретные рекомендации дать сложно, кроме того, что стоит серьезно подумать, прежде чем давать приложениям на основе LLM какие-то внешние возможности типа отправки писем. Зато видно, что защиты на уровне prompt-а не работают :)
Я про то что, по прямой аналогии с sql injection, если мы пользовательский input вынуждены отправлять в prompt к llm (а мы вынуждены, потому что это единственная причина, зачем оно вообще нужно), то нужно что то делать с такими ситуациями когда в этом запросе пользователь просит исказить вывод и управляет дальнейшим поведением сетки (убедив ИИ к примеру чтобы он поменял смысл ключевых слов).
А дальше все зависит от возможностей api, если бы у провайдеров был способ удешевить повторную отправку запроса (его части, сохраняя предварительное состояние модели после прочтения стартового prompt) то этим бы можно было бы пользоваться (объемный input (сохранить)+вопрос+ответ | сохраненный контекст+вопрос+ответ | ...), откатывая контекст до некого 'защищенного' состояния, а так с целью сэкономить на токенах, серия запросов может быть последовательная (объемный input + вопрос + ответ + вопрос + ответ...) ну и атака в этом случае может быть например на не следующий а какой то из вопросов в цепочке.
p.s. такую защиту нужно закладывать в самой модели, вводя специальные обрамляющие токены, которые позволили бы защитить контрольную часть от информационной (в llama это к примеру такие ключевые слова как ### Input… ### Question ,,, ### Answer но там не так красиво все работает как хотелось бы), но это вопрос, возможно ли это пока
Насколько я понял в данных примерах не было четкого разделения на system и user prompt? Что если инструкции описываются в системном промпте, а пользовательский ввод идет в юзер промпт?
Взламывая ChatGPT: как мы участвовали в хакатоне по атакам на ИИ