목차
1. 서론
프롬프트 엔지니어링은 대규모 언어 모델(LLM)을 효과적으로 활용하기 위한 핵심 기술입니다. LLM은 입력된 텍스트를 기반으로 예측을 수행하며, 프롬프트의 설계에 따라 출력의 품질이 크게 달라질 수 있습니다. 이 글에서는 프롬프트 엔지니어링의 주요 기법과 모범 사례를 소개합니다.
이 글은 Kaggle의 Whitepaper: Prompt Engineering을 기반으로, GitHub Copilot을 활용하여 작성되었습니다.
2. 주요 프롬프트 엔지니어링 기법
2.1 제로샷 및 퓨샷 프롬프트
제로샷 프롬프트는 예제 없이 작업을 설명하는 가장 간단한 형태의 프롬프트입니다. 예를 들어, 영화 리뷰를 긍정적, 중립적, 부정적으로 분류하는 작업을 수행할 때 다음과 같은 프롬프트를 사용할 수 있습니다.
프롬프트: 영화 리뷰를 긍정적, 중립적, 부정적으로 분류하세요.
리뷰: "이 영화는 정말 감동적이었어요."
출력: 긍정적
퓨샷 프롬프트는 모델에 여러 예제를 제공하여 작업의 패턴을 학습하도록 돕습니다. 예를 들어, 피자 주문을 JSON 형식으로 변환하는 작업에서는 다음과 같은 예제를 포함할 수 있습니다.
프롬프트: 고객의 피자 주문을 JSON으로 변환하세요.
예제:
"작은 피자에 치즈와 토마토 소스를 추가해주세요."
JSON:
{
"size": "small",
"ingredients": ["cheese", "tomato sauce"]
}
퓨샷 프롬프트는 복잡한 작업에서 특히 유용하며, 모델이 패턴을 더 잘 이해하도록 돕습니다.
2.2 사고의 연쇄 (CoT)
사고의 연쇄(CoT)는 복잡한 문제를 해결하기 위해 중간 추론 단계를 명시적으로 생성하도록 모델을 유도하는 기법입니다. 예를 들어, 다음과 같은 수학 문제를 해결할 때 CoT를 활용할 수 있습니다.
프롬프트: 내가 3살 때, 내 파트너는 내 나이의 3배였습니다. 지금 나는 20살입니다. 내 파트너는 몇 살입니까? 단계별로 생각해 봅시다.
출력:
1. 내가 3살일 때, 내 파트너는 3 * 3 = 9살이었습니다.
2. 지금 나는 20살이므로, 내 나이는 17년 증가했습니다.
3. 따라서 내 파트너의 나이도 17년 증가하여 9 + 17 = 26살입니다.
CoT는 모델이 복잡한 문제를 더 정확하게 해결할 수 있도록 돕습니다.
2.3 자기 일관성
자기 일관성은 동일한 프롬프트를 여러 번 실행하여 다양한 추론 경로를 생성하고, 가장 일관된 답변을 선택하는 기법입니다. 예를 들어, 이메일 분류 작업에서 다음과 같은 접근을 사용할 수 있습니다.
프롬프트: 아래 이메일을 중요 또는 중요하지 않음으로 분류하세요.
이메일: "이 웹사이트에 버그가 있습니다. 수정하지 않아도 괜찮습니다."
출력 1: 중요하지 않음
출력 2: 중요
출력 3: 중요하지 않음
최종 출력: 중요하지 않음 (다수결)
이 기법은 모델의 응답 신뢰성을 높이는 데 유용합니다.
2.4 역할 및 컨텍스트 프롬프트
역할 프롬프트는 모델에 특정 역할을 부여하여 응답의 스타일과 톤을 조정합니다. 예를 들어, 여행 가이드 역할을 부여하면 다음과 같은 응답을 얻을 수 있습니다.
프롬프트: 여행 가이드 역할을 해 주세요. 뉴욕에서 3살 아이와 함께 방문할 만한 장소를 추천해 주세요.
출력:
1. 센트럴 파크: 아이들이 뛰어놀 수 있는 넓은 공간과 놀이터가 있습니다.
2. 아메리칸 자연사 박물관: 아이들이 즐길 수 있는 공룡 전시가 있습니다.
3. 타임스퀘어: 화려한 조명과 분위기를 즐길 수 있습니다.
컨텍스트 프롬프트는 작업에 대한 추가 정보를 제공하여 모델이 더 정확한 출력을 생성하도록 돕습니다.
3. 모범 사례
프롬프트 엔지니어링에서 다음과 같은 모범 사례를 따르는 것이 중요합니다.
- 명확하고 간결한 프롬프트 작성: 복잡한 언어를 피하고, 원하는 작업을 명확히 설명하세요.
- 예제 제공: 퓨샷 프롬프트를 사용하여 모델이 작업의 패턴을 학습하도록 돕습니다.
- 출력 형식 명시: JSON, XML 등 구조화된 형식을 요청하여 출력의 일관성을 높이세요.
- 온도 및 샘플링 설정 조정: 창의성이 필요한 작업에서는 높은 온도를, 정확성이 중요한 작업에서는 낮은 온도를 설정하세요.
4. 결론
프롬프트 엔지니어링은 LLM의 성능을 극대화하는 데 필수적인 기술입니다. 제로샷, 퓨샷, 사고의 연쇄(CoT), 자기 일관성, 역할 및 컨텍스트 프롬프트와 같은 기법을 활용하면 더 나은 결과를 얻을 수 있습니다. 또한, 명확한 프롬프트 작성과 모범 사례를 따르면 모델의 응답 품질을 더욱 향상시킬 수 있습니다.
이 글은 Kaggle의 Whitepaper: Prompt Engineering을 기반으로, GitHub Copilot을 활용하여 작성되었습니다.