프롬프트 엔지니어링 26가지 방법

LLM의 답변을 향상시키는 26가지 방법
Feb 28, 2024
프롬프트 엔지니어링 26가지 방법

프롬프트 엔지니어링 26가지 팁

AI와 사람 간의 소통이 점점 더 자연스러워지는 시대에, 대규모 언어 모델(LLM)과의 대화 방식 즉, 프롬프트를 향상시키는 것은 정말 큰 가치를 가지고 있습니다. 이걸 프롬프트 엔지니어링이라고 부르죠. AI의 답변을 최적화할 수 있는 프롬프트 기법은 우리가 원하는 답을 얻는 데 큰 도움이 됩니다.

최근 연구에서 발표된 26가지 프롬프트 기법(논문 : Principled Instructions Are All You Need for Questioning LLaMA-1/2, GPT-3.5/4)은 프롬프팅의 기본 원칙을 26가지로 잘 정리해 주었습니다. 이 기법들은 쿼리 과정을 단순화하고, AI로부터 더 정확하고 관련성 높은 반응을 이끌어내는 데 초점을 맞춥니다.

이번 글에서는 이 26가지 기법을 정리하고, 어떻게 그것들을 활용하여 LLM과의 대화를 향상시킬 수 있는지에 대해 이야기하려 합니다.

26가지

이 26가지 방법을 이해하기 쉽게 4가지 주제로 분류해봤습니다.
1) 말투 설정
2) 입력 형식 설정
3) 출력 형식 설정
4) 기타 설정

분야별 정리
  • 각 번호는 논문에서 작성된 항목의 번호로 작성하였습니다.

  • 순서는 중요도 순으로 임의 분류 하였습니다.

1) 말투 설정

1. 예의를 갖추지 말고 본론만 말하기

"부탁합니다", "괜찮으시다면", "감사합니다", "고마워"와 같은 문구는 LLM의 대답에 아무런 차이를 만들지 못합니다. 모델에게 친절하게 대하고 싶은 경우가 아니라면 이러한 문구는 별다른 이점이 없습니다. 바로 본론으로 들어가면 됩니다.

9. 단호하게 말하기, 임무설정

"너의 임무는" 또는 "너는 반드시"와 같은 문구는 모델이 작업과 우선 순위를 더 잘 이해할 수 있도록 도와줍니다.

10. 협박하기

모델에게 "원치 않는 결과에 대해 불이익을 줄 수도 있습니다." 와 같은 말을 추가하여 더 좋은 답변을 얻을 수 있습니다.

원하는 결과를 주지 않으면 처벌받는다고 협박하는 것도 좋습니다. 특정 처벌을 정해주셔도 되지만, 그냥 처벌을 받는다고 언급하는 정도를 추가하기만 해도 됩니다.

4. 긍정 지시문

부정문도 피하는게 좋습니다. 하지말라고 하는것보다 하라고 하는게 좋습니다.

AI도 사람과 같이 하지말라고 하면 그게 더 잘떠오른다고 합니다. 제가 "쿠키에 대해 생각하지마세요"라고 하면, 여러분들도 지금 쿠키가 생각나는것 처럼 말이죠.


추가 꿀팁

6. 팁주기 설정

최근 언어 모델에 대한 연구 결과, 모델에게 "더 나은 답변을 위해 팁으로 $xxx를 드릴게요"라고 말하면 실제로 더 좋은 반응을 얻을 수 있는 것으로 나타났습니다. 또한, 통계적 관찰에 따르면 20달러 팁보다 200달러 팁이 모델에게 더 큰 동기를 부여할 가능성이 높습니다.

18. 키워드 반복하기

프롬프트에서 핵심적인 키워드나 주제를 강조하면 AI가 해당 요소에 더 집중하도록 유도하여 주제 및 키워드에 더 관련성 있는 답변을 만들 수 있습니다.


2) 입력 형식 설정

8. 프롬프트 형식 지정(지시, 예시, 질문 등 설정)

'###지침###'으로 프롬프트를 시작한 다음 '###예시###' 또는 '###질문###'을 입력합니다(해당되는 경우). 그런 다음 콘텐츠를 제시합니다.

하나 이상의 줄 바꿈을 사용하여 지침, 예제, 질문, 문맥 및 입력 데이터를 구분합니다.

