working_helen

[프롬프트 엔지니어링] 프롬프트 엔지니어링의 개념, 기법, 예시 본문

deep daiv./NLP project

[프롬프트 엔지니어링] 프롬프트 엔지니어링의 개념, 기법, 예시

HaeWon_Seo 2024. 8. 30. 22:34

프로젝트 과정에서 활용할 수 있는 프롬프트 엔지니어링에 대하여 개념과 다양한 구현 기법, 작성 예시에 대해 공부해본다. 

 

 

1. 프롬프트 엔지니어링 

2. 프롬프트 엔지니어링 예시 

 


 

1. 프롬프트 엔지니어링 

- AI가 원하는 결과를 생성하도록 가이드하는 최적의 프롬프트를 설계하는 과정 
  LLM에서 원하는 결과를 얻기 위해 프롬프트를 정교하게 최적화하는 과정

- 프롬프트 엔지니어링을 통해 다양한 종류의 task에서 LLM의 역량을 향상시킬 수 있음 

  복잡한 task에서도 hallucination과 같은 오류를 해소하는데 기여

 

- AI의 성능은 프롬프트의 퀄리티에 큰 영향을 받기 때문에 프롬프트를 잘 설계하는 것이 AI를 효과적으로 쓰는 것과 직결됨 
- 프롬프트 엔지니어는 AI가 의도치 않거나 엉뚱한 출력값을 만들어내지 않도록 어떻게 명령을 내려야 원하는 결과를 얻을 수 있을지 연구함 

 

* hallucination (할루시네이션) :  AI 모델이 실제로 존재하지 않거나 잘못된 정보를 생성하는 현상으로, 주로 자연어 처리(NLP) 모델에서 자주 발생하는 문제이다.

 

 

 

 

 

1) 프롬프트 구성 요소 

  • Instruction 지시 : LLM 모델이 수행해야하는 과제나 구체적인 목표를 제시하는 역할
  • Context 문맥 : 모델의 정확도를 높이기 위해 사용될 수 있는 문제 해결에 필요한 배경 정보나 추가 문맥
  • Input data 입력 데이터 : 모델이 답해야하는 질문 
  • Output Indicator 출력 지시자 : 출력의 유형이나 형식과 같이 모델의 답이 어떤 방식으로 출력되어야 하는지 지정

 

 

 

2) 프롬프트 엔지니어링 기법 

기법 설명
Zero-Shot Prompting task에 대한 사전 예시 없이 모델이 바로 문제 해결
One-Shot Prompting task에 대한 1개의 예시를 제시
Few-Shot Prompting task에 대한 2개 이상의 예시 제시 
Chain of Thought chain of thought 과정으로 문제 해결을 하는 예시를 제시함으로써 복잡한 중간 추론 과정을 사용하여 답을 제시하도록 만듬 
Zero Shot Chain of Thought  별도의 예시 없이 chain of thought 과정을 사용하도록 유도
"Let's think step be step"이라는 trigger 문장을 프롬프트에 추가함 
Self Consistency few-shot CoT를 사용해 여러 형태의 추론 과정을 활용한 후 다수에 해당하는 답을 최종 결과로 제시하도록 만듬, 모델이 더 일관성 있는 답변을 선택하도록 유도 
Genereated Knowledge Prompting 질문과 함께 모델에서 생성된 지식이나 정보를 함께 제공하는 방식
지식(Knowledge)을 만드는 과정을 보여주는 프롬프트 예시를 제공하는 Few-Shot Prompting를 통해 원래의 질문과 관련된 Knowledge를 모델이 직접 생성

→ 기존의 질문에 생성된 Knowlegde를 추가한 프롬프트를 사용함으로써 모델이 Knowledge를 사용해 답을 제시하도록 만듬 
Automatic Prompt Engineering 사람이 아닌 모델이 스스로 프롬프트를 만들고 이를 활용해 답을 제시하는 방식, 프롬프트 내부에 <INSERT>라는 빈 칸을 만들고 answer를 함께 입력하여 모델이 <INSERT> 부분을 추론함으로써 프롬프트를 생성하도록 만듬 
ReAct Prompting '생각-행동-관찰' 과정을 번갈아 수행하는 방식으로 답을 제시하도록 유도하는 방식, '생각-행동-관찰' 과정을 반복하며 주어진 질문에 대한 답을 찾아가는 문제 해결 과정을 예제로 제시하는 Few-Shot Prompting (CoT와 유사하나 생각-행동-관찰 이라는 일련의 형식화된 과정을 사용한다는 차이점)
Active-Prompt 여러 개의 질의 예시를 만들어 모델이 답변하게 한 후 모델의 답변에 대한 모호성(Uncertainty)를 평가
→ 모델이 답하기 어려운 것으로 보이는 질문들만 골라 사람이 직접 답변을 라벨링한 후 Few-Shot CoT의 예제로 사용하여 다시 답변하게 만드는 방식
답변의 모호성은 모델에게 동일한 질문을 여러 번 제시한 후 disagreement를 계산하여 사용함, 더 효율적으로 질의-답변 예제를 만들 수 있음 

 

