프롬프트 엔지니어링 잘하는 법
1. 프롬프트 엔지니어링이란?
- 언어 모델이 "사고"하게 만드는 기법.
- 인간의 사고 과정을 닮은 프롬프트 설계로 언어 모델의 성능을 향상.
- 모델이 정답을 유도하는 문장을 학습하고, 이를 통해 보다 정확한 결과를 도출하도록 유도.
2. 언어 모델의 사고 방식
빠른 사고 (Fast Thinking)
- 직관적, 즉각적, 자동적인 사고.
- 언어 모델이 잘하는 부분.
느린 사고 (Slow Thinking)
- 이성적, 논리적, 의식적인 사고.
- 느린 사고를 유도하는 프롬프트 설계로 언어 모델의 약점 보완 가능.
3. 프롬프트 설계 기법
(1) 체인오브띵킹 (Chain of Thought, COT)
- 문제 풀이 과정에서 중간 추론 단계를 거치도록 유도.
예시
"3명의 학생이 각각 4개의 사과를 가지고 있습니다. 총 사과의 개수는 얼마입니까? 풀이 과정을 단계별로 설명하세요."
효과
(2) 제로샷 체인오브띵킹 (Zero-Shot COT)
- "Let's think step by step"와 같은 트리거 문장을 사용해 단계적 사고를 유도.
예시
"Who is the president of the United States? Let's think step by step."
장점
- 별도의 학습 데이터 없이 프롬프트만으로도 성능 향상.
- 비용 절감과 간단한 설계 가능.
(3) 대조적 사고 (Contrastive Thinking)
- 올바른 예시와 잘못된 예시를 대조적으로 제시하여 모델 학습 유도.
예시
"올바른 답변: 파리는 프랑스의 수도입니다.
잘못된 답변: 파리는 스페인의 수도입니다.
질문에 대한 정확한 답변을 작성하세요."
효과
- 할루시네이션(허위 정보 생성) 감소.
- 사용자가 원하는 답변과 원치 않는 답변을 구분하도록 훈련.
(4) 유추 기반 프롬프트 (Analogy-Based Prompting)
- 유사한 문제를 제시해 풀이를 유도.
- 인간이 과거 경험을 바탕으로 문제를 해결하는 방식에서 착안.
예시
"2+2는 4입니다. 비슷한 방식으로, 3+3은 무엇입니까?"
효과
(5) 스텝백 프롬프트 (Step-Back Prompting)
- 문제를 상위 개념으로 추상화한 후 다시 구체화하는 방식.
예시
"사람들이 주로 사용하는 이동 수단을 생각해 봅시다.
그런 다음, 도시에서 가장 흔히 쓰이는 대중교통 수단은 무엇인가요?"
효과
- "숲을 보고 나무를 본다"는 방식으로 문제 해결.
(6) 인지적 부담 감소 (Cognitive Load Reduction)
- 모델이 많은 정보를 처리할 때, 핵심 포인트를 요약하도록 유도.
예시
"다음 텍스트를 읽고 핵심 요약을 작성하세요:
[텍스트 내용]"
효과
결론
프롬프트 엔지니어링은 단순히 모델에게 명령을 내리는 것을 넘어, 인간 사고 과정을 반영한 최적화 기법으로 진화하고 있습니다. 이를 통해 언어 모델의 한계를 보완하고, 효율성을 극대화하며, 다양한 도메인에 적용할 수 있는 가능성을 열어줍니다.