[인공지능기술] [프롬프트 엔지니어링] 프롬프트 엔지니어링의 개념, 기법, 예시
[인공지능기술] [프롬프트 엔지니어링] 프롬프트 엔지니어링의 개념, 기법, 예시
프로젝트 과정에서 활용할 수 있는 프롬프트 엔지니어링에 대하여 개념과 다양한 구현 기법, 작성 예시에 대해 공부해본다.
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
[출처] https://working-helen.tistory.com/105
![]()