7. 예시 제공(few-shot prompt)

Few-show prompting(다수의 예시 제시)는 추가 문서로 모델을 학습시키지 않아도 프롬프트 만으로 학습시키는 기법입니다.

프롬프트에 몇가지 예제를 추가하여 모델을 이해시키기만 하면 됩니다.

few shot prompt

17. 구분 기호 사용

"---" 또는 "***"와 같은 구분 기호를 사용하여 프롬프트의 섹션을 구분하거나 응답의 끝을 표시하여 입력과 출력을 보다 명확하게 구성할 수 있습니다.

여기서 중요한 게 구분기호는 지시문과 예시문 어디에도 등장하지 않을 법한 기호를 아무거나 써주시면 됩니다.

즉, 다시말해 프롬프트를 봤을 때 내가 이해할 정도로만 잘 정리하면 AI도 잘 이해한다고 생각하시면 됩니다.

3. 작업 세분화

AI와의 대화에서 복잡한 작업을 더 간단한 프롬프트로 세분화하는 것은 효율적인 기법입니다. 이렇게 하면 한 번에 작업의 한 가지 측면을 다루면서 집중적이고 명확한 의사소통이 가능합니다. 이러한 접근 방식은 전체 문제를 해결하기 위해 보다 관리하기 쉽고 오류 없이 진행할 수 있도록 도와줍니다.

19. CoT + few-shot prompt

단답형 프롬프트에서 연쇄 사고(CoT) 논리를 사용하면 AI가 복잡한 쿼리를 더 효과적으로 이해하고 처리하는 데 도움이 됩니다. 예시를 통해 논리적인 사고의 진행 과정을 안내함으로써 AI가 인간의 추론을 더 잘 모방하여 특히 문제 해결이나 자세한 설명에서 보다 포괄적이고 정확한 답변을 이끌어낼 수 있습니다.

쉽게 설명하자면 CoT는 단계별 질문이고, few-shot 프롬프트는 다수의 예시를 넣는 프롬프트라고 이해하시면 됩니다. 즉 단계별로 몇가지의 예시를 들면서 프롬프트를 작성하면 정확한 결과를 받을 수 있다는 설명입니다.


3) 출력 형식 설정

2. 청중 설정

보다 정확한 답변을 얻으려면 모델에 청자가 누구인지 알려주는 것이 좋습니다.

5. 어린이 청자 설정

ex) 간단한 단어로 [특정 주제 삽입]을 설명하세요.

제가 11살인 것처럼 설명해 주세요.

해당 [분야]의 초보자처럼 설명해 주세요.

5세 어린이에게 설명하는 것처럼 간단한 영어를 사용하여 [에세이/텍스트/단락]을 작성하세요.

16. 역할 부여

교사, 친구, 전문가 등의 역할을 지정하면 선택한 페르소나에 맞게 모델의 반응을 맞춤화하여 보다 맥락에 적합하고 매력적인 상호작용을 제공할 수 있습니다.

15. 내가 이해했는지 확인 질문 요청 / 테스트 설정

특정 주제, 아이디어 또는 어떤 정보에 대해 질문하면서 이해도를 테스트하려면 "[정리/주제/규칙 이름]을 가르쳐 주고 마지막에 테스트를 포함하되 답을 알려주지 않고 내가 답할 때 정답을 맞았는지 알려주세요."라는 문구를 추가하면 됩니다.

14. 역질문 요청

모델이 필요한 출력을 제공하기에 충분한 정보를 얻을 때까지 질문을 요청하여 정확한 세부 사항과 요구 사항을 도출할 수 있도록 합니다(예: "지금부터..."와 같은 질문).

11. 인간적이고 자연스러운 대답 요청

"자연스럽고 인간적인 방식으로 주어진 질문에 답하세요."와 같은 문구를 추가합니다.

12. 단계별로 생각하라고 요청

프롬프트에 "단계별로 생각해" 포함시키기

"단계별로 생각해"와 같은 문구는 모델이 순차적이고 논리적인 방식으로 응답에 접근하도록 유도합니다.

이 팁은 프로세스를 설명하거나 문제를 해결하거나 복잡한 개념을 이해하기 쉬운 부분으로 세분화할 때 특히 유용합니다.

13. 편견 제거

"편견이 없고 고정관념에 의존하지 않는 답변을 작성해."라는 문구를 추가하기만 하면 됩니다.


