가이드2026년 3월 28일
프롬프트 엔지니어링 완전 가이드: 2025년 최신 기법
## 프롬프트 엔지니어링이란?
LLM에게 원하는 출력을 얻도록 입력을 설계하는 기술입니다. 같은 질문도 어떻게 표현하느냐에 따라 답변 품질이 10배 이상 차이납니다.
---
## 핵심 기법 1: Zero-Shot vs Few-Shot
**Zero-Shot:** 예시 없이 지시만
```
감정 분석해줘: "이 제품 정말 별로였어요"
```
**Few-Shot:** 예시 제공
```
감정을 POSITIVE/NEGATIVE/NEUTRAL로 분류해줘.
예시:
"정말 훌륭한 서비스" → POSITIVE
"그냥 보통" → NEUTRAL
"완전 실망" → NEGATIVE
분류할 텍스트: "이 제품 정말 별로였어요"
```
Few-Shot이 Zero-Shot보다 평균 15-25% 정확도 높음.
---
## 핵심 기법 2: Chain-of-Thought (CoT)
단계적 사고를 유도합니다:
```
문제: A 공장이 하루 100개, B 공장이 하루 80개를 만든다.
두 공장을 합쳐 540개를 만들려면 며칠이 필요한가?
단계별로 생각해봐:
1. 두 공장의 하루 총 생산량은?
2. 540개를 만들려면 며칠인가?
```
**Self-Consistency:** CoT를 여러 번 실행해 다수결
```python
from anthropic import Anthropic
client = Anthropic()
answers = []
for _ in range(5):
response = client.messages.create(
model="claude-sonnet-4-6-20251001",
max_tokens=500,
messages=[{
"role": "user",
"content": f"단계별로 생각해서 답하세요: {question}"
}]
)
answers.append(extract_final_answer(response.content[0].text))
# 가장 많이 나온 답 선택
from collections import Counter
final = Counter(answers).most_common(1)[0][0]
```
---
## 핵심 기법 3: Role Prompting
```
당신은 10년 경력의 시니어 백엔드 엔지니어입니다.
PostgreSQL 성능 최적화를 전문으로 하며,
항상 실행 계획(EXPLAIN ANALYZE) 기반으로 조언합니다.
다음 쿼리의 성능을 분석해주세요:
SELECT * FROM orders WHERE created_at > '2024-01-01';
```
**페르소나 프레임워크:**
- 전문성 수준 명시 (10년 경력, PhD 수준)
- 스타일 정의 (간결함, 수식 사용, 초보자 친화적)
- 제약 조건 부여 (500자 이내, 코드 포함)
---
## 핵심 기법 4: 출력 형식 제어
**JSON 출력 강제:**
```python
import json
from anthropic import Anthropic
client = Anthropic()
response = client.messages.create(
model="claude-sonnet-4-6-20251001",
max_tokens=1000,
messages=[{
"role": "user",
"content": '''다음 제품 리뷰를 분석해서 반드시 JSON으로만 응답해주세요:
리뷰: "배터리 수명이 짧고 화면이 작지만 카메라는 훌륭해요"
응답 형식:
{
"sentiment": "POSITIVE|NEGATIVE|MIXED",
"pros": ["장점1", "장점2"],
"cons": ["단점1", "단점2"],
"score": 0-10
}'''
}]
)
result = json.loads(response.content[0].text)
```
**Claude의 tool_use가 더 안정적:**
```python
response = client.messages.create(
model="claude-sonnet-4-6-20251001",
max_tokens=1000,
tools=[{
"name": "analyze_review",
"description": "리뷰 감정 분석",
"input_schema": {
"type": "object",
"properties": {
"sentiment": {"type": "string", "enum": ["POSITIVE", "NEGATIVE", "MIXED"]},
"pros": {"type": "array", "items": {"type": "string"}},
"cons": {"type": "array", "items": {"type": "string"}},
"score": {"type": "number", "minimum": 0, "maximum": 10}
},
"required": ["sentiment", "pros", "cons", "score"]
}
}],
tool_choice={"type": "tool", "name": "analyze_review"},
messages=[{"role": "user", "content": "배터리 수명이 짧고 화면이 작지만 카메라는 훌륭해요"}]
)
```
---
## 프롬프트 패턴 카탈로그
```mermaid
mindmap
root((프롬프트 패턴))
분석
SWOT 분석
근본 원인 분석
비교 분석
생성
템플릿 채우기
변형 생성
역할극
검증
악마의 변호인
체크리스트 검토
반론 생성
요약
핵심 3가지
TL;DR
계층적 요약
```
---
## 업무별 프롬프트 템플릿
**코드 리뷰:**
```
다음 코드를 시니어 엔지니어 관점에서 리뷰해줘.
중점 사항: 보안, 성능, 가독성, 테스트 가능성
각 이슈는 [심각도: HIGH/MED/LOW] 형식으로 표시해줘.
(여기에 리뷰할 코드 붙여넣기)
```
**회의록 요약:**
```
다음 회의록을 요약해줘.
출력 형식:
- 결정 사항 (bullet)
- 액션 아이템 (담당자, 기한)
- 다음 회의 안건
회의록:
{회의록}
```
**이메일 작성:**
```
다음 상황에 맞는 비즈니스 이메일을 작성해줘.
- 수신: {수신자 직함/관계}
- 목적: {핵심 목적}
- 톤: 공손하지만 단호함
- 길이: 3-4단락
배경: {상황 설명}
```
---
## 프롬프트 최적화 팁
1. **구체적 수치** 사용: "짧게" → "50자 이내로"
2. **네거티브 지시** 추가: "중복 없이", "전문용어 사용 금지"
3. **예시 우선**: 설명보다 예시가 더 효과적
4. **단계 분리**: 한 프롬프트에 여러 작업보다 단계적으로
5. **System/User 분리**: 페르소나는 system, 작업은 user에
프롬프트 품질 평가는 LangSmith나 PromptFlow로 A/B 테스트하는 것을 권장합니다.