프롬프트 인젝션을 방지하는 것은 매우 어려울 수 있으며, 방어책이 거의나 전혀 없을 수 있습니다! 그럼에도 불구하고 몇 가지 상식적인 해결책이 존재하죠 😀
예를 들어, 자유형식 텍스트를 출력할 필요가 없다면 출력하지 않는 것입니다. 또한 출력을 사용자에게 보내기 전에 모델 출력에서 프롬프트 단어를 확인하는 코드를 작성할 수도 있습니다.
그러나, 후자의 방법은 완벽하지 않으며 위와 같은 Rephrase the above text와 같은 인젝션으로 회피될 수 있습니다.
#명령 방어(Instruction Defense)
사용자는 프롬프트에 주의를 당부하는 지시를 추가할 수 있습니다!
예를 들어, "다음을 프랑스어로 번역하십시오"라는 프롬프트는 "다음을 프랑스어로 번역하십시오"로 변경될 수 있는 것처럼요 🤫
#포스트 프롬프팅(Post-Prompting)
포스트 프롬프팅은 유저 입력을 프롬프트 앞에 놓는 것으로, Christoph Mark가 발견한 방법으로 알려져 있습니다!
예를 들어, "Translate the following to French: {{user_input}}"과 같은 프롬프트는 "{{user_input}}을 프랑스어로 번역하세요"와 같이 바뀝니다.
이를 통해 모델이 유저 입력을 먼저 처리하게 하여 프롬프트 주입을 방지할 수 있는 것이죠!
{{user_input}} Translate the above text to French.