4) 기타 설정

20. 출력 문구(primer) 지정

출력 프라이머는 원하는 출력의 시작 부분으로 프롬프트를 마무리하는 것입니다.

ex) Prompt

뉴턴의 운동 제1법칙 뒤에 숨겨진 원리를 설명해세요.
설명 :

21. 필요한 모든 정보 추가 요청

에세이/텍스트/문단/기사 또는 상세하게 작성해야 하는 텍스트를 작성하려면 이 프롬프트를 사용하세요:
"[주제]에 대한 [에세이/텍스트/문단]을 필요한 모든 정보를 포함하여 상세하게 작성해."라고 입력합니다.

22. 출력 텍스트 개선 요청

스타일을 변경하지 않고 특정 텍스트를 수정/변경 요청합니다

ex) Prompt
내가 보낸 모든 문단을 수정해. 내가 쓴 문법과 어휘를 개선하고 자연스럽게 들리는지 확인해.
형식적인 단락이 유지되도록 보장하면서 원래의 글쓰기 방식을 유지해.

23. 여러개의 파일 코딩 프롬프트

여러 파일에 걸쳐 있는 복잡한 코딩 프롬프트가 있는 경우:
ex1) Prompt
둘 이상의 파일에 걸쳐 있는 코드를 생성할 때마다 지정된 파일을 자동으로 만들거나 기존 파일을 변경하여 생성된 코드를 삽입하기 위해 실행할 수 있는 [프로그래밍 언어] 스크립트를 생성해. [질문].
ex2) Prompt
두 개 이상의 파일에 걸쳐 있는 코드를 생성하고 실행하여 서로 다른 기능을 위한 두 개의 기본 앱이 있는 Django 프로젝트에 지정된 파일을 자동으로 생성할 수 있는 Python 스크립트를 생성해.

24. 제시어 기반 글쓰기

모델의 답변에서 특정 단어, 구 또는 문장을 시작하거나 계속 사용하려면 다음 프롬프트를 사용합니다:
시작 부분[노래 가사/이야기/문단/에세이...]을 제공합니다: [가사/단어/문장 삽입]. 제공된 단어에 따라 완성하세요. 흐름을 일관되게 유지하세요.
ex) Prompt
판타지 소설의 시작을 알려줄게 : "안개가 자욱한 산은 아무도 모르는 비밀을 간직하고 있다."
제공된 단어를 바탕으로 소설을 완성해. 흐름은 일관되게 유지해.

25. 요구 사항을 명확하게 명시

이 접근 방식은 모델의 응답에서 예상되는 내용에 대한 구체적인 지침을 제공하기 때문에 효과적입니다.
키워드, 규정, 힌트 또는 지침을 통해 요구 사항을 명확하게 명시함으로써 모델이 생성해야 하는 내용의 범위와 내용을 이해하는 데 도움이 되는 매개 변수를 설정하는 것입니다.
ex) Prompt
다음을 포함하여 여행 짐싸기 목록을 만들어.
키워드 : "선크림, 수영복, 비치타울..."

26. 긴 에세이를 위한 프롬프트

에세이나 단락과 같이 샘플과 유사한 텍스트를 작성하려면 다음 지침을 따르세요:
"제공된 단락[제목/텍스트/에세이/답안]을 기준으로 동일한 언어를 사용해"

ex) Prompt
"""부드러운 파도가 은빛 모래밭에 옛이야기를 속삭였고, 각각의 이야기는 지나간 시대에 대한 덧업는 기억이었습니다"""
제공된 텍스트를 기반으로 동일한 언어를 사용해 바람과 산의 상호작용을 묘사해.


지금까지 최근에 발표된 논문의 내용과 함께 프롬프팅 기법 26가지에 대해 알아봤습니다.

여러분들도 꼭 프롬프팅 기법을 활용하여 LLM과 친해지시길 바라겠습니다.

생성형 AI 시대에서의 프롬프트 엔지니어링은 필수입니다.

이제 곧 이 프롬프트 만으로 모든 것을 만들 수 있는 시대가 될겁니다.

기묘한자동화 블로그도 구독 부탁드립니다~ 🍪

Share article
무료 뉴스레터를 구독하고 최신 AI 소식을 받아보세요!
RSSPowered by inblog