프롬프트 엔지니어링 • 챕터 1 / 6
프롬프트 엔지니어링(Prompt Engineering) 은 언어 모델에서 원하는 결과를 얻기 위한 프롬프트 작성 기술입니다.
| 관점 | 설명 |
|---|---|
| 기본 정의 | 원하는 결과를 얻기 위한 프롬프트 작성 기술 |
| 기술적 정의 | 높은 확률의 다음 토큰을 출력하는 LLM의 Context 생성 기술 |
| 실용적 정의 | LLM의 작동 원리를 고려하여 좋은 프롬프트의 특징을 활용하는 기술 |
2023년 (ChatGPT 초창기):
2024년:
2025년 (현재):
프롬프트의 품질
프롬프트의 품질 = LLM의 메타 프롬프팅 + 엔지니어의 경험과 노하우
Context Engineering 은 프롬프트 엔지니어링의 확장 개념으로, 출력 구조화, 검색결과 연계(RAG), 메모리 활용 등 맥락 설계 를 포함합니다.
| 구성 요소 | 설명 |
|---|---|
| Instructions/System Prompt | LLM에 지시사항, 정보 제공 |
| Long-Term Memory | 장기적 정보 저장 |
| State/History (Short-Term Memory) | 대화 이력 관리 |
| Retrieved Information (RAG) | 검색된 외부 정보 |
| Available Tools | 사용 가능한 도구/함수 |
| User Prompt | 사용자의 직접 입력 |
| Structured Output | 구조화된 응답 형식 |
효과적인 Prompt를 위한 4가지 핵심 요소:
| 요소 | 설명 | 예시 |
|---|---|---|
| Persona | 구체적인 역할 설정 | "너는 베테랑 마케터이다" |
| Task | 명확한 작업내용 제시 | "이 문서를 요약해줘" |
| Context | 관련된 참고정보 포함 | 배경 정보, 제약 조건 |
| Format | 원하는 출력 형식 명시 | "표로 그려줘", "JSON으로 출력" |
| 프레임워크 | 구성 요소 |
|---|---|
| RACE | Role, Action, Context, Execute |
| TRACE | Task, Requirements, Audience, Context, Evaluation |
| ROSES | Role, Objective, Style, Example, Scenario |
| APE | Action, Purpose, Expectation |
역할 부여 프롬프팅 은 LLM에게 특정 역할을 부여하여 추론 성능을 향상시키는 기법입니다.
다양한 카테고리의 Task 실험 결과:
| Method | MultiArith | GSM8K | AddSub | AQUA |
|---|---|---|---|---|
| Few-Shot-CoT | 97.7 | 76.9 | 93.9 | 59.4 |
| Zero-Shot-CoT | 95 | 79.6 | 86.6 | 53.9 |
| Role-Play Prompting | 97 | 78.2 | 91.1 | 63.8 |
Persona 연구 결과
최신 모델은 페르소나 없이도 지식 베이스를 잘 이끌어 냅니다. 하지만 답변의 형식 차원에서 여전히 유효합니다.
#, ---, [], <> 등을 이용하여 각 요소를 명확하게 분리/명시합니다.
고객의 VOC가 주어집니다.
고객 서비스, 제품 개발, 운영 지원팀 중 어떤 팀의 역할에 부합하는지 확인합니다.
---
# Steps
1. VOC를 분석합니다.
2. VOC 내용이 어떤 팀의 역할에 부합하는지 확인합니다.
3. 적합한 팀을 출력합니다.
---
# Output Format
- 단답형: '[고객 서비스/제품 개발/운영 지원팀]'다음의 [Context]를 참고해 [Question]에 답하세요.
[Context]의 정보만으로 답변할 수 없는 경우, '답변할 수 없습니다'를 출력하세요.
---
[Context]:
{context}
---
[Question]:
{question}복잡한 작업을 나눠서 처리 하는 기법입니다. LLM은 이전 맥락을 기억하므로, 질문을 쪼개서 단계별로 처리합니다.
| 장점 | 설명 |
|---|---|
| Context 단축 | 불필요한 정보 제거로 길이 단축 |
| 효율성 향상 | 각 단계에 집중된 처리 |
| 토큰 절감 | 전체 토큰 소모량 감소 |
[사용자 프롬프트 1]
다음 프롬프트에 회사의 주요 이슈를 전달하겠습니다.
각 주제에 대해 질문과 답변을 작성해 주세요.
준비됐으면 "예"라고 대답하세요.
[LLM 응답]
"예. 회사의 주요 이슈를 전달하면,
각 주제별로 Q&A 형식으로 작성해 드리겠습니다."
[사용자 프롬프트 2]
(연말 투자자 리포트 관련 자세한 내용 첨부)프롬프트 내에 참고할 답변 예시(Shot)를 포함 하는 기법입니다.
호랑이: Tiger
사자: Lion
쌍둥이: Twin
독수리: ?입력값에 대한 LLM의 판단 과정 필요 없이, 별도 설명 없이 예시만으로 따라하기 가능합니다.
Few-Shot의 편향
입력된 예시에 묶인 결과로 편향이 생길 수 있습니다. 예시의 길이, 톤, 어휘, 주제 등 특정 방향에 과도하게 영향을 받을 수 있습니다.
| 템플릿 | 용도 |
|---|---|
| PromptTemplate | Human Message 저장 |
| ChatPromptTemplate | System, Human, AI의 Context 저장 |
| FewShotPromptTemplate | 예시 데이터가 포함된 Few Shot Prompt 저장 |
| 변화 | 설명 |
|---|---|
| 모델의 발전 | 단순한 프롬프트도 좋은 성능 발휘 |
| 역량으로 변화 | 특정 직군보다는 모든 구성원의 역량 |
| Context Engineering | 프롬프트 엔지니어링의 확장 |