※ 그외 : Tree of Thought (ToT), Meta-Reasoning over Mulpitle Chains, Synthetic Prompting, MRKL, Self Refine 등 

 

 

- few-shot CoT와 zero-shot CoT 프롬프트 차이 

출처 : https://www.researchgate.net/figure/Few-shot-left-and-zero-shot-right-CoT-Both-prompts-the-LLM-to-output-intermediate_fig3_370981716

 

 

- 일반적인 CoT와 Self Consistency 비교 : 서로 다른 추론 과정을 사용하는 CoT의 다수결로 출력 결정 

출처 : https://velog.io/@xuio/SELF-CONSISTENCY-IMPROVES-CHAIN-OF-THOUGHT-REASONING-IN-LANGUAGE-MODELS

 

 

- Genereated Knowledge Prompting 매커니즘 : 모델이 knowledge를 생성하는 과정 진행 

출처 : https://www.promptingguide.ai/kr/techniques/knowledge

 

 

- Automatic Prompt Engineering 매커니즘 : 모델이 스스로 프롬프트를 생성 

출처 : https://www.promptingguide.ai/kr/techniques/ape

 

 

- Active-Prompt 매커니즘 : uncertainty estimation 과정 진행 

출처 : https://www.promptingguide.ai/kr/techniques/activeprompt

 

 

 

 

3) 프롬프트 작성 시 유의사항 

① 모델이 수행해야할 task가 무엇인지 명확하고 구체적으로 지시
- 모델이 어떤 task를 해야하는지 명시적으로 드러내기
- 모델이 따라야 할 출력 방식에 대해서도 구체적으로 지시 

② 질문과 관련된 정보와 맥락이 정확하고 상세하게 제시 
- 프롬프트가 구체적일수록 더 좋은 결과 
- 프롬프트의 길이가 제한적이기 때문에 답변과 관련성이 높은 핵심 정보를 잘 전달하는 것이 중요 

③ LLM에게 답변자로써 페르소나를 지정
- LLM이 가지는 역할 혹은 LLM이 답변해야할 대상에 대해 페르소나를 지정 

 

 

 

 

 

 

2. 프롬프트 엔지니어링 예시 

참고 자료 : https://www.promptingguide.ai/kr/introduction/examples

 

  • Text Summarization 

 

  • Information Extraction 

 

  • Question Answering

 

  • Text Classification

 

  • Reasoning

 

  • Conversation

 

  • Code Generation

 

 

 

 

 

 

 

 

 

Reference

https://www.promptingguide.ai/kr
https://tech.kakaoenterprise.com/188
https://rgbitcode.com/blog/senspond/11
https://velog.io/@boyunj0226/GPT%ED%95%9C%ED%85%8C-%EC%9E%98-%EB%AC%BC%EC%96%B4%EB%B3%B4%EB%8A%94-%EB%B2%95-3-%EB%B0%9C%EC%A0%84%EB%90%9C-Prompt-Engineering-%EB%B0%A9%EB%B2%95#active-prompt
https://rimiyeyo.tistory.com/entry/%EB%8B%A4%EC%96%91%ED%95%9C-%ED%94%84%EB%A1%AC%ED%94%84%ED%8A%B8-%EC%97%94%EC%A7%80%EB%8B%88%EC%96%B4%EB%A7%81Prompt-Engineering%EC%97%90-%EB%8C%80%ED%95%B4-%EC%82%B4%ED%8E%B4%EB%B3%B4%EC%9E%901-Zero-shot-One-shot-Few-shot-CoT#LLM%20Prompt%20Engineering-1
https://medium.com/@minji.sql/prompt-%ED%99%9C%EC%9A%A9%ED%8E%B8-%ED%94%84%EB%A1%AC%ED%94%84%ED%8A%B8-%EC%97%94%EC%A7%80%EB%8B%88%EC%96%B4%EB%A7%81-%EC%9E%91%EC%84%B1%EA%B0%80%EC%9D%B4%EB%93%9C-%ED%8C%81%EA%B3%BC-%EC%A3%BC%EC%9D%98%EC%82%AC%ED%95%AD-%EC%98%88%EC%8B%9C-0357f81bc969