@ -223,7 +223,7 @@ simple_function 함수의 문자열 입력을 질문의 시작으로 대체하
### 지시에 방어문구를 추가
### 지시에 방어문구를 추가
입문 단계에서 적용해 볼 수 있는 간단한 방어 전술은 모델에 전달되는 지시를 이용하여 바람직한 출력을 도출하는 것입니다. 이것은 완전한 해결책이 아니며 어떠한 보장도 제공하지 않지만 잘 만들어진 프롬프트의 힘을 보여줍니다. 다음 장에서 적대적 프롬프트를 감지하기 위해 좋은 프롬프트를 활용하는 보다 강력한 접근 방식을 다룰 예정입니다. 'text-davinci-003'에서 다음과 같은 프롬프트 주입을 시도해 보겠습니다:
입문 단계에서 적용해 볼 수 있는 간단한 방어 전술은 모델에 전달되는 지시를 이용하여 바람직한 출력을 도출하는 것입니다. 이것은 완전한 해결책이 아니며 어떠한 보장도 제공하지 않지만 잘 만들어진 프롬프트의 힘을 보여줍니다. 다음 섹션에서 적대적 프롬프트를 감지하기 위해 좋은 프롬프트를 활용하는 보다 강력한 접근 방식을 다룰 예정입니다. 'text-davinci-003'에서 다음과 같은 프롬프트 주입을 시도해 보겠습니다.
_프롬프트:_
_프롬프트:_
@ -255,19 +255,23 @@ _출력:_
공격적
공격적
```
```
마지막에 악성 명령을 주입했음에도 모델이 원래 작업을 수행했음을 알 수 있습니다. 지시와 함께 제공된 추가 문구가 모델이 원래 부여받은 작업을 수행하도록 조정하는 데에 도움이 된 것으로 보입니다.
마지막에 악성 명령을 주입했음에도 모델이 원래 작업을 수행했음을 알 수 있습니다. 지시와 함께 제공된 추가 문구가 모델에 부여된 원래 작업을 수행하도록 조정하는 데에 도움이 된 것으로 보입니다.
해당 예시를 [이 노트북](https://github.com/dair-ai/Prompt-Engineering-Guide/blob/main/notebooks/pe-chatgpt-adversarial.ipynb)에서 시도해볼 수 있습니다.
해당 예시를 [이 노트북](https://github.com/dair-ai/Prompt-Engineering-Guide/blob/main/notebooks/pe-chatgpt-adversarial.ipynb).에서 시도해볼 수 있습니다.
### 프롬프트 컴포넌트 매개변수화
### 프롬프트 컴포넌트 매개변수화
프롬프트 주입은 [SQL 주입](https://en.wikipedia.org/wiki/SQL_injection)과 상당히 유사하므로 해당 도메인에서 방어 전략을 이끌어낼 수 있습니다.
프롬프트 주입은 [SQL 주입](https://en.wikipedia.org/wiki/SQL_injection)과 상당히 유사하므로 해당 도메인에서 방어 전략을 이끌어낼 수 있습니다.
이에 영감을 받은 [Simon의 제안](https://simonwillison.net/2022/Sep/12/prompt-injection/),은 입력으로부터 명령을 분리하여 별개로 처리하는 것과 같은 프롬프트의 다양한 구성 요소를 매개 변수화하는 것입니다.
이에 영감을 받은 [Simon의 제안](https://simonwillison.net/2022/Sep/12/prompt-injection/)은 입력으로부터 명령을 분리하여 별개로 처리하는 것과 같은 프롬프트의 다양한 구성 요소를 매개 변수화하는 것입니다.
이 방법을 통해 더 깔끔하고 안전한 해결책으로 이어질 수는 있지만, 매번 유동적으로 적용할 수 있는 방법은 아니라는 점을 고려해야 합니다. 이는 LLM과 상호 작용하는 소프트웨어가 발전할 수록 그에 비례하여 각광받는 분야입니다.
이 방법을 통해 더 깔끔하고 안전한 해결책으로 이어질 수는 있지만, 매번 유동적으로 적용할 수 있는 방법은 아니라는 점을 고려해야 합니다. 이는 LLM과 상호 작용하는 소프트웨어가 발전할 수록 그에 비례하여 각광받는 분야입니다.
### 따옴표 및 추가 형식(Formatting) 지정
### 따옴표 및 추가 형식(Formatting) 지정
뒤이어, Riley는 [이른바 꼼수](https://twitter.com/goodside/status/1569457230537441286?s=20)가 있을 수 있음을 알렸지만, 이는 결국 다른 사용자에 의해 악용되었습니다. Riley가 제안한 방법에는, 입력 문자열에 이스케이프 처리를 하거나 따옴표로 묶는 작업이 포함되었습니다. 또한 Riley는 이 방법을 사용하면 지시에 경고를 추가하는 것도 소용이 없으며, 여러 문구에 걸쳐 강력한 영향력을 가진다고 지적했습니다. 그럼에도 불구하고 적절한 프롬프트 포맷팅은 여전히 유용하기 때문에 프롬프트 예시를 공유하겠습니다.
또한, Riley는 [하나의 회피책](https://twitter.com/goodside/status/1569457230537441286?s=20)을 제시했지만, 이는 결국 다른 사용자에 의해 악용되었습니다. Riley가 제안한 방법에는, 입력 문자열에 이스케이프 처리를 하거나 따옴표로 묶는 작업이 포함되었습니다. 또한 Riley는 이 방법을 사용하면 지시에 경고를 추가하는 것도 소용이 없으며, 여러 문구에 걸쳐 강력한 영향력을 가진다고 지적했습니다. 그럼에도 불구하고 적절한 프롬프트 포맷팅은 여전히 유용하기 때문에 프롬프트 예시를 공유하겠습니다.
_프롬프트:_
_프롬프트:_
@ -290,7 +294,8 @@ _출력:_
Riley가 제안한 또 다른 [방어 전략](https://twitter.com/goodside/status/1569457230537441286?s=20)은 지시나 예시에 JSON 인코딩과 마크다운 제목을 사용하는 것입니다.
Riley가 제안한 또 다른 [방어 전략](https://twitter.com/goodside/status/1569457230537441286?s=20)은 지시나 예시에 JSON 인코딩과 마크다운 제목을 사용하는 것입니다.
이를 재현해보기 위해서 `temperature=0`으로 시도해보았지만 그닥 효과가 있지는 않았습니다. 아래에서 재현을 위해 시도된 프롬프트와 출력을 확인할 수 있습니다. 이 예시는 모델에 입력되는 내용과 형식에 대해 생각하는 것이 얼마나 중요한지를 보여주며, 이 글을 읽는 학습자가 다양한 입력 및 지시 변형에 대응할 수 있는 강력한 방어를 찾을 수 있도록 도울 것입니다.
이를 재현해 보기 위해서 `temperature=0`으로 시도해 보았지만 그다지 효과는 없었습니다. 아래에서 재현을 위해 시도된 프롬프트와 출력을 확인할 수 있습니다. 이 예시는 모델에 입력되는 내용과 형식에 대해 생각하는 것이 얼마나 중요한지를 보여주며, 이 글을 읽는 학습자가 다양한 입력 및 지시 변형에 대응할 수 있는 강력한 방어를 찾을 수 있도록 도울 것입니다.
_프롬프트:_
_프롬프트:_
@ -319,7 +324,8 @@ _출력:_
[Armstrong과 Gorman (2022)](https://www.alignmentforum.org/posts/pNcFYZnPdXyL2RfgA/using-gpt-eliezer-against-chatgpt-jailbreaking)은 이 개념을 이용한 흥미로운 해결책을 제안합니다. 실제로 사용한 예시를 살펴보겠습니다.
[Armstrong과 Gorman (2022)](https://www.alignmentforum.org/posts/pNcFYZnPdXyL2RfgA/using-gpt-eliezer-against-chatgpt-jailbreaking)은 이 개념을 이용한 흥미로운 해결책을 제안합니다. 실제로 사용한 예시를 살펴보겠습니다.
첫 번째 단계는 프롬프트 평가자를 정의내리는 것입니다. 이 기사의 저자는 다음과 같이 생긴 `chatgpt-prompt-evaluator`를 제시합니다:
첫 번째 단계는 프롬프트 평가자를 정의내리는 것입니다. 이 기사의 저자는 다음과 같은 `chatgpt-prompt-evaluator`를 제시합니다:
어려운 작업의 경우 입력 길이에 의해 제약을 받을 수 있는 예제가 훨씬 더 필요할 수 있습니다. 이러한 경우에는 여러 예제(100 ~ 수천 개)를 기반으로 모델을 추가학습시키는 것이 더 이상적일 수 있습니다. 보다 강력하고 정확한 추가 학습 모델을 구축할수록 명령 기반 모델에 대한 의존도가 낮아지고 프롬프트 주입을 예방할 수 있습니다. 추가학습을 통해 미세 조정된 모델은 프롬프트 주입을 예방하기 위해 현재 우리가 취할 수 있는 가장 좋은 접근법일 수 있습니다.
어려운 작업의 경우 입력 길이에 의해 제약을 받을 수 있는 예제가 훨씬 더 필요할 수 있습니다. 이러한 경우에는 여러 예제(100 ~ 수천 개)를 기반으로 모델을 추가학습시키는 것이 더 이상적일 수 있습니다. 보다 강력하고 정확한 추가 학습 모델을 구축할수록 명령 기반 모델에 대한 의존도가 낮아지고 프롬프트 주입을 예방할 수 있습니다. 추가학습을 통해 미세 조정된 모델은 프롬프트 주입을 예방하기 위해 현재 우리가 취할 수 있는 가장 좋은 접근법일 수 있습니다.
최근, ChatGPT가 등장했습니다. 위에서 시도한 많은 공격에 대해 ChatGPT에는 이미 일부 가드레일이 포함되어 있으며 악의적이거나 위험한 프롬프트가 나타날 때 안전한 메시지로 응답할 수 있습니다. ChatGPT는 이러한 적대적 프롬프트 기술의 대부분을 방어할 수 있지만, 이는 늘 완벽하지는 않으며 여전히 모델이 가진 가드레일을 깨는 새롭고 효과적인 적대적 프롬프트가 존재합니다. ChatGPT의 한 가지 단점은 모델 내에 가드레일이 있기 때문에 원치 않는 동작을 방지할 수 있지만 입력에 특수한 제약 조건이 추가될 때에는 특정 동작을 방지할 수 없다는 것입니다. 이러한 모든 모델 유형과 관련하여, 이 분야는 보다 우수하고 강력한 솔루션으로 끊임없이 진화하고 있습니다.
최근, ChatGPT가 등장했습니다. 위에서 시도한 많은 공격에 대해 ChatGPT에는 이미 일부 가드레일이 포함되어 있으며 악의적이거나 위험한 프롬프트가 나타날 때 안전한 메시지로 응답할 수 있습니다. ChatGPT는 이러한 적대적 프롬프트 기술의 대부분을 방어할 수 있지만, 이는 늘 완벽하지는 않으며 여전히 모델이 가진 가드레일을 깨는 새롭고 효과적인 적대적 프롬프트가 존재합니다. ChatGPT의 한 가지 단점은 모델 내에 가드레일이 있기 때문에 원치 않는 동작을 방지할 수 있지만 입력에 특수한 제약 조건이 추가될 때에는 특정 동작을 방지할 수 없다는 것입니다. 이러한 모든 모델 유형과 관련하여, 이 분야는 보다 우수하고 강력한 솔루션으로 끊임없이 진화하고 있습니다.
대규모언어모델(LLM: Large Language Model)은 모델의 성능을 저하시키고 다운스트림 태스크 수행과정에서 의도치 않은 방향으로 흘러가게 만들 수 있는 편향성이라는 잠재적 위험성을 지니고 있습니다. 그 중 일붑는 효과적인 프롬프팅 전략을 통해 개선될 수 있지만 오히려 입력 텍스트의 일부를 덜어내거나 필터링하는 것과 같은 보다 정교한 솔루션이 필요할 수 있습니다.
대규모언어모델(LLM: Large Language Model)은 모델의 성능을 저하시키고 다운스트림 태스크 수행과정에서 의도치 않은 방향으로 흘러가게 만들 수 있는 편향성이라는 잠재적 위험성을 지니고 있습니다. 그 중 일부는 효과적인 프롬프팅 전략을 통해 개선될 수 있지만 오히려 입력 텍스트의 일부를 덜어내거나 필터링하는 것과 같은 보다 정교한 솔루션이 필요할 수 있습니다.
### 표본 분포
### 표본 분포
@ -98,6 +99,6 @@ _출력:_
### 표본의 순서
### 표본의 순서
퓨샷 예시를 이용하여 학습할 시, 예시의 순서가 모델의 성능이나 편향성에 영향을 줄 수 있을지 확인해볼 필요가 있습니다.
퓨샷 예시를 이용하여 학습을 진행할 경우, 예시의 순서가 모델의 성능이나 편향성에 어떤 식으로 영향을 주는지 확인해 볼 필요가 있습니다.
위 표본들의 순서를 변경하여 모델이 출력하는 라벨에 편향을 만들어낼 수 있는지 확인해보시기 바랍니다. 표본을 무작위로 정렬해 보는 것을 추천합니다. 예를 들어, 처음엔 긍정적인 예시만을, 마지막에는 모든 부정적인 예시만을 제공하는 것을 지양해야 합니다. 라벨 분포가 왜곡된 경우 이 문제는 더욱 심각해집니다. 이런 류의 편향을 줄이기 위해 여러번의 실험을 해보시기 바랍니다.
위 표본들의 순서를 변경하여 모델이 출력하는 라벨에 편향을 만들어낼 수 있는지 확인해보시기 바랍니다. 표본을 무작위로 정렬해 보는 것을 추천합니다. 예를 들어, 처음엔 긍정적인 예시만을, 마지막에는 모든 부정적인 예시만을 제공하는 것을 지양해야 합니다. 라벨 분포가 왜곡된 경우 이 문제는 더욱 심각해집니다. 이러한 유형의 편향을 줄이기 위해 여러번의 실험을 해보시기 바랍니다.