working_helen
[프롬프트 엔지니어링] 프롬프트 엔지니어링의 개념, 기법, 예시 본문
프로젝트 과정에서 활용할 수 있는 프롬프트 엔지니어링에 대하여 개념과 다양한 구현 기법, 작성 예시에 대해 공부해본다.
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 프롬프트 차이
- 일반적인 CoT와 Self Consistency 비교 : 서로 다른 추론 과정을 사용하는 CoT의 다수결로 출력 결정
- Genereated Knowledge Prompting 매커니즘 : 모델이 knowledge를 생성하는 과정 진행
- Automatic Prompt Engineering 매커니즘 : 모델이 스스로 프롬프트를 생성
- Active-Prompt 매커니즘 : uncertainty estimation 과정 진행
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
'deep daiv. > NLP project' 카테고리의 다른 글
[리뷰 감정분석] KOTE 논문 리뷰 / KOTE fine-tuning 모델을 활용한 감정분석 (2) | 2024.09.12 |
---|---|
[리뷰 감정분석] ELECTRA / Korean Pre-trained Language Models (6) | 2024.09.08 |
[데이터 전처리] 마켓컬리 리뷰 데이터 전처리 / kiwipiepy 형태소 분석기 (2) | 2024.09.05 |
[프롬프트 엔지니어링] 프롬프트 엔지니어링 연습 with ChatGPT Prompt Engineering for Developers (2) | 2024.09.01 |
[데이터 수집] 마켓컬리 리뷰 데이터 크롤링 (1) | 2024.08.